好的,所以我有一个谷歌地图商店定位器。输入一个邮政编码,它返回一个半径的商店。拥有所有这些漂亮的信息窗口,标记图标,甚至可以做方向......
简而言之,在计算方向之前,我需要能够隐藏(我可以做到)所有标记(因为方向api似乎会自动添加自己的标记,我不知道如何覆盖)。 / p>
目前我正在使用以下内容来隐藏标记。 这可以100%工作。它会在firebug的DOM选项卡中将标记的可见值设置为false,并且标记图标会消失。
function clearMarkers() {
for (var i = 0; i < markers.length; i++) {
markers[i].setVisible(false);
}
}
现在,我的问题是我无法显示或取消隐藏标记。这是我目前的职能。我仍然可以点击我的商店列表,它会弹出标记infoWindow,但标记只是在隐藏后才会出现。 有人可以帮我解除此restoreMarkers功能中的标记ICON吗?
function restoreMarkers() {
for (var i = 0; i < markers.length; i++) {
markers[i].setVisible(true);
}
markers.setMap(map);
}
答案 0 :(得分:1)
如果没有尝试过,我可以想到一件可能出错的事情。 Directionsrenderer是否有可能在地图上放置另一个隐藏所有标记的图层?您是否尝试过移除它以确定是否会带回标记?
我已多次使用setVisible(true)而没有任何问题,所以如果指示显示不是问题,我就不知所措。您是否有机会链接到代码运行的主页,以便我们可以尝试一下?
答案 1 :(得分:1)
仅供大家参考:
restoreMarkers函数末尾的setMap调用为false!没有验证,我敢打赌这引发了冲突,因为应该设置到地图的对象已经存在 - 它只是不可见(想象显示:无和可见性之间的区别:隐藏在CSS中)。
setVisible方法仅影响可见性 - 而不是存在。因此将setVisible设置为false,不会从地图对象中删除标记对象,只会使其不可见。
有关切换MVC对象和JavaScript Maps API v3的更多信息和详细教程可以在我的博客上找到。例如,查看我的最新消息:https://bexton.net/2011/07/11/tutorial-advanced-google-maps-marker-toggle-with-jquery-and-maps-api-v3/