2011-07-11 77 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