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

Posted

技术标签:

【中文标题】在 HERE 地图上显示上下文菜单【英文标题】:Display context menu over HERE map 【发布时间】:2016-08-02 04:55:37 【问题描述】:

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

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

指针向下 指针 指针移动 指针输入 指针离开 指针取消 拖动启动 拖动 拖累 点击 dbltap

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

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

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

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

【问题讨论】:

【参考方案1】:

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

上下文菜单

【讨论】:

是的,列表似乎与 API 参考不同步:developer.here.com/javascript-apis/documentation/v3/maps/…【参考方案2】:

如果您已经在监听“点击”事件,还有另一种处理右键单击的方法。在点击事件对象的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 地图将来可能会更改或破坏此行为。

【讨论】:

以上是关于在 HERE 地图上显示上下文菜单的主要内容,如果未能解决你的问题,请参考以下文章

iOS13上下文菜单点击时如何显示或导航到当前的查看视图

如何在 Windows 11 的 Windows 资源管理器中添加“Git Bash Here”上下文菜单选项?

如何在 TableView 中的选定项目上显示上下文菜单

带有CustomAdapter的Listview项目上的上下文菜单android不显示

如何关闭material UI上下文菜单,而不显示默认的上下文菜单?

从后面的代码显示上下文菜单