gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-28 04:15:18 25 4
gpt4 key购买 nike

此代码对来自 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com