Skip to content

Conversation

@deyihu
Copy link
Collaborator

@deyihu deyihu commented Nov 15, 2024

fix #2460

@deyihu deyihu requested a review from fuzhenn November 15, 2024 06:07
@fuzhenn
Copy link
Member

fuzhenn commented Nov 29, 2024

这个修改会不会影响其他的鼠标操作?
比如鼠标在地平线之上的地图旋转缩放,比如GLTF或3dtiles模型的绘制超过地平线以后,也允许鼠标点选他或者查询鼠标交互点的坐标等

@deyihu
Copy link
Collaborator Author

deyihu commented Nov 29, 2024

  • 地图的旋转和缩放(Map.Drag,Map.ScrollWheelZoom)不是在个文件里处理的,这个文件是处理地图的dom事件的
  • 即使影响了Geometry的点选也应该这么做,因为没有坐标的事件对象是不合法的,不应该往下传递,当然没有了坐标其他的图层也没法子点选(图层的点选也要依赖事件里的coordinate)
  • 如果天空盒里的Geometry需要被点选,哪也应该从地图生成坐标入手,而不是这里,这里这时阻止非法的事件传递而已,比如想地图整个容器里都可以点选,那应该从点选的位置生成坐标入手,而不是这里
    @fuzhenn

@fuzhenn
Copy link
Member

fuzhenn commented Nov 29, 2024

以前有几个相关的PR改过这个逻辑:

#2104

https://github.com/maptalks/maptalks.js/pull/2419/files#diff-4eae2fd2e7ed6b1bf277509e3194e6b6b9d9682945fbe6845be87724371051e1L283

确实可以过滤掉map范围之外的事件,但同时需要保证以下两个特性:

  • 鼠标能在地图范围以外仍能正常拖拽,缩放和旋转地图
  • 鼠标点击在地图范围以外,仍然能正常抛出"dom:"开头的事件,例如 "dom:mousedown", "dom:click"等

@deyihu
Copy link
Collaborator Author

deyihu commented Nov 30, 2024

已经测试过了,并添加了测试用例

@fuzhenn fuzhenn merged commit d4ccf5f into maptalks:master Dec 3, 2024
1 check passed
@deyihu deyihu deleted the 2460 branch December 3, 2024 10:46
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

核心库解决鼠标在地图范围外空指针问题

2 participants