使用 HERE 地图,我想在右键单击(或长按)时显示上下文菜单。
开发人员指南将 有效的鼠标/触摸事件列出为:
这意味着我必须研究检查
tap
事件上的按钮,但 API 文档还描述了一个 ContextMenuEvent 对象,指出:
当用户右键单击或长按地图对象时,应触发 ContextMenuEvent。
上面列出的哪个事件构成“右键单击”或“长按”事件,接收此
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;
}
});