此代码对来自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);
});
}
答案 0 :(得分:0)
您无法从回调函数内部访问外部作用域。 所以queryAddr对于这一行是不可见的:
circleSize = queryAddr[i]["size"];
&#13;
所以将它移到地理编码器调用之外并使用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);
});
});
&#13;