1
此代码地址解析从JavaScript对象数据,并将其工作正常:如何将外部值添加到Leaflet地理编码查询?
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);
});
}
当我这样做时,160返回两次,所以2个圈最终变成相同的大小。似乎只是获得最后的价值。 – nvixto
对,这是在循环结束后会完成的异步调用。我重写了一个适当的地图处理,而不是FOR循环,这更适合这种类型的动作 –
这完美的作品! – nvixto