如何向Leaflet地理编码查询添加外部值?

时间:2017-08-28 14:12:35

标签: javascript leaflet

此代码对来自javascript对象的数据进行地理编码,并且工作正常:

null

但是如果我想使用circleMarker的radius选项添加大小值呢?我尝试过这样做,但它说价值未定义。

var queryAddr = [{"location":"London, UK", "size":10},{"location":"Chelmsford, UK","size":160}];

geocoder = new L.Control.Geocoder.Nominatim();
for (i = 0; i < queryAddr.length; i++) {
  var yourQuery = queryAddr[i]["location"];   
  geocoder.geocode(yourQuery, function(results) {    
    x_coor = results[0].center.lng;
    y_coor = results[0].center.lat;
    L.circleMarker([y_coor, x_coor]).addTo(map);
  });
}

1 个答案:

答案 0 :(得分:0)

您无法从回调函数内部访问外部作用域。 所以queryAddr对于这一行是不可见的:

&#13;
&#13;
circleSize = queryAddr[i]["size"];
&#13;
&#13;
&#13;

所以将它移到地理编码器调用之外并使用map迭代地址项

像这样:

&#13;
&#13;
geocoder = new L.Control.Geocoder.Nominatim();

queryAddr.map(function(itemAddr) {
  geocoder.geocode(itemAddr["location"], function(results) {    
    x_coor = results[0].center.lng;
    y_coor = results[0].center.lat;
    L.circleMarker([y_coor, x_coor], {radius: itemAddr["size]}).addTo(map);
  });
});
&#13;
&#13;
&#13;