关于百度地图覆盖物的事件绑定,marker的dom节点神隐了?

发布于 2022-09-02 15:38:26 字数 2213 浏览 12 评论 0

最近用H5做IOSapp,其中基于百度地图js开发时遇到几个问题,望各位大牛指教。
下面代码是在请求商户经纬度,然后转换后在地图上markdown商户标签,然后给标签做click绑定
7767ba68b3e6cb046fabbb243a2882b4_r.png
百度地图api绑定的写法是marker.addEventListener('click', function(e){ alert(123)});这样写在PC上是没问题,放在ipad上就会有个很奇怪的BUG,第一次弹窗关闭后点击任意位置会再次触发弹窗123。用alert(e.domEvent.eventPhase)测试,两次弹的都是2,说明是处于目标时触发,用e.domEvent.stopPropagation()排除并不是捕获冒泡阶段重复触发。
后来发现marker有个V属性,指向标签在地图上的dom节点,是一个span,直接给它绑定touchstart事件的话就不会弹窗两次,解决问题但是没搞懂原因。

-------------------------我是分割线-----------------------------

以上是前提,真正的问题来
调试接口实际数据时发现后台的经纬度不需要转换,于是注释了转换入口convertor.translate(pointArr, 3, 5, translateCallback);代码如下
49de1c4f259a29d6c2e55cdee228abd8_r.png
这时就有一个想不透的问题:addEventListener绑定不成功因为marker.V是null,明明打印marker时属性V是有值的,打印marker.V就变成了null,打印截图如下
e2dfdff2954c544d4ea3ff53ad3b13b2_r.png
真是见鬼了,重点是走转换那边的话是没问题的,正常打印如下
d29bd5d5daa7d8665b5e0e786bf1433c_r.png
这神马情况???
384210307ca30f1b8c23960069a9486e_r.jpg

marker.V.addEventListener('touchstart' ------------ 正常
marker.addEventListener('touchstart' ------------ 没反应
marker.addEventListener('click' ------------ 关闭弹窗后任意点会再弹一次
marker.V.addEventListener('click' ------------ 没反应
marker.V.addEventListener('tap' ------------ 没反应
marker.addEventListener('tap' ------------ 没反应

$(marker.V).on('tap') ------------ 关闭弹窗后任意点会再弹一次
$(marker.V).on('click') ------------ 正常
$(marker.V).on('touchstart') ------------ 正常

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

背叛残局 2022-09-09 15:38:26

我也遇到了,有解决方法没啊?

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文