javascript - 关于百度地图覆盖物的事件绑定,marker的dom节点神隐了?
高洛峰
高洛峰 2017-04-11 10:20:02
[JavaScript讨论组]

最近用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') ------------ 正常

高洛峰
高洛峰

拥有18年软件开发和IT教学经验。曾任多家上市公司技术总监、架构师、项目经理、高级软件工程师等职务。 网络人气名人讲师,...

全部回复(1)
伊谢尔伦

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

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号