2012-11-19 75 views
-1

我在我的地圖上顯示多個標記時出現問題。代碼首先循環訪問數組,然後在顯示標記並將infoWindow的內容設置爲返回地址之前,反轉對lat,lon值的地理編碼。Google Map上的多個標記:僅顯示最後一個標記

我的代碼如下。

for(var i=0; i < useNowArray.length; i++) { 
     // plot useNow on map 
     latlng = new google.maps.LatLng(useNowArray[i]['lat'], useNowArray[i]['lon']); 
     console.log(useNowArray[i]['lat'] + useNowArray[i]['lon']); 
     geocoder.geocode({'latLng': latlng}, function(results, status) 
     { 
      if (status == google.maps.GeocoderStatus.OK) 
      { 
       if (results[0]) 
       { 
        marker = new google.maps.Marker({ 
         position: latlng, 
         map: map, 
         icon: 'http://www.google.com/intl/en_us/mapfiles/ms/micons/blue-dot.png', 
         title: results[0].formatted_address 
        }); 
        content = results[0].formatted_address; 
        console.log(content); 

        google.maps.event.addListener(marker, 'click', (function(marker, i) { 
         return function() { 
          infowindow.setContent(content); 
          infowindow.open(map, this); 
         } 
        })(marker, i)); 
       } 
      } else { 
       alert("Geocoder failed due to: " + status); 
      } 
     }); // end geocode function 
    } 
    var map = new google.maps.Map(document.getElementById("map_canvas"), mapOptions); 

問題是隻顯示我的最後一個標記。

我在想什麼? :(

千恩萬謝。

回答

0

你的標誌變量全球,地理編碼是異步的。循環執行,發射了useNowArray.length請求,每一個更新與得到的位置。全球標記時循環完成,該標記在循環的最後位置留下類似問題,與該問題的解決方案:

+0

事實上,他正在使用此代碼:http://www.svennerberg.com/2012/03/adding-multiple-markers-to-google-maps-from-json/,但它是極其糟糕的例子,即它不能工作你提到的原因。我也想知道這個人如何寫一本書並找到一個出版商。 – Bytemain

+0

該[頁面]上的演示(http://www.svennerberg.com/2012/03/adding-multiple-markers-to-google-maps-from-json/)沒有此問題,也沒有使用地理編碼器。 – geocodezip

+0

感謝您的迴應! 只改變我的標記變量爲本地不能解決問題的權利?我做到了這一點,並試圖比較address_count和我的數組長度,就像fitBounds示例中的一樣,但它對我也不起作用。 help T_T – chongzixin

相關問題