編輯 - 我已經解決了這個問題,通過使用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這個問題已經被標記爲顯示的鏈接的副本,雖然我不確定如何提供的答案可以在我自己的使用。有人可以幫我解決這個問題嗎?
可能的複製(HTTPS [異步過程for循環一個JavaScript裏面]://計算器。//問題/ 11488014 /異步進程內部的一個JavaScript的for循環) – Hodrobond
@Hodrobond感謝您的鏈接,但我真的不確定如何實現,在我的代碼的情況下?你能幫我解決這個問題嗎? – Osman
[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