编辑 - 我已使用forEach
而不是for循环修复此问题,因为项目是从数组中提取的
我正在使用此代码检索要与leaflet.js一起使用的给定地址的纬度和经度。
markers = [
{
"name": "Tom David",
"address": "Karachi, Pakistan",
"url": "https://en.wikipedia.org/wiki/Anguilla"
},
{
"name": "Bob Thomas",
"address": "London, Canada",
"url": "https://en.wikipedia.org/wiki/Japan"
},
{
"name": "Bob Mike",
"address": "Paris, FR",
"url": "https://en.wikipedia.org/wiki/Japan"
}
];
for ( var i=0; i < markers.length; i++ ) {
geocoder = new google.maps.Geocoder();
geocoder.geocode({'address': markers[i].address}, function(results, status) {
L.marker([results[0].geometry.location.lat(), results[0].geometry.location.lng()]).bindTooltip(markers[i].address).addTo(map);
});
}
问题在于bindToolTip(markers[i].address)
,因为它似乎“破坏”了代码,但是当使用字符串名称(如"Hello"
)时,它的工作正常。
这是由于循环在new google.maps.geocoder()
部分之后未按预期工作。我尝试在所述代码下方使用alert(i)
,并且由于某种原因,它只是将数字12
重复三次。
当它放在geocoder()
部分上方时,它可以正常工作并迭代0
,1
和2
。
我真的很感激任何帮助。
总体
根据for循环中的当前i
值从数组中检索地址
显示在bindTooltip()
部分中检索到的地址,以便在地图中显示为工具提示值。
修改
Asynchronous Process inside a javascript for loop此问题已被标记为所显示链接的副本,但我不确定所提供的答案如何在我自己中使用。有人可以帮我解决这个问题吗?
答案 0 :(得分:0)
我刚刚意识到我可以使用forEach
而不必使用for循环,因为数据是从数组中提取的