使用变量设置传单圆 LatLng
Set leaflet circle LatLng with variable
我在使用变量作为 latlng
的 Leaflet 地图上创建新圆时遇到问题。
我有一个包含和输入半径的表单和一个 select 框,其中包含一些位置和如下所示的选项:
<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 变量确实包含来自 select 框的正确信息。
但是,我得到
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);
在您的代码中,变量 latlng 是一个字符串,L.circle 接受一个 LatLng 对象,即以下之一:
L.latLng(<Number> latitude, <Number> longitude)
L.latLng(<Array> coords) // [Number, Number]
L.latLng(<Object> coords) // {lat: Number, lng: Number}
你的latlng变量是["52.10953576, -0.498735399999987"]
您必须解析您的字符串以获得正确的值
更多信息在 Circle Documentation
我在使用变量作为 latlng
的 Leaflet 地图上创建新圆时遇到问题。
我有一个包含和输入半径的表单和一个 select 框,其中包含一些位置和如下所示的选项:
<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 变量确实包含来自 select 框的正确信息。
但是,我得到
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);
在您的代码中,变量 latlng 是一个字符串,L.circle 接受一个 LatLng 对象,即以下之一:
L.latLng(<Number> latitude, <Number> longitude)
L.latLng(<Array> coords) // [Number, Number]
L.latLng(<Object> coords) // {lat: Number, lng: Number}
你的latlng变量是["52.10953576, -0.498735399999987"] 您必须解析您的字符串以获得正确的值
更多信息在 Circle Documentation