2012-12-31 75 views
1

可能重複:
Google Map V3 : Only some markers are displayed谷歌地圖中查看多個項目的物業地址

我需要與谷歌地圖幫助..我有1個物業工作下面的代碼顯示在地圖上,但我有很多地址/屬性在同一張地圖上顯示,並沒有成功。

var address = "<?php echo $address?>"; 
     var map = new google.maps.Map(document.getElementById('map'), { 
      mapTypeId: google.maps.MapTypeId.ROADMAP, 
      zoom: 16 
     }); 
     var geocoder = new google.maps.Geocoder(); 
     geocoder.geocode({ 
      'address': address 
     }, 
     function(results, status) { 
      if(status == google.maps.GeocoderStatus.OK) { 
      new google.maps.Marker({ 
       position: results[0].geometry.location, 
       map: map 
      }); 
      map.setCenter(results[0].geometry.location); 
      } 
     }); 

從PHP我得到的地址,但JS端腳本對我來說很難..請幫忙告訴我需要改變什麼,所以在ADRESS是JS數組以及如何顯示所有的地址。

+0

很可能你必須調用geocoder的次數,併爲每個創建一個標記。 – tchap

+0

多數民衆贊成,但如何做到這一點?正如我所說我不熟悉JS腳本方面..我相信一些litle更改需要適用於代碼,但它們是什麼? – thecore7

回答

0

你正在尋找一個普通的JavaScript for遍歷數組你我猜,所以這應該是這樣的(假設address是一個有效的JavaScript數組):

// address = ... //define address array here 

var map = new google.maps.Map(document.getElementById('map'), { 
     mapTypeId: google.maps.MapTypeId.ROADMAP, 
     zoom: 16 
    }); 
var geocoder = new google.maps.Geocoder(); 

var nbAddresses = address.length; 

for (var i=0;i<nbAddresses;i++) 
{ 

    geocoder.geocode({ 
      'address': address[i] 
    }, 
    function(results, status) { 
     if(status == google.maps.GeocoderStatus.OK) { 
     new google.maps.Marker({ 
      position: results[0].geometry.location, 
      map: map 
     }); 
     map.setCenter(results[0].geometry.location); 
     } 
    }); 

} 

編輯:請注意,這個代碼片段可以優化,它只是一個快速的方法來解決(無雙關語意圖)您的需要;)

+0

親愛的tchap,感謝您的回覆,但代碼不起作用或至少不工作時,我複製/粘貼它.. Iget錯誤未定義的geocoder.geocode函數.. – thecore7

+1

這將工作~10個地址,然後開始獲取OVER_QUERY_LIMIT錯誤和失敗(不顯示標記,因爲它不檢查返回的狀態)。 – geocodezip

+0

讓我們替換var address =「<?php echo $ address?>」; address1 ='adress1';和address2 ='adress2';而不是那個PHP變量 - 這將是esier我明白什麼和在哪裏可以替換 – thecore7