6

我正在使用带有 MarkerClustererPlus 的 Google Maps v3。点击查看文档

如果集群包含特定标记,我想为集群设置动画。如果标记不在集群内,动画就很容易了。

  marker.setAnimation(google.maps.Animation.BOUNCE);

但我想反弹整个集群图标。我可以通过以下方式获取集群:

  markerCluster.getClusters();

但是如何将 cluster-div 与我的 getClusters()-Array 关联?我不知道 getClusters() 函数中哪个 div 属于哪个集群。

4

1 回答 1

8

这是不可能通过记录的方法/属性实现的,但您可以访问这些属性。

  • 第 1 步:每个集群都有一个 markers_-property,它是一个包含集群所有标记的数组。遍历所有集群并检查markers_-array 是否包含想要的标记

  • 步骤#2:当您找到带有所需标记的集群时,访问集群的属性clusterIcon_.div_,即表示集群图标的元素

    //attach listener to clusteringend-event
    google.maps.event.addListener(markerClustererInstance,'clusteringend',function(){
    
    //iterate over all clusters
    var clusters=this.getClusters();
    for(var i = 0; i < clusters.length;++i){
    
    if(clusters[i].markers_.length > 1 
          && clusters[i].clusterIcon_.div_){
    
            // clusters[i].clusterIcon_.div_ is the HTMLElement
            // that contains the wanted clusterIcon,
            // you should at first reset here recently applied changes
    
            if(clusters[i].markers_.indexOf(wantedMarker)>-1){
              //the marker has been found, do something with it
            } 
      }
    }});
    

    但请注意: cluster-icon 不是 a google.maps.Marker,您不能像使用原生标记那样简单地应用动画。此外:将修改集群图标(例如反弹)位置的动画可能会干扰markerClusterer,我建议使用可以通过颜色更改或背景图像更改应用的效果(集群图标你请参阅 div 的背景图像)。

于 2013-08-27T01:53:52.730 回答