【问题标题】:Google Maps Geocode Not Working in For Loop谷歌地图地理编码在 For 循环中不起作用
【发布时间】:2017-11-01 19:54:58
【问题描述】:

编辑 - 我已通过使用 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 这个问题已被标记为显示的链接的副本,但我不确定提供的答案如何用于我自己的。有人可以帮我解决这个问题吗?

【问题讨论】:

  • @Hodrobond 感谢您的链接,虽然我真的不确定如何在我的代码中实现它?你能帮我解决这个问题吗?
  • IIFEs 可能是最容易实现的,具体取决于场景。 Here 是一个简单的例子。基本上创建一个anonymous function 并传入i
  • 尝试类似for (var i = 0; i &lt; markers.length; i++) { (function(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); })(i) }); }的方法
  • @Hodrobond 非常感谢代码!出于某种原因,这次没有显示这些值。我尝试将markers[i] 更改为普通字符串以对其进行测试,并且标记甚至没有放在地图上

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


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 2012-01-17
    • 1970-01-01
    • 1970-01-01
    • 2019-06-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多