Google地图地理编码不适用于For循环

时间:2017-05-31 20:51:30

标签: javascript google-maps google-maps-api-3 google-maps-markers geocoding

编辑 - 我已使用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()部分上方时,它可以正常工作并迭代012

我真的很感激任何帮助。

总体

  • 根据for循环中的当前i值从数组中检索地址

  • 显示在bindTooltip()部分中检索到的地址,以便在地图中显示为工具提示值。

修改

Asynchronous Process inside a javascript for loop此问题已被标记为所显示链接的副本,但我不确定所提供的答案如何在我自己中使用。有人可以帮我解决这个问题吗?

1 个答案:

答案 0 :(得分:0)

我刚刚意识到我可以使用forEach而不必使用for循环,因为数据是从数组中提取的