2013-03-12 89 views
0

我一直在尋找stackoverflow和其他網絡無濟於事。我是一個新手程序員,我完全停留在這個問題上。Google Maps API標記循環沒有正確更改標題

我已被構造爲陣列如下:

地址a SuburbA AddressB SuburbB

當下面的代碼運行時,它通過將標記更新地圖,以及圍繞一個10英里圓標記。問題是,當我將鼠標懸停在標記上時,即使標記和圓圈位於正確的位置,工具提示/標題始終爲SuburbB的標題/標題。

讓我瘋狂,幫助將不勝感激!

function codeAddress(){ 

    var arrayLength = array.length; 
    var looper = 0; 
    var looper2 = 1; 

    while (looper < arrayLength) { 

     alert("Geocode started"); 

     sAddress = array[looper]; 
      alert (looper) 
      alert("Address set" + sAddress) 

     sName = array[looper2]; 
      alert (looper2) 
      alert("Name set" + sName) 

     geocoder.geocode({'address': sAddress}, function(results, status) { 

      alert("Make marker"); 

      if (status == google.maps.GeocoderStatus.OK) { 

       map.setCenter (results[0].geometry.location); 

       var marker2 = new google.maps.Marker({ 
        map: map, 
        title: sName, 
        position: results[0].geometry.location 
       }); 

       var circle = new google.maps.Circle({ 
        map: map, 
        radius: 16093, // 10 miles in metres 
        fillColor: '#AA0000', 
        strokeWeight: 2, 
        strokeOpacity: 0.5 
        }); 

       circle.bindTo('center', marker2, 'position'); 



     } else { 

       alert("Geocode was not successful for the following reason: " + status); 

      } 
     }) 

     looper = looper + 2; 
     looper2 = looper2 + 2; 
    } 
} 

回答

0

您正在經歷臭名昭着的Javascript循環問題。 Javascipt範圍是功能級別,而不是塊級別,可能會造成混淆:http://coding.smashingmagazine.com/2009/08/01/what-you-need-to-know-about-javascript-scope/。基本上,行:

geocoder.geocode({'address': sAddress}, function(results, status) { 

是越來越設置與陣列的每個地理編碼中的最後一項,你需要做的是包裝在封閉的第一個參數是什麼:

geocoder.geocode((function() { return {'address': sAddress} })(), function(results, status) { 

標記和圓都很好,因爲它們是在函數內部定義的。

+0

謝謝,我想我明白了,我已經改變了它。但它仍然無法正常工作......我是否需要在某處傳遞sName以使其可用? – Tomn8r 2013-03-12 08:35:34