专栏名称: CatCoder
CatCoder写字的地方,写一些自己的所思所想
目录
相关文章推荐
昆明信息港  ·  突发!一飞机失联! ·  昨天  
云南新闻网  ·  迪庆冰雪游“热”力十足 ·  3 天前  
51好读  ›  专栏  ›  CatCoder

百度地图自定义覆盖物手机端无法触发click问题

CatCoder  · 公众号  ·  · 2017-07-28 10:10

正文

最近使用百度地图做一个页面,需要自定义一个覆盖物,样式比较可控,一切做好之后有个需求改变,就是点击覆盖物跳转到一个URL,想想这个还是很简单的嘛,一分钟搞定,结果,😂。

使用常规的百度绑定事件方法,完全无法触发,重写自定义覆盖物的方法,代码如下:

1

2

3

MyInfo.prototype.addEventListener(e, fun) {

this._div['on' + e] = fun;

}


调用的时候使用:

1

2

3

mySquare. addEventListener('click', function() {

console.log('mySquare click is work!');

})


这种方法在pc端是可以的,但是手机端是无效的。因为百度地图手机端默认的时间是拖动,屏蔽了其他事件,原生的 Marker 是可以触发的,但是自定义的覆盖物是不可以的,可能是考虑自定义覆盖物可能尺寸比较大吧。

解决方法,一种是禁用拖动,使用: mapdisableDragging() 禁用拖拽,之前的方法就可以用了,但这样做绝大多数程序是不适用的。

第二中种解决方式是使用百度提供的一个开源方案: 事件包装器 ,百度的文档有问题,源代码指向是: http://api.map.baidu.com/library/EventWrapper/1.2/src/EventWrapper.js ,是正确的,压缩代码执行就不对了,真是莫名其妙。

引入上面的链接,就可以使用了。

用法如下:

1







请到「今天看啥」查看全文