用变量设置小叶圆LatLng

时间:2019-05-14 13:25:41

标签: javascript jquery leaflet leaflet.draw

我在使用变量为 <script> $(document).ready(function () { $('#btnGetData').click(function () { var requestUrl = '@Url.Action("GetSomeData", "Home")'; $.get(requestUrl) .done(function (responsedata) { console.log("success"); $("#partialViewContent").html(responsedata); $('#myModal').modal('show') }) .fail(function () { alert("error"); }) .always(function () { console.log("finished"); }); }) }); </script> 的Leaflet地图上创建新圆时遇到麻烦。

我有一个包含半径输入的表格,以及一个包含一些位置的选择框,其选项如下所示:

latlng

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

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

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

但是,我得到

  

未捕获的TypeError:无法读取null的属性“ lng”

2 个答案:

答案 0 :(得分:1)

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);

答案 1 :(得分:0)

在您的代码中,变量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

中的更多信息