Steve Smith Steve Smith - 8 months ago 35
Javascript Question

Removing polygon from google maps drawingManager V3

I have a user editable google map where users can draw an overlay polygon onto the map using the drawing manager. This works fine and the console logs the lat lngs I need. However, I need to add a button that will clear the map of the polygon so they can draw again if a mistake was made.. My implementation code is pasted below:

geocoder = new google.maps.Geocoder();
var latlng = new google.maps.LatLng(<?php echo $latitude ?>, <?php echo $longitude ?>);
var myOptions = {
zoom: <?php echo $zoomlevel ?>,
center: latlng,
mapTypeId: google.maps.MapTypeId.ROADMAP
var map = new google.maps.Map(document.getElementById("map_canvas"), myOptions);

marker = new google.maps.Marker({
animation: google.maps.Animation.DROP,
position: latlng

pos = marker.position;
document.getElementById("gpsite-surgery-latitude").value =;
document.getElementById("gpsite-surgery-longitude").value = pos.lng();

google.maps.event.addListener(marker, "dragend", function() {
var myLatLng = marker.latLng;

pos = marker.position;
document.getElementById("gpsite-surgery-latitude").value =;
document.getElementById("gpsite-surgery-longitude").value = pos.lng();

google.maps.event.addListener(map, 'zoom_changed', function() {
document.getElementById("gpsite-surgery-zoomlevel").value = map.getZoom();

var drawingManager = new google.maps.drawing.DrawingManager({
drawingMode: google.maps.drawing.OverlayType.MARKER,
drawingControl: true,
drawingControlOptions: {
position: google.maps.ControlPosition.TOP_CENTER,
drawingModes: [google.maps.drawing.OverlayType.POLYGON]
polygonOptions: {
fillColor: '#ffff00',
fillOpacity: 0.4,
strokeWeight: 3,
clickable: true,
zIndex: 1,
editable: false

google.maps.event.addListener(drawingManager, 'polygoncomplete', function (polygon) {
var coordinates = (polygon.getPath().getArray());



There is also a marker on the map, you can ignore this.

Thanks in advance


Examine this code, it sounds exactly like what you are talking about, a button to delete the shape

Edit: above link is broken but I was able to find that code here.

  // globals
  var drawingManager;
  var selectedShape;


  function clearSelection() {
    if (selectedShape) {
      selectedShape = null;

  function setSelection(shape) {
    selectedShape = shape;
    selectColor(shape.get('fillColor') || shape.get('strokeColor'));

  function deleteSelectedShape() {
    if (selectedShape) {

     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.

        // 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() {

    // Clear the current selection when the drawing mode is changed, or when the
    // map is clicked.
    google.maps.event.addListener(drawingManager, 'drawingmode_changed', clearSelection);
    google.maps.event.addListener(map, 'click', clearSelection);
    google.maps.event.addDomListener(document.getElementById('delete-button'), 'click', deleteSelectedShape);