Reputation: 6316
I am using following code and Demo to add a Rectangle drawing to the Map using a custom button (Not Google Maps Built In Drawing Toolbar) which is adding the shape but is not stopping/ending the drawing mode Automatically after finishing the draw.
I tried adding
google.maps.event.addListener(map.drawingManager, "overlaycomplete", function(event){
map.drawingManager.setDrawingMode(null);
});
but still not stopping the drawing mode
<button onclick="drawRec();">Draw Rectangle</button>
var drawingManager = new google.maps.drawing.DrawingManager();
function drawRec() {
drawingManager.setOptions({
drawingMode : google.maps.drawing.OverlayType.RECTANGLE,
drawingControl : false,
drawingControlOptions : {
position : google.maps.ControlPosition.TOP_CENTER,
drawingModes : [ google.maps.drawing.OverlayType.RECTANGLE ]
},
rectangleOptions : {
strokeColor : '#6c6c6c',
strokeWeight : 3.5,
fillColor : '#926239',
fillOpacity : 0.6,
editable: true,
draggable: true
}
});
drawingManager.setMap(map);
}
google.maps.event.addListener(map.drawingManager, "overlaycomplete", function(event){
map.drawingManager.setDrawingMode(null);
});
google.maps.event.addDomListener(window, 'load');
Upvotes: 0
Views: 328
Reputation: 161324
duplicate of question: Issue on Stopping Drawing Mode As Soon As Releasing A Shape On The Map, you just need to check and see if the rectangle already exists before starting a new one:
google.maps.event.addListener(drawingManager, 'overlaycomplete', function(overlay) {
// keep reference to the overlay
rectangle = overlay;
drawingManager.setOptions({
drawingMode: null,
drawingControl: false
});
});
Then in drawRec
, check to see if it already exists or not, and if it does either remove it from the map or prevent the code from drawing another one.
function drawRec() {
//Setting options for the Drawing Tool. In our case, enabling Polygon shape.
if (!!rectangle && !!rectangle.overlay && !!rectangle.overlay.setMap) {
rectangle.overlay.setMap(null);
}
code snippet:
var rectangle;
var map;
var drawingManager;
function initMap() {
map = new google.maps.Map(document.getElementById('map'), {
center: {
lat: 44.5452,
lng: -78.5389
},
zoom: 9
});
drawingManager = new google.maps.drawing.DrawingManager();
google.maps.event.addListener(drawingManager, 'overlaycomplete', function(overlay) {
rectangle = overlay;
drawingManager.setOptions({
drawingMode: null,
drawingControl: false
});
});
}
google.maps.event.addDomListener(window, 'load', initMap);
function drawRec() {
//Setting options for the Drawing Tool. In our case, enabling Polygon shape.
if (!!rectangle && !!rectangle.overlay && !!rectangle.overlay.setMap) {
rectangle.overlay.setMap(null);
}
drawingManager.setOptions({
drawingMode: google.maps.drawing.OverlayType.RECTANGLE,
drawingControl: false,
drawingControlOptions: {
position: google.maps.ControlPosition.TOP_CENTER,
drawingModes: [google.maps.drawing.OverlayType.RECTANGLE]
},
rectangleOptions: {
strokeColor: '#6c6c6c',
strokeWeight: 3.5,
fillColor: '#926239',
fillOpacity: 0.6,
editable: true,
draggable: true
}
});
drawingManager.setMap(map);
}
html,
body,
#map {
height: 100%;
height: 100%;
margin: 0;
padding: 0;
}
<button onclick="drawRec();">Draw Rectangle</button>
<div id="map"></div>
<script src="https://maps.googleapis.com/maps/api/js?libraries=drawing&key=AIzaSyCkUOdZ5y7hMm0yrcCQoCvLwzdM6M8s5qk"></script>
Upvotes: 1