在 HERE 地图上显示上下文菜单

Display context menu over HERE map

使用 HERE 地图,我想在右键单击(或长按)时显示上下文菜单。

开发人员指南将 valid mouse/touch events 列为:

这意味着我必须查看 tap 事件上的检查按钮,但 API 文档还描述了一个 ContextMenuEvent 对象,声明:

ContextMenuEvent should be fired, when a user right-clicks or longpresses on a map object.

上面列出的哪个事件构成了 "right-click" 或 "longpress" 事件,接收到这个 ContextMenuEvent 对象?

在 HERE 地图上有一个上下文菜单的功能示例 here,但在当前文档中没有提及,它似乎使用了旧版本的 API。是否删除了生成上下文菜单的功能?

一时兴起,我尝试附加到事件类型 contextmenu,结果成功了!显然这只是他们的文档中缺少的。

  • 上下文菜单

如果您已经在侦听“点击”事件,则可以使用另一种方法来处理右键单击。在点击事件对象上的 originalEvent 属性 中,HERE Maps 向 PointerEvent 对象添加了一个 which 属性,这似乎表明使用了哪个按钮来触发事件。左键单击的值为 1,中键单击的值为 2,右键单击的值为 3

考虑到这一点,您可以通过执行类似于以下的操作来修改点击事件以处理不同的鼠标按钮:

map.addEventListener("tap", function (evt) {
    switch (evt.originalEvent.which) {
        case 1: // Left-click
            handleLeftClick(evt);
            break;
        case 3: // Right-click
            handleRightClick(evt);
            break;
        default:
            // Do something else for other buttons, if you want
            break;
    }
});

请记住,which 不是 PointerEvent interface 的一部分,因此 HERE 地图将来可能会更改或破坏此行为。