javascript - Delete a DrawingManager shape when drawing a new one -


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