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

时间:2016-08-02 04:55:38

标签: javascript maps here-api

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

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

  • pointerdown
  • pointerup
  • pointermove
  • pointerenter
  • pointerleave
  • pointercancel
  • 的dragstart
  • dragend
  • 抽头
  • dbltap

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

  

当用户右键单击或长按地图对象时,应触发ContextMenuEvent。

上面列出的哪些事件会构成“右键单击”或“长按”事件,并收到此ContextMenuEvent个对象?

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

2 个答案:

答案 0 :(得分:1)

我一时兴起尝试附加到事件类型contextmenu并且它已经工作了!显然,这只是他们的文档中遗漏的。

  • 文本菜单

答案 1 :(得分:0)

如果您已经在侦听“点击”事件,则还有一种处理右键单击的替代方法。在点击事件对象的 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 Maps 将来可能会改变或打破这种行为。