Этого можно достичь, прослушивая событие mouseup или click, а затем используя метод наложения shim для отображения пользовательского контекстного меню.
Код для прослушивателя событий будет выглядеть примерно так:
// Listen for all mouseup events in the plugin.
// Where 'ge' is an instance of the GEPlugin
google.earth.addEventListener(ge.getWindow(), 'mouseup', eventHandler);
Обработчик события будет выглядеть примерно так:
// Handles mouseup events (e is a KmlMouseEvent)
var eventHandler = function(e)
{
// if it is a right-click
if (e && e.getButton() == 2)
{
event.preventDefault(); // optional, depending on your requirements
event.stopPropagation(); // optional, depending on your requirements
openMenu(e.getScreenX(), e.getScreenY());
}
}
Наконец, код для открытия пользовательского меню будет выглядеть примерно так:
// Insert a custom iframe at the x, y screen position
var openMenu = function(x, y)
{
var iframe = document.createElement('iframe');
iframe.frameBorder = 0;
iframe.scrolling = 'no';
iframe.style.position = 'absolute';
// build the menu as you require...
// then position and show it.
iframe.style.left = x + 'px';
iframe.style.top = y + 'px'; // you may want to offset the position...
document.body.appendChild(iframe ); // show the menu
}
Очевидно, что вы помещаете в меню и как вы его стилизуете.Вы также, вероятно, захотите скрыть это тоже, это будет просто случай удаления iframe - возможно, в другом слушателе пунктов меню (например, когда вы щелкаете элемент меню, меню исчезает)
Если вы получаетеЗастрял здесь отличный справочник для работы с событиями.https://developers.google.com/earth/documentation/events
Кроме того, вот рабочий пример использования технологии iframe shim: http://earth -api-samples.googlecode.com / svn / trunk / demos / customcontrols / index.html