回到顶部

百度地图JS v1.5 API移动端自定义覆盖物Click事件Bug解决方法

  当你为自定义覆盖物添加了click事件后,你会发现在移动端是无论如何也触发不了的,这算是一个BUG。

  最近我在为我的地图APP开发第二版,在为一个覆盖物添加行为事被困扰到了,自定义覆盖物的click事件竟然无法在iPhone端触发,以及百度地图JS API里面的开源库涉及到自定义覆盖物click事件的均无效。

  我为这个BUG烦恼了很久,直到今天,在QQ群里网友(在此要先感谢这位网友mooring)告诉了我解决方法:iPhone上的自定义覆盖物事件默认会触发map的click事件,如果map定义了click事件的话,自定义覆盖物的click事件也会被动触发。

  具体实现方法可以把自定义覆盖物的click事件改成touchstart或者touchend移动触摸事件,提前map.click事件执行(因为click事件在移动端会延迟个大概300毫秒,具体原因不在这详述,请自行Google),这个时候可以先设置tmpfun = map.onclick;map.onclick = null;在touch事件内设置map.onclick = tmpfun;这样就因为触发了map.click从而变相的触发自定义覆盖物的click事件,但并没有触发map.click“事件”。

具体代码:

tmpfun = map.onclick;
map.onclick = null;
myname.addEventListener("touchstart", function() {    
    map.onclick = tmpfun;
    alert("click");
 });
 
 
评论(12)
热度(2)
©Welkin | Powered by LOFTER