Reputation: 211
I am trying to enable the rightclick function on a google map for a visible polygon. I need the right-click option so I can enable a delete vertices after placing the polygon on the map. However, I cannot get the addListener to recognize the right-click event.
function initMap() {
var selectedShape;
var map = new google.maps.Map(document.getElementById('map'), {
center: {
lat: -34.397,
lng: 150.644
},
zoom: 8
});
var drawingManager = new google.maps.drawing.DrawingManager({
drawingMode: google.maps.drawing.OverlayType.POLYGON,
drawingControl: true,
drawingControlOptions: {
position: google.maps.ControlPosition.TOP_CENTER,
drawingModes: ['circle', 'polygon', 'rectangle']
},
polygonOptions: {
editable: true,
draggable: true
},
circleOptions: {
editable: true,
draggable: true
},
rectangleOptions: {
editable: true,
draggable: true
}
});
drawingManager.setMap(map);
//load preset data
function setJSON(Shape) {
console.log(Shape.type);
if (Shape.type === "circle") {
return '{"type":"'+Shape.type +'", "lat":"'+Shape.getCenter().lat()+'", "lng":"'+Shape.getCenter().lng()+'", "radius":"'+Shape.getRadius()+'" }';
}
if (Shape.type === "rectangle"){
return '{"type":"' + Shape.type + ', "start":"'+ Shape.getBounds().getNorthEast() +'", "end":"'+ Shape.getBounds().getSouthWest() +'"}';
}
if (Shape.type === "polygon"){
//eturn '{"type":"'+ Shape.type +'"}' + Shape.getPaths();
vertice = Shape.getPath();
console.log("vertice count: " + vertice.getLength());
JSON = '{"type":"'+ Shape.type +'", "coordinates": "';
vertice.forEach(function(xy, i) {
JSON = JSON + xy.lat() + ' ' + xy.lng() + ', ';
});
JSON = JSON.slice(0,-2) + '"}';
return JSON;
}
return 0
}
google.maps.event.addListener(drawingManager, 'overlaycomplete', function(event) {
drawingManager.setMap(null);
var newShape = event.overlay;
newShape.type = event.type;
selectedShape = newShape;
console.log(setJSON(selectedShape));
if (newShape.type === "circle" || newShape.type === "rectangle") {
google.maps.event.addListener(selectedShape, 'bounds_changed', function(event){
console.log(setJSON(selectedShape));
});
}
if (newShape.type === "polygon") {
google.maps.event.addListener(selectedShape.getPath(), 'set_at', function(event) {
// complete functions
console.log(setJSON(selectedShape));
});
google.maps.event.addListener(selectedShape.getPath(), 'insert_at', function(event) {
// complete functions
console.log(setJSON(selectedShape));
});
google.maps.event.addListener(selectedShape.getPath(), 'rightclick', function(event) {
console.log('right-click');
})
}
});
google.maps.event.addDomListener(document.getElementById('btnClear'), 'click', function(event) {
selectedShape.setMap(null);
drawingManager.setMap(map);
});
}
Upvotes: 0
Views: 2218
Reputation: 161324
A MVCArray (which is what the path returns) doesn't have a rightclick event. The Polygon would have one. This code works for me:
google.maps.event.addListener(newShape, 'rightclick', function(event) {
console.log('right-click');
});
Upvotes: 3