2012-04-13 8 views
1

So verwenden Sie die Ereignisse insert_at, remove_at & set_at des Polygons.So löschen Sie die Polygonkoordinate/den Scheitelpunkt/Knoten (Google Maps V3)

Kann jemand eine Probe zur Verfügung stellen, wie man sie benutzt und was das Ereignisargument ist.

Was ich jetzt tun möchte, ist, wenn Benutzer das Polygon zeichnen, und doppelklicken Sie auf den Knoten des Polygons, ich möchte den Knoten aus dem Polygon gelöscht werden.

kann es getan werden?

+0

Dies ist derzeit eine herausragende Feature-Anfrage (bestätigt von Google), Ausgabe 3760. Folgen Sie dem Link: http://Stackoverflow.com/a/9279742/926460 – Timeless

Antwort

7

Wenn Ihr Polygon editierbar ist, können Sie dem Polygon einen Ereignis-Listener hinzufügen und dann mit Klick- oder Rechtsklicks umgehen. Zum Beispiel:

poly = new google.maps.Polygon({ 
    editable: true 
}); 
poly.setMap(map); 
google.maps.event.addListener(poly, 'rightclick', function(event) { 
    if (event.vertex == undefined) { 
    return; 
    } else { 
    removeVertex(event.vertex); 
    } 
}); 

Above Code würde ein Polygon erstellen und ein Ereignis-Listener anhängen, die richtigen Klicks auf Eckpunkte (Knoten) des Polygons fängt und dann removeVertex Funktion aufrufen.

function removeVertex(vertex) { 
    var path = poly.getPath(); 
    path.removeAt(vertex); 
} 

Ähnliche Lösung kann auch für Polylinien angewendet werden.

1

hier sind zwei Links, die helfen könnten:

Für Veranstaltungen: https://developers.google.com/maps/documentation/javascript/events

Die Events Ihre Vorstellung: https://developers.google.com/maps/documentation/javascript/overlays#PolygonArrays

ich das remove_at Ereignis mit nur gelandet. Hier ist, wie ich es benutzt:

google.maps.event.addListener(this, 'click', function(event) {     
     path = this.getPath(); 
     for(i=0;i<path.length;i++){ 
      if(event.latLng == path.getAt(i)){ 
       path.removeAt(i); 
      } 
     } 
}); 

stellen Sie sicher, Sie verwenden sie auf den Polygonen tatsächlichen Pfad, nicht das Polygon-Objekt.