2013-08-26 10 views
5

MarkerClustererPlusでGoogle Maps v3を使用しています。 Click for docsMarkerclustererのクラスタをアニメ化する

クラスタに特定のマーカーが含まれている場合、クラスタをアニメーション化したいと考えています。マーカがクラスタ内にない場合、アニメーションは非常に簡単です。

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

しかし、私はクラスタアイコン全体をバウンスしたいと思います。

markerCluster.getClusters(); 

しかし、私はgetClusters() - Arrayにcluster-divをどのように関連付けることができますか?私は、どのクラスがgetClusters() - 関数からどのクラスに属しているのか知りません。

答えて

8

これは、文書化されたメソッド/プロパティでは不可能ですが、これらのプロパティにアクセスする可能性があります。

  • ステップ#1:各クラスタは、クラスタのすべてのマーカーを含む配列であるmarkers_ -propertyを有しています。あなたは指名手配のマーカーを使用してクラスタを見つけたとき、クラスタのプロパティclusterIcon_.div_にアクセスし、その要素です:markers _アレイが望んマーカー

  • ステップ#2が含まれている場合は、すべてのクラスタを反復して確認してくださいgoogle.maps.Markerではありませんあなたはネイティブマーカーでそれを行うこととして、あなたは、単にアニメーションを適用することはできませんクラスタアイコンを:それは

    //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 
         } 
        } 
    }}); 
    

    クラスタ・アイコンを表します。しかし注意してください。さらに、クラスターアイコン(バウンスなど)の位置を変更するアニメーションがマーカークラスターに干渉する可能性があります。色の変更や背景画像の変更(クラスターアイコン参照divの背景画像です)。

+0

ええ、その魅力のように動作します!ありがとう – chaosbohne

+0

私は実際に同様の問題があります。 div_(css3アニメーション)にクラスを追加して、クラスターをアニメーション化しました。ただし、クラスタがリセットされて追加されたクラスがなくなったため、ユーザーがアニメーションをズームイン/アウトすると問題が発生します。私は、私がアニメートしたいクラスタ内のマーカを追跡しようとしましたが、ズームの際に 'clusteringend'をトリガしてそのクラスを再度追加します。しかし、それはうまくいかなかった... :(ズームイン/アウト後にアニメーションが停止するのを防ぐにはどうすればいいですか? –

関連する問題