Ho creato un'applicazione di mappatura che utilizza il gestore di disegno (e implementa forme selezionabili); Il programma funziona come segue: al termine del disegno del poligono dopo aver fatto clic su un pulsante un tracciato, viene mappato sul poligono.evento dopo la modifica del poligono in google maps api v3
Quando il poligono viene modificato dopo questo processo, desidero richiamare la funzione di mappatura. Tuttavia non riesco a far funzionare questo pezzo;
Ho provato a utilizzare il seguente codice, ma ottengo sempre un errore perché non è ancora selezionata alcuna forma quando questo listener viene aggiunto. Cosa posso fare?
google.maps.event.addListener(selectedShape, 'set_at', function() {
console.log("test");
});
google.maps.event.addListener(selectedShape, 'insert_at', function() {
console.log("test");
});
importanti pezzi di codice:
function showDrawingManager(){
var managerOptions = {
drawingControl: true,
drawingControlOptions: {
position: google.maps.ControlPosition.TOP_CENTER,
drawingModes: [google.maps.drawing.OverlayType.MARKER,google.maps.drawing.OverlayType.POLYLINE,google.maps.drawing.OverlayType.POLYGON]
},
markerOptions: {
editable: true,
icon : '/largeTDGreenIcons/blank.png'
},
polygonOptions: {
fillColor:"#1E90FF",
strokeColor:"#1E90FF",
},
polylineOptions: {
strokeColor:"#FF273A"
}
}
var drawingManager = new google.maps.drawing.DrawingManager(managerOptions);
drawingManager.setMap(map);
return drawingManager;
}
function clearSelection() {
if (selectedShape) {
console.log("clearSelection");
selectedShape.setEditable(false);
selectedShape = null;
numberOfShapes--;
}
}
function setSelection(shape) {
console.log("setSelection");
clearSelection();
selectedShape = shape;
shape.setEditable(true);
numberOfShapes++;
//getInformation(shape);
}
function initialize(){
//....
var drawingManager = showDrawingManager();
google.maps.event.addListener(drawingManager, 'overlaycomplete', function(e) {
if (e.type != google.maps.drawing.OverlayType.MARKER) {
// Switch back to non-drawing mode after drawing a shape.
drawingManager.setDrawingMode(null);
// Add an event listener that selects the newly-drawn shape when the user
// mouses down on it.
var newShape = e.overlay;
newShape.type = e.type;
google.maps.event.addListener(newShape, 'click', function() {
setSelection(newShape);
});
setSelection(newShape);
}
});
Questo potrebbe funzionare con alcune mappe, ma ricorda che questo genererà una grande quantità di eventi innescati mentre l'oggetto è in fase di dragg ed. Per il mio codice, troppi da gestire! Quindi ho dovuto seguire solo eventi "click" e "trascina". – jjwdesign
Rispetto al commento di jjwdesign: Ho avuto lo stesso problema e ho risolto rimuovendo i gestori di eventi su dragstart e aggiungendoli di nuovo su dragend. Sembra funzionare come un fascino a prima vista. – Jochem
newShape.getPath non è una funzione. Sto ottenendo questo errore ... –