Google Maps API v3,点击时如何更改标记图标
我还没有测试过这段代码,所以可能会出现拼写错误或错误,但它应该给你提供这个想法。
首先,定义一个回调来设置所有标记为正常图标(重置任何先前点击标记)和当前点击的标记的图标设定为所选择的图标:
var markerCallback = function() {
for (var i=0; i<arrayOfMarkers.length; i++) {
arrayOfMarkers[i].setIcon(normalIcon);
}
this.setIcon(selectedIcon);
}
然后,分配回调每个标记上的点击事件如下所示:
google.maps.event.addListener(marker, 'click', markerCallback);
确实有一些代码可以改进。例如,您可能不希望normalIcon
,selectedIcon
和arrayOfMarkers
成为上述代码假定它们的全局变量。如果您有很多标记,则可能需要跟踪之前选定的标记,而不是让for
循环重置每个标记上的图标。
但正如我所说,这应该给你的想法。
只需在任何情况下,任何人都希望看到跟踪上一个标记的全局变量像卡斯帕提到,这里的一个例子是我做过什么:
google.maps.event.addListener(marker,'click',function() {
if (selectedMarker) {
selectedMarker.setIcon(normalIcon);
}
marker.setIcon(selectedIcon);
selectedMarker = marker;
});
(后设置selectedMarker作为一个全局变量)
谢谢!它的工作:) – VishwaKumar 2012-05-16 11:53:25
需要我的情况下的一些变化,但想法是超级干净的人,谢谢 – vaskort 2015-11-26 14:43:40
优秀的人,你提供了最好的解决方案 – Devz 2016-02-15 16:10:51
将是一个更容易简单地将当前选中标记分配给一个全局变量,而不是通过所有标记每次:) – 2011-06-12 17:49:21
@Kasper运行:是的,你是正确的,这将是更好! (在我的辩护中,我提到了这个问题:“如果你有很多标记,你可能想跟踪上一个选定的标记,而不是在每个标记上都有一个'for'循环重置图标。 “) – Trott 2011-06-12 18:46:43
我确实很抱歉,我完全错过了那部分。只专注于代码示例:D – 2011-06-12 23:35:38