i created custom toggle init drawingmanager, , i'm able delete current shape (if there one) when initialise using currentshape.setmap(null).
but how delete shape created drawingmanager @ precise moment user starts draw new one?
as far know there's no "drawingstart" event (not in documentation), example, fire @ moment when user starts drawing shape.
i tried using this...
google.maps.event.addlistener(map, 'dragstart', function(e) { if (drawingmanager.getdrawingmode() == "circle"){ currentshape.setmap(null); } }); ...and using 'click' event, events don't fire when drawingmanager.getdrawingmode() == "circle".
function initmap(){ map = new google.maps.map(mapcanvas, mapoptions); $toggledrawing.on('click', function(){ toggledrawing(); }); } function toggledrawing(){ if (!isdrawing){ if (!selectedarea){ // enable drawing mode isdrawing = true; $toggledrawing.addclass('active'); initdrawing(); }else{ // delete selected area deleteselectedarea(); } }else{ // disable drawing mode after drawing shape isdrawing = false; $toggledrawing.removeclass('active'); drawingmanager.setdrawingmode(null); } } function initdrawing(){ drawingmanager = new google.maps.drawing.drawingmanager({ drawingmode: google.maps.drawing.overlaytype.circle, drawingcontrol: false }); drawingmanager.setmap(map); google.maps.event.addlistener(drawingmanager, 'overlaycomplete', function(e) { selectedarea = e.overlay; toggledrawing(false); // set false }); // 'click' or 'dragstart' event not fired if `drawingmanager.getdrawingmode() == "circle"` (or other shape) // google.maps.event.addlistener(map, 'click', function(e) { // if (drawingmanager.getdrawingmode() == "circle"){ // selectedarea.setmap(null); // } // }); // google.maps.event.addlistener(map, 'dragstart', function(e) { // if (drawingmanager.getdrawingmode() == "circle"){ // selectedarea.setmap(null); // } // }); } function deleteselectedarea() { if (selectedarea) { selectedarea.setmap(null); selectedarea = null; } }
too easy. attach event map-canvas instead of map:
// if it's drawing mode, delete selected area (if there one) $('#map-canvas').on('click', function() { if (drawingmanager.getdrawingmode() == "circle"){ deleteselectedarea(); } }); nice tips here.
Comments
Post a Comment