1

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

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

我遇到的问题是我找不到在现有信息窗口中访问重复数据的正确方法。

如果我执行 alert(infoWindow.getContent());,那么我只会得到“未定义”。我也尝试了markers[i].getContent(),但这也没有做任何事情。

关于如何访问先前添加的标记的信息窗口、使用 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);
        });
    }
}
4

1 回答 1

2

我很确定你不能完全按照你的意愿去做。

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

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

另一种方法是定义自己的对象,确保它可以同时包含标记和信息窗口。

无论如何,您必须遍历标记数组以查找重复标记,然后使用我描述的两种方案之一获取相应的信息窗口。这似乎有点傻,但我不知道另一种方法。

于 2011-07-11T15:52:35.083 回答