在Google地图中更改infowindow的内容

时间:2011-07-11 12:37:13

标签: google-maps-api-3 infowindow

根据所选国家/地区和日期,结果列表将显示在地图上。带有html数据的标记放置工作正常,我遇到的问题是处理带有重复标记的案例。

我找到了一种检查重复方法的方法,但我希望能够修改已存在的内容的信息。这样我就可以将重复标记的内容添加到位于同一位置的现有标记中。

我遇到的问题是我无法找到正确的方法来访问现有信息窗口中的数据以获取重复数据。

如果我发出警报(infoWindow.getContent());,那么我只是得到“未定义”。我也尝试过marker [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);
        });
    }
}

1 个答案:

答案 0 :(得分:2)

我很确定你无法做到你想要的。

据我所知,并且可以在API中看到,infowindow或者标记对彼此都不了解。在点击某个标记时,唯一知道应该显示哪个信息窗口的是谷歌地图事件处理程序。

您的问题的解决方案是将所有infowindows存储在一个数组中,并将标记存储在另一个数组中,您可以确保相应标记的索引和infowindows所在的位置相同。

另一种方法是定义自己的对象,确保它可以同时保存标记和infowindow。

无论如何,你必须循环遍历markers数组以找到重复的标记,然后通过使用我描述的两个场景之一获得相应的infowindow。这看起来有点傻,但我不知道另一种方法。