Мне нужно активировать контекстное меню, щелкнуть правой кнопкой мыши на карте и отметить, шаги:
1) Создайте новую MapCanvasProjection, чтобы использовать функцию fromLatLngToContainerPixel:
overlay = new google.maps.OverlayView();
overlay.draw = function() {};
overlay.setMap(map);
2) Для каждого маркера включите прослушиватель RightClick:
google.maps.event.addListener(marker, 'rightclick', function() {
google.maps.event.trigger(map, 'rightclick', this);
});
3) Замените карту прослушивателя RightClick на:
g.event.addListener(this.theMap, 'rightclick', function(e)
{
try {
var lpx = overlay.getProjection().fromLatLngToContainerPixel(e.getPosition());
var latLng_r=e.getPosition();
} catch(err) {
var lpx=e.pixel;
var latLng_r=e.latLng;
}
// Shorthand some stuff
var mapDiv = $(self.theMap.getDiv()),
menu = self.theMenu,
x = lpx.x,
y = lpx.y;
// Hide the context menu if its open
menu.hide();
// Save the clicked location
self.clickedLatLng = latLng_r;
// Adjust the menu if clicked to close to the edge of the map
if ( x > mapDiv.width() - menu.width() )
x -= menu.width();
if ( y > mapDiv.height() - menu.height() )
y -= menu.height();
// Set the location and fade in the context menu
menu.css({ top: y, left: x }).fadeIn(200);
});
// Hide context menu on several events
$.each('click dragstart zoom_changed maptypeid_changed center_changed'.split(' '), function(i,name){
g.event.addListener(self.theMap, name, function(){ self.theMenu.hide(); });
});
}