关于百度地图覆盖物的事件绑定,marker的dom节点神隐了?
最近用H5做IOSapp,其中基于百度地图js开发时遇到几个问题,望各位大牛指教。
下面代码是在请求商户经纬度,然后转换后在地图上markdown商户标签,然后给标签做click绑定
百度地图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);代码如下
这时就有一个想不透的问题:addEventListener绑定不成功因为marker.V是null,明明打印marker时属性V是有值的,打印marker.V就变成了null,打印截图如下
真是见鬼了,重点是走转换那边的话是没问题的,正常打印如下
这神马情况???
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 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
我也遇到了,有解决方法没啊?