微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何以编程方式关闭 HERE Maps 上下文菜单?

如何解决如何以编程方式关闭 HERE Maps 上下文菜单?

我在一个带有多选下拉菜单和几个按钮的简单网页上显示了一张 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) } }));
    }
}

这很好用,右键单击多边形对象时会显示上下文菜单,如果点击地图上的其他位置,则会自行关闭。但是,如果用户在地图外部点击页面上的另一个元素或与其交互,则上下文菜单不会消失。

我找不到有关如何实现此行为的任何文档,并且如果单击地图外的某处,example that HERE Maps uses 也不会关闭上下文菜单。如果与另一个页面元素交互,有没有办法以编程方式或自动方式关闭地图上的上下文菜单

解决方法

这有点麻烦,但是您可以通过在页面中找到带有 div 类的 h_context_menu 并将其删除来手动从 DOM 中删除上下文菜单。这可能会对 UI 类产生一些意想不到的副作用,但从我的简短测试来看似乎可以正常工作。

使用 JQuery:

$("div.h_context_menu").remove()

使用 ES6:

document.querySelector("div.h_context_menu").remove()

使用 vanilla JavaScript(与 Internet Explorer 兼容):

var el = document.querySelector("div.h_context_menu");
el.parentNode.removeChild(el);

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。