2013-08-26 33 views
5

我正在使用带有MarkerClustererPlus的Google Maps v3。 Click for docsmarkerclusterer的动画群集

如果群集包含特定标记,我想为群集设置动画。如果标记不在集群内,动画非常简单。

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

但我想反弹整个集群图标。我可以得到群集:

markerCluster.getClusters(); 

但我怎么能关联群集div与我的getClusters() - 数组?我不知道哪个div属于getClusters()函数中的哪个集群。

回答

8

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

  • 步骤#1:每个集群具有markers_ -property,它是一个包含集群的所有标记的阵列。遍历所有群集和检查markers _阵列包含有用的标记

  • 第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 
         } 
        } 
    }}); 
    

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

+0

是的它的工作就像一个魅力!谢谢 – chaosbohne

+0

我其实也有类似的问题。我通过向它的div_(css3动画)添加一个类来获得我的集群的动画效果。但是,当用户放大/缩小动画时会出现问题,因为集群已被重置,因此所添加的类已消失。我试图跟踪要激活的集群内部的标记,然后在缩放时触发'clusteringend',我将重新添加该类。但是,这并没有解决...... :(我怎样才能防止放大/缩小后动画停止? –