2012-08-01 133 views
0

我正在谷歌地圖v3上工作。 在這張地圖上,我想顯示幾個標記,每個標記都帶有Infowindow,其中顯示了關於該點的一些信息。 信息的來源是一個JavaScript數組,每個點都有一些數據,在這裏一切正常。 該數組包含(有時)地址(有時爲空)並始終是經緯度座標,所以當地址不存在時,我必須進行反向地理編碼。在這裏我的代碼:谷歌地圖v3,反向地理編碼和多個Infowindow

var geocoder = new google.maps.Geocoder(); 
for(var i=0;i<markersArray.length;i++){  
    var la=markersArray[i][0]); 
    var lo=markersArray[i][1]); 
    gpoint=new google.maps.LatLng(la,lo); 
    var aMarker = new MarkerWithLabel({ //part of Google Maps Utility Lib 
     position: gpoint, 
     map: map, 
     labelContent: deviceID, 
     labelAnchor: new google.maps.Point(22, 0), 
     labelClass: "labelStyle", 
     html: "<ul><li>Speed: "+markersArray[i][3]+"</li></ul>", 
     address: markersArray[i][4] 
    }); 
    if (aMarker.address<="" || aMarker.address==null) { 
     geocoder.geocode({'latLng': gpoint}, function(results, status) { 
      if (status == google.maps.GeocoderStatus.OK) { 
       if (results[1]) { 
        aMarker.address=results[1].formatted_address; 
       } 
      } 
     }); 
    }  
    google.maps.event.addListener(aMarker, 'click', function() { 
     infowindow.setContent(this.html+" "+this.address); 
     infowindow.open(map, this); 
    }); 

.... 
} 

幾乎一切正常:標記在適當的位置,所有這些顯示出與除了那些地址是空的,是反向地理編碼正確的地址正確的信息窗口。 對於最後一組,只有最後一個標記infowindow顯示正確的地址,所有其他infowindow地址都是空的。 有什麼想法? 非常感謝!

回答

0

解決此問題的一種方法是創建一個函數,該函數執行反向地理編碼,並且可以在infowindow和標記上關閉函數。

由於反向地理編碼操作是異步的,返回的地址不可用於除最後一個標記之外的任何地址。

+0

你能給我一些代碼行嗎?非常thx! – user1569385 2012-08-02 20:23:52

+0

你沒有提供足夠的代碼來讓我輕鬆做到這一點。如果你想讓我推薦代碼,請將鏈接發佈到可以工作的地圖上,並演示問題(或者是一個jsfiddle)。 – geocodezip 2012-08-02 20:34:06