gpt4 book ai didi

javascript - ARCGIS Javascript 顶点自定义右键单击事件可能吗?

转载 作者:塔克拉玛干 更新时间:2023-11-02 21:17:03 24 4
gpt4 key购买 nike

我正在使用 ARCGIS Javascript API 并尝试覆盖形状顶点的默认右键单击行为。

在 ESRI 的帮助中,它确实列出了 onVertexClick 事件,但是从这里看来,似乎没有办法确定这是右键单击事件还是左键单击事件,因此我不能只覆盖右键单击。 https://developers.arcgis.com/javascript/jsapi/edit.html

我正在尝试将右键单击行为设置为仅删除当前节点/顶点,而不是显示带有删除选项的菜单。

编辑这是 ARCGIS api 中存在的当前事件。

this.eventsList.push(dojo.connect(this._editToolbar, 'onVertexClick', $.proxy(this.addCustomVertexClickEvent, this)));

此事件已在 API 中,但它不会返回任何方式让我确定左/右单击。

您的评论“监听点击事件然后测试 MouseEvent 对象的按钮属性”会起作用,但是我实际上无法直接向顶点添加点击事件,因为它们在 ARCGIS api 代码中。

最佳答案

对于任何正在寻找一种方法来做到这一点而无需四处乱窜的人。你可以在主体上监听“contextmenu”(右键单击)事件,在“contextmenu”处理程序中设置一个标志让应用程序知道当前状态。使用“mousedown”、“mouseup”组合模拟对“vertex handle”的点击事件。在“vertex-click”处理程序中检查在“contextmenu”处理程序中设置的右键单击标志

var editToolbar = new Edit(map, options);
var rightClick;

$('body').on('contextmenu', function(e) {
var target = e.target;
if(target.tagName === 'circle') {
// We only care about this event if it targeted a vertex
// which is visualized with an SVG circle element
// Set flag for right click
rightClick = true;
// Simulate click on vertex to allow esri vertex-click
// to fill in the data for us
var mouseDownEvt = new MouseEvent('mousedown', e.originalEvent);
target.dispatchEvent(mouseDownEvt);
var mouseUpEvt = new MouseEvent('mouseup', e.originalEvent);
target.dispatchEvent(mouseUpEvt);
// Since this event will be handled by us lets prevent default
// and stop propagation so the browser context menu doesnt appear
e.preventDefault();
e.stopPropagation();
}
});

editToolbar.on('vertex-click', function(e) {
if(rightClick) {
// Handle the right click on a vertex
rightClick = null;
}
});

关于javascript - ARCGIS Javascript 顶点自定义右键单击事件可能吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25893175/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com