2013-08-26 10 views
5

Ich verwende Google Maps v3 mit MarkerClustererPlus. Click for docsAnimate Cluster von Markerclusterer

Ich möchte einen Cluster animieren, wenn ein Cluster einen bestimmten Marker enthält. Die Animation ist relativ einfach, wenn sich der Marker nicht in einem Cluster befindet.

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

Aber ich möchte das ganze Cluster-Symbol hüpfen. Ich kann das Cluster erhalten mit:

markerCluster.getClusters(); 

Aber wie kann ich assoziieren die Cluster-div mit meinem getClusters() - Array? Ich weiß nicht, welches div zu welchem ​​Cluster von der getClusters() - Funktion gehört.

Antwort

8

Dies ist nicht über die dokumentierten Methoden/Eigenschaften möglich, aber Sie erhalten möglicherweise Zugriff auf diese Eigenschaften.

  • Schritt # 1: Jeder Cluster hat eine markers_ -Property, die ein Array ist, dass alle Marker des Clusters enthält. Iterate alle Cluster über und überprüfen, ob der markers _-Array die gewünschte Markierung enthält

  • Schritt # 2:, wenn Sie den Cluster mit dem gesuchten Marker gefunden haben Zugriff auf die Eigenschaft clusterIcon_.div_ des Clusters, dass das Element ist ab, die das Cluster-Symbol

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

    Aber Hinweis: Das Cluster-Symbol ist keine google.maps.Marker, kann man nicht einfach eine Animation anwenden, wie Sie es mit einer nativen Marker tun können. Außerdem: Animationen, die die Position des Cluster-Icons verändern (zB Bounce) können den MarkerClusterer stören, ich würde vorschlagen, Effekte zu verwenden, die über Farbänderungen oder Änderungen des Hintergrundbildes (die Cluster-Icons) angewendet werden können zu sehen sind die Hintergrundbilder des div).

+0

Ja, es funktioniert wie ein Charme! Danke – chaosbohne

+0

Ich habe eigentlich ein ähnliches Problem. Ich habe meinen Cluster animiert, indem ich eine Klasse zu seinem div_ (CSS3-Animation) hinzugefügt habe. Das Problem tritt jedoch auf, wenn ein Benutzer die Animation vergrößert oder verkleinert, weil die Cluster zurückgesetzt wurden und daher die hinzugefügten Klassen nicht mehr vorhanden sind. Ich habe versucht, den Marker innerhalb des Clusters, den ich animieren möchte, zu verfolgen, und nach dem Zoom, der 'clusteringend' auslöst, werde ich diese Klasse wieder hinzufügen. Das hat aber nicht funktioniert ... :(Wie kann ich verhindern, dass die Animation nach dem Vergrößern/Verkleinern aufhört? –