使用HERE地图,我想在右键单击(或长按)时显示上下文菜单。
开发人员指南将valid mouse/touch events列为:
这意味着我必须查看tap
事件上的检查按钮,但API文档还描述了一个ContextMenuEvent对象,说明:
当用户右键单击或长按地图对象时,应触发ContextMenuEvent。
上面列出的哪些事件会构成“右键单击”或“长按”事件,并收到此ContextMenuEvent
个对象?
在HERE地图here之上有一个上下文菜单的功能示例,但在当前文档中没有提到这一点,它似乎使用旧版本的API。能否生成上下文菜单?
答案 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 将来可能会改变或打破这种行为。