javascript - 使用变量设置传单圆 LatLng

标签 javascript jquery leaflet leaflet.draw

我在使用 latlng 变量在 Leaflet map 上创建新圆时遇到问题。

我有一个包含和输入半径的表单和一个包含几个位置的选择框,选项如下所示:

<option value="52.10953576, -0.498735399999987">Place Name</option>

单击保存按钮时,将运行以下代码:

$('#drawcircle').click(function() {
  var radius = document.getElementById("circleRadius").value;
  var e = document.getElementById("locationcoord");
  var latlng = e.options[e.selectedIndex].value;
  var radiusinmeters = cr * 1609.344;
  var circle = L.circle([latlng], radiusnmeters).addTo(map);
  drawnItems.addLayer(circle);
});

我已经使用 console.log 进行了一些调试,可以看到 latlng 变量确实包含来自选择框的正确信息。

但是,我明白了

Uncaught TypeError: Cannot read property 'lng' of null

最佳答案

您从 var latlng = e.options[e.selectedIndex].value; 获得的值是一个字符串,而不是一对坐标。

Split这个字符串获取数组中的坐标,将值转换为数字,并将其提供给 L.circle。例如,

var radiusinmeters = cr * 1609.344;
var latlng_string = e.options[e.selectedIndex].value;
var latlng_array = latlng_string
                      .split(/,\s*/) // split the value
                      .map(function(v) { return +v; }); // cast to numbers

var circle = L.circle(latlng_array, radiusnmeters).addTo(map);

关于javascript - 使用变量设置传单圆 LatLng,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56131605/

相关文章:

javascript - Mapbox 侧面板和多边形交互

javascript - 结合Google Maps Geocoder和Leaflet map 接收错误: Invalid LatLng object

javascript - CoffeeScript - 将参数传递给 super 构造函数时出现问题

javascript - ( Angular 6)子函数是否应该返回它正在操作的对象?

jquery - jQuery 添加的 div 上的 Google map addDomListener 只能看到循环的最后一次迭代

jquery - 在 IE8 WinXP 中关闭 fancybox 2 iframe 后页面丢失 google web 字体和其他 css

javascript - 使用 mongodb 聚合框架计算频率

javascript - 如何在jade中访问js数组的数据

javascript - 创建 jquery 插件的正确方法

javascript - 如何使用meteor-leaflet来整合leaflet和meteor?