2011-03-30 63 views
0

我有一個數組中的19個郵政編碼通過GeoCode,它似乎工作正常,但只有11個顯示。我已經搜索並嘗試了一切。我剛剛開始學習JavaScript和地圖API,所以我確定我的拼寫在某些方面是錯誤的。谷歌地圖v3不顯示所有標記

var latlng = new google.maps.LatLng(55.378, -3.435); 

myOptions = { 
zoom: 5, 
center: latlng, 
mapTypeId: google.maps.MapTypeId.ROADMAP 
}; 

map = new google.maps.Map(document.getElementById("my_canvas"),myOptions); 

var geocoder = new google.maps.Geocoder(); 

var places = ["AB12 3AG","BS11 8AT","IG11 0HN","CA3 0PJ","NR19 1JG","IP11 3HZ","ML4 3LR","WF12 7TH","L33 7YE","M30 9QG","NG18 5DQ","MK12 5QL","PE6 0BN","ME10 3RL","SO40 9HN","B79 7TD","TS2 1RP","GU17 0NP","WV10 7EL"]; 

for(i = 0; i < places.length; i++){ 
var address = places[i]; 
geocoder.geocode({'address':address}, function(results){ 
    var marker = new google.maps.Marker({ 
     map: map, 
     position: results[0].geometry.location, 
     title: address 
     }); 
}); 
} 

我認爲所有的POST代碼做負載,因爲標題爲所有標記是在數組「WV10」的最後一個地址,但就像我說的,只有11人在19個地點的得到顯示。

回答

0

問題是你正在循環中創建一個函數。至少這是標籤的問題。對此的解決方案是創建一個新的範圍來調用循環內的函數:

for(i = 0; i < places.length; i++){ 
(function(place) { 
    geocoder.geocode({'address':place}, function(results){ 
     var marker = new google.maps.Marker({ 
      map: map, 
      position: results[0].geometry.location, 
      title: place 
     }); 
    }); 
    }(places[i])); 
} 

這也可以解決顯示問題,但我不知道這件事。難道有些地方會解決相同或非常接近的位置嗎?