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

标签 javascript leaflet

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

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

但是如果我想使用circleMarker 的半径选项添加大小值怎么办?我尝试这样做,但它说该值未定义。

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;
    circleSize = queryAddr[i]["size"]; 
    L.circleMarker([y_coor, x_coor], {radius: circleSize}).addTo(map);
  });
}

最佳答案

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

circleSize = queryAddr[i]["size"];

因此将其移到地理编码器调用之外并使用 map 迭代地址项

像这样:

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

关于javascript - 如何向 Leaflet 地理编码查询添加外部值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45921087/

相关文章:

javascript - 在 JavaScript 中强制刷新 DOM

Javascript 在单元格仅包含 0 后停止执行;

javascript - 多次掷骰子,多种结果

typescript - 如何定义自定义传单控件的类型

javascript - 当我的标记加载到传单 map 中时,如何添加加载图标/加载器?

javascript - 如何防止 React-Leaflet Map 子节点上的事件冒泡

openstreetmap - 如何使用传单 Api 获取点击位置的纬度、经度

JavaScript 字符串替换 - 如何在替换字符串中使用匹配的变量?

JavaScript 无法将 json 元素识别为数字

python - 如何按位置实时将推文绘制到 map 上,例如传单