J'ai un polygone modifiable, comme suit aquí .
Je veux "attraper" l'événement lorsqu'un utilisateur déplace le point sur la carte (pour redimensionner le polygone). J'ai besoin de cette fonctionnalité pour mettre en œuvre la fonction "snap to point".
Est-ce possible ?
Modifier
this.polygon = new google.maps.Polygon({
map: map,
strokeWeight: 2,
editable: true,
path: this._path
});
var dragging = false;
google.maps.event.addListener(this.polygon, 'mousedown', function (event) {
if (event.vertex) {
dragging = true;
}
});
google.maps.event.addListener(this.polygon, 'mousemove', function (event) {
if (dragging) {
// dragging
}
});
google.maps.event.addListener(this.polygon, 'mouseup', function (event) {
dragging = false;
});
Le code fonctionne, les événements sont capturés. Cependant, je n'arrive pas à accéder au point de déplacement actuel pour changer sa position.
J'ai aussi essayé à l'intérieur mousemove
pour modifier l'objet latLng, mais sans effet.
Solution temporaire
Vous ne pouvez pas accéder au fantôme du polygone pendant le redimensionnement. La seule solution pour mettre en œuvre l'accrochage est donc de le faire après le redimensionnement du polygone.
this.polygon = new google.maps.Polygon({
map: map,
strokeWeight: 2,
editable: true,
path: this._path
});
var path = this.polygon.getPath();
google.maps.event.addListener(path, 'set_at', function (event) {
// Here do the snapping, after the polygon has been resized
});
google.maps.event.addListener(path, 'insert_at', function (event) {
// Here do the snapping, after the polygon has been resized
});