【问题标题】:Change the content of infowindow in Google Maps更改谷歌地图信息窗口的内容
【发布时间】:2011-07-11 12:37:13
【问题描述】:

根据选定的国家和日期,结果列表将显示在地图上。带有 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);
        });
    }
}

【问题讨论】:

    标签: google-maps-api-3 infowindow


    【解决方案1】:

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

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

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

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

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

    【讨论】:

    • 是的,到今天为止,这仍然是解决方案,基本上每次需要刷新信息时都进行循环。您可以通过将您的 kml 数据存储到图表或融合表中并放置条件以添加信息窗口内容来“绕过”它,但仍然会受到限制
    猜你喜欢
    • 2015-10-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-08-30
    • 2011-10-07
    • 1970-01-01
    • 2017-11-21
    • 1970-01-01
    相关资源
    最近更新 更多