У меня есть карта HERE Maps, отображаемая на простой веб-странице с раскрывающимся списком и парой кнопок. Я использую событие contextmenu
для отображения контекстного меню при щелчке правой кнопкой мыши, например:
var map = new H.Map(
document.getElementById('mapContainer'),
maptypes.raster.normal.map,
{
zoom: 12,
center: { lat: -33.81, lng: 150.78 },
pixelRatio: window.devicePixelRatio || 1,
engineType: H.map.render.RenderEngine.EngineType.P2D
}
);
...
// an H.map.Polygon object we prepared earlier
polygonObject.addEventListener("contextmenu", handleContextMenu)
...
function handleContextMenu(evt) {
// Don't do anything if the map itself is right-clicked/long-pressed
if (evt.target === map) {
return;
}
if (evt.target instanceof H.map.Polygon) {
// Polygon-specific context menu items
evt.items.push(new H.util.ContextItem({ label: "ABC123" }));
evt.items.push(H.util.ContextItem.SEPARATOR);
evt.items.push(new H.util.ContextItem({ label: "Do something", callback: function () { doSomething(evt) } }));
}
}
Это работает нормально, отображает контекстное меню, когда щелкают правой кнопкой мыши полигональный объект, и закрывает себя, если нажимается где-то еще на карте. Однако контекстное меню не закрывается, если пользователь щелкает или взаимодействует с другим элементом на странице за пределами карты.
Мне не удалось найти никакой документации о том, как добиться такого поведения, и пример, который использует HERE Maps, также не закрывает контекстное меню, если щелкнуть где-то за пределами карты. Есть ли способ закрыть контекстное меню на карте программно или автоматически, если происходит взаимодействие с другим элементом страницы?