0

編輯 - 我已經解決了這個問題,通過使用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()部分,它工作正常和迭代01,和2

我真的很感謝任何幫助。

總體

  • 檢索基於for循環的當前i

  • 顯示在bindTooltip()部分檢索到的地址將被作爲工具提示顯示值從陣列的地址在地圖內。

編輯

Asynchronous Process inside a javascript for loop這個問題已經被標記爲顯示的鏈接的副本,雖然我不確定如何提供的答案可以在我自己的使用。有人可以幫我解決這個問題嗎?

+0

可能的複製(HTTPS [異步過程for循環一個JavaScript裏面]://計算器。//問題/ 11488014 /異步進程內部的一個JavaScript的for循環) – Hodrobond

+0

@Hodrobond感謝您的鏈接,但我真的不確定如何實現,在我的代碼的情況下?你能幫我解決這個問題嗎? – Osman

+0

[IIFE](https://developer.mozilla.org/en-US/docs/Glossary/IIFE)可能是最容易實現的,具體取決於場景。 [這裏](https://jsfiddle.net/L7ce4xyL/)就是一個簡單的例子。基本上創建一個[匿名函數](http://helephant.com/2008/08/23/javascript-anonymous-functions/)並傳入'i'。 – Hodrobond

回答

0

我只是意識到我可以使用forEach而不必使用for循環中,由於數據被從陣列拉出的