2011-06-11 117 views

回答

6

我还没有测试过这段代码,所以可能会出现拼写错误或错误,但它应该给你提供这个想法。

首先,定义一个回调来设置所有标记为正常图标(重置任何先前点击标记)和当前点击的标记的图标设定为所选择的图标:

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,selectedIconarrayOfMarkers成为上述代码假定它们的全局变量。如果您有很多标记,则可能需要跟踪之前选定的标记,而不是让for循环重置每个标记上的图标。

但正如我所说,这应该给你的想法。

+1

将是一个更容易简单地将当前选中标记分配给一个全局变量,而不是通过所有标记每次:) – 2011-06-12 17:49:21

+1

@Kasper运行:是的,你是正确的,这将是更好! (在我的辩护中,我提到了这个问题:“如果你有很多标记,你可能想跟踪上一个选定的标记,而不是在每个标记上都有一个'for'循环重置图标。 “) – Trott 2011-06-12 18:46:43

+0

我确实很抱歉,我完全错过了那部分。只专注于代码示例:D – 2011-06-12 23:35:38

14

只需在任何情况下,任何人都希望看到跟踪上一个标记的全局变量像卡斯帕提到,这里的一个例子是我做过什么:

google.maps.event.addListener(marker,'click',function() { 

     if (selectedMarker) { 
      selectedMarker.setIcon(normalIcon); 
     } 
     marker.setIcon(selectedIcon); 
     selectedMarker = marker; 
    }); 

(后设置selectedMarker作为一个全局变量)

+0

谢谢!它的工作:) – VishwaKumar 2012-05-16 11:53:25

+0

需要我的情况下的一些变化,但想法是超级干净的人,谢谢 – vaskort 2015-11-26 14:43:40

+0

优秀的人,你提供了最好的解决方案 – Devz 2016-02-15 16:10:51

相关问题