2013-08-01 69 views
0

我從XML列表導入地圖數據並將其放入markerArray,然後調用createMarkers(); 標記出現在地圖上,但是總是點擊列表中的最後一個標記。谷歌地圖marker.getPosition只使用最後的合作伙伴

所有幫助表示讚賞。

function createMarkers() { 
for (i=0; i<markerArray.length; i++){ 
var marker = new google.maps.Marker({position:markerArray[i].latlng, map:map, title:markerArray[i].label, icon:images[markerArray[i].type]}); 
google.maps.event.addListener(marker, 'click', function() { 
     map.setZoom(9); 
    map.setCenter(marker.getPosition()); 
    }); 
} 
+0

只是一個隨機的想法:你可以使用map.setCenter(this.getPosition()); ? – Matthijs

回答

3

用每次循環迭代重新定義。綁定到'click'的函數應封裝在本地副本中。我不得不做一些類似的事情,並使用它:

google.maps.event.addListener(marker, 'click', 
    (function(marker_inner) { 
     return function() { 
     map.setZoom(9); 
     map.setCenter(marker_inner.getPosition()); 
     } 
    })(marker) 
); 
+0

確實有效,就像(this.getPosition)一樣。後者似乎是一個更優雅的解決方案,或者我錯過了什麼? – user2641761

+0

在上面代碼片段的代碼中,還有更多的內容......這個對於你想要做的事情已經足夠了,但我想我只是喜歡關閉; – giaour

+0

謝謝。這也適用於infoWindow數據嗎? – user2641761