Esri ArcGIS JS API 4.x版本MapView调用emit触发点击/双击事件失效问题
ArcGIS JS API 4.20 模拟触发MapView点击/双击事件说明
4.20版本支持通过MapView.emit方法触发点击、双击事件,升级后失效的核心原因是4.x版本的事件参数结构和3.x存在本质差异,直接复用3.x写法无法正常运行。
正确实现代码
// 需确保MapView实例已完成加载,建议放在view.when()回调内执行 const screenPoint = { x: 200, // 目标点击位置相对于MapView容器左上角的水平像素值 y: 300 // 目标点击位置相对于MapView容器左上角的垂直像素值 }; // 转换得到合规的地图坐标点,自动适配当前视图空间参考 const mapPoint = view.toMap(screenPoint); // 构造完整的模拟事件参数 const simulateEventParams = { mapPoint, screenPoint, stopPropagation: () => {}, preventDefault: () => {} }; // 触发单击事件 view.emit("click", simulateEventParams); // 触发双击事件 view.emit("double-click", simulateEventParams);
注意事项
- 必须传入
mapPoint和screenPoint两个核心参数,缺少任意一个都会导致监听回调无法正常识别触发事件 - 若事件监听逻辑中需要读取点击命中的要素、图形等属性,需要手动将对应属性补充到
simulateEventParams对象中 - 禁止在视图未完成加载(
view.when()未回调)时调用emit方法,该场景下事件不会被触发
内容的提问来源于stack exchange,提问作者Jethik
相关产品推荐
相关产品推荐

