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