2011-07-11 113 views
1

根據選定的國家和日期,結果列表將顯示在地圖上。標記與HTML數據在他們的位置工作正常,我遇到的問題是處理重複標記的情況。更改Google地圖中infowindow的內容

我找到了檢查重複的方法,但我希望能夠修改已存在的信息的infowindow中的內容。這樣我就可以將重複標記的內容添加到位於相同位置的現有標記。

我遇到的問題是,我找不到正確的方式來訪問現有的infowindow中的數據,爲重複的。

如果我確實alert(infoWindow.getContent()),那麼我只是得到「未定義」。我也嘗試過標記[i] .getContent(),但那也沒有做任何事情。

任何想法或建議我如何訪問以前添加的標記的infowindows,使用getContent()獲取它們的內容,並將重複的數據添加到它的內容中?

var marker = new google.maps.Marker({ 
    map: map, 
    position: latlng 
}); 

for (var i=0; i<markers.length; i++) { 
    if (markers[i].getPosition().equals(marker.getPosition())) { 
     alert('duplicate found'); 
     alert(infoWindow.getContent()); 

    } else { 
     google.maps.event.addListener(marker, 'click', function() { 
      infoWindow.setContent(html); 
      infoWindow.open(map, marker); 
     }); 
    } 
} 

回答

2

我很確定你不能做到你想要的。

據我所知,並且可以在API中看到,infowindow或標記都不知道彼此的任何事情。當點擊某個標記時,唯一知道應該顯示哪個infowindow的是Google地圖事件處理程序。

問題的解決方案是將所有infowindows存儲在數組中,並將標記存儲在另一個數組中,您將確保相應標記和infowindows的索引在相同處。

另一種方法是定義自己的對象,確保它可以同時擁有標記和infowindow。

無論如何,您必須遍歷標記數組才能找到重複標記,然後使用我描述的兩種場景之一獲取相應的infowindow。這似乎有點愚蠢,但我不知道有另一種方式來做到這一點。

+0

是的,這仍然是今天的解決方案,基本上是循環每次你需要刷新信息。您可以通過將kml數據存儲到統計圖或融合表中並「放置」條件來添加infowindow內容,但仍然會限制 – efwjames