2014-08-28 5 views
5

Ich möchte die Koordinaten der Mitte meiner Karte verfolgen. Bisher habe ich dies verwendet:Get Center Coords nach Drag & Pan beendet

was funktioniert, indem die Coords am Ende des Ziehereignisses erhalten.

Das Problem ist, ich verwende jetzt map.panTo, um zu einem bestimmten Ort zu bewegen.

Gibt es ein Ereignis für im Grunde "whenever the center has *finished* moving in any way"?

Wie von Geocodezip erwähnt, habe ich das Ereignis center_changed vergessen. Dieses Ereignis wird jedoch kontinuierlich ausgelöst, während die Karte gezogen/verschoben wird.

Idealerweise suche ich nach einem Ereignis, das nur einmal ausgelöst wird, nachdem ein Ziehen/Verschieben durchgeführt wurde.

+0

Sie müssen definieren, was Sie mit "fertig" meinen. Es gibt kein solches allgemeines Ereignis, Sie müssen es selbst implementieren. – geocodezip

Antwort

7

die idle-Ereignis statt beachten (Dieses Ereignis wird ausgelöst, wenn die Karte nach dem Schwenken oder Zoomen frei wird):

google.maps.event.addListener(map,'idle',function(){ 
     if(!this.get('dragging') && this.get('oldCenter') && this.get('oldCenter')!==this.getCenter()) { 
     //do what you want to 
     } 
     if(!this.get('dragging')){ 
     this.set('oldCenter',this.getCenter()) 
     } 

    }); 

    google.maps.event.addListener(map,'dragstart',function(){ 
     this.set('dragging',true);   
    }); 

    google.maps.event.addListener(map,'dragend',function(){ 
     this.set('dragging',false); 
     google.maps.event.trigger(this,'idle',{}); 
    }); 
4

Das google.maps.Map center_changed-Ereignis.

center_changed | None | This event is fired when the map center property changes. 
// On center changed 
google.maps.event.addListener(map, 'center_changed', function() { 
    $('.map_center_coords .latitude').html(map.getCenter().lat()); 
    $('.map_center_coords .longitude').html(map.getCenter().lng()); 
}); 
+0

Danke, ich habe es vergessen, aber es ist nicht genau das, wonach ich suche. Diese wird kontinuierlich ausgelöst, während Sie ziehen und während Sie schwenken. Idealerweise hätte ich gerne etwas, das erst nach Drag/Pan abfeuert. (Aktualisiere Frage) – Juicy

1

Versuchen idle Ereignis verwenden. Link zu docs.

Dieses Ereignis wird ausgelöst, wenn die Karte nach dem Schwenken oder Zoomen frei wird.

Wenn Sie Leerlauf Ereignis wollen erst nach dragend Feuer dann versuchen, das Snippet unten.

Dieser Code druckt Koordinaten zur Konsole, nachdem sowohl dragend als auch idle Ereignisse ausgelöst wurden.

mapObj.addListener('dragend', function() { 
    var idleListener = mapObj.addListener('idle', function() { 
     google.maps.event.removeListener(idleListener); 
     console.log(mapObj.getCenter().lat()); 
     console.log(mapObj.getCenter().lng()); 
    }); 
}); 
+0

Wie setzt man die Markerposition zurück? – Marco