2012-04-04 5 views
6

Ich habe einen DrawingManager, mit dem der Benutzer ein Polygon zeichnen kann. Wenn der Benutzer das Polygon gezeichnet hat, berechne ich die Fläche dieses Polygons. All dies funktioniert perfekt, außer zum Bearbeiten der Polygon-Ereignisbehandlung. Ich benutze den folgenden CodeGoogle Maps api v3 Polygon bearbeiten Ereignis nicht an allen Handles ausgelöst

google.maps.event.addListener(path, "set_at", function(){ 
    //my code here 
}); 

Also diese Art von Arbeiten funktioniert aber nur für die "Ecken" des Polygons. Es gibt dazwischen liegende, kaum sichtbare Bearbeitungsgriffe (Quadrate) zwischen den weißen Hauptgriffen. Wenn ich das Polygon durch Ziehen an einem dieser Griffe bearbeite, wird das Ereignis nicht ausgelöst.

Irgendwelche Ideen zu diesem Verhalten? Ist das beabsichtigt oder irgendeine Art von Bug mit der API oder meinem Code?

Vielen Dank für jede Hilfe.

Greg

Antwort

9

Das "set_at" Ereignis ausgelöst wird, wenn ein LatLng auf einem Pfad aktualisiert wird. Dies tritt auf, wenn Sie diese vorhandenen quadratischen Knoten verschieben (indem Sie die LatLng dieses Knotens ändern). Die "leicht ausgegrauten Quadrate" an den Kanten von Überlagerungen ermöglichen es dem Benutzer, neue LatLngs zu dem Pfad hinzuzufügen, anstatt einen existierenden zu bearbeiten (Sie werden bemerken, dass ein ausgegrauter Knoten mit einer anderen Ecke verschoben wird). In diesem Fall fügen Sie einen eventListener für "insert_at" anstelle von "set_at" hinzu, um zu behandeln, wenn neue LatLngs zum Formenpfad hinzugefügt werden.

+0

Perfekte Erklärung. Vielen Dank. Lief wie am Schnürchen. – geraldcor