2013-08-26 47 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',我將重新添加該類。但是,這並沒有解決...... :(我怎樣才能防止放大/縮小後動畫停止? –