Hice una aplicación de asignación que utiliza el administrador de dibujos (e implementa formas seleccionables); El programa funciona de la siguiente manera: cuando se termina de dibujar el polígono después de hacer clic en un botón, se mapea una ruta en el polígono.evento después de modificar el polígono en google maps api v3
Cuando el polígono se edita después de este proceso, quiero que se vuelva a llamar a la función de mapeo. Sin embargo, no puedo hacer que esta pieza funcione;
Intenté utilizar el siguiente código pero siempre recibo un error porque aún no se ha seleccionado ninguna forma cuando se agrega esta escucha. ¿Que puedo hacer?
google.maps.event.addListener(selectedShape, 'set_at', function() {
console.log("test");
});
google.maps.event.addListener(selectedShape, 'insert_at', function() {
console.log("test");
});
importantes piezas de código:
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);
}
});
Este puede funcionar con algunos mapas, pero tenga en cuenta que esto disparará una gran cantidad de eventos desencadenados a medida que el objeto se está arrastrando ed. Para mi código, ¡demasiados para manejar! Así que tuve que limitarme a los eventos de "clic" y "dragend". – jjwdesign
Con respecto al comentario de jjwdesign: tuve el mismo problema y lo resolví quitando los controladores de eventos en dragstart y volviéndolos a agregar en dragend. Parece funcionar como un encanto a primera vista. – Jochem
newShape.getPath no es una función. Estoy obteniendo este error ... –