microlcl
microlcl
  • 发布:2015-08-27 15:31
  • 更新:2020-03-11 16:06
  • 阅读:7452

用plus.geolocation.watchPosition启动的监听器,用plus.geolocation.clearWatch()根本清不掉

分类:HTML5+

代码如下,启动一个监听器:
watchId = plus.geolocation.watchPosition( function ( p ) {
console.log( "监听位置变化信息:" );
//geoInf( p );
}, function ( e ) {
console.log( "监听位置变化信息失败:"+e.message );
},{provider:'baidu',enableHighAccuracy:true});

然后用
plus.geolocation.clearWatch(watchId)
停掉这个监听器。
结果发现根本停不掉!
并且我发现这个watchId,根本不是文档上说的是个Number,我得到的值居然是类似这样:
timer101440659849457
是字符串timer 和一个数字的结合体。
http://www.dcloud.io/docs/api/zh_cn/geolocation.html#plus.geolocation.watchPosition

这个是5+的Bug吗?
我需要怎么做,才能够停掉这个监听器?卡了3天了。
烦请帮忙解决一下,不胜感激。

2015-08-27 15:31 负责人:无 分享
已邀请:
microlcl

microlcl (作者)

sorry,应该把上面代码里面的watchPosition的参数provider的值改成system,就能重现这个问题。

如果provider是baidu的话,这个触发器只能run一下,然后就不调用了。百思不得其解。

  • 6***@qq.com

    我也遇到这个问题,你的解决没

    2017-04-18 16:54

H5lite

H5lite - IT行业最怕的就是劳动成果被窃取

最终有解决吗?我也遇到此问题。

操作过程如下:

当调用定位监听成功后,按顺序,关闭定位服务,关闭网络服务,之后通过调用 plus.geolocation.clearWatch(id)无法停止 id=plus.geolocation.watchPosition这个监听。

如何解决呢?

  • H5lite

    解决了

    2017-09-07 11:12

1***@163.com

1***@163.com

楼主怎么解决的,分享下呗

  • 1***@qq.com

    大哥,你解决了没 ,我也是这个问题

    2018-05-18 17:14

1***@qq.com

1***@qq.com

楼主怎么解决的,求教啊,我也是卡在这里了,关了监听还是一直在动

1***@qq.com

1***@qq.com - 90后IT

楼主问题解决了么,感谢分享一下吧,遇到了,解决不了

6***@163.com

6***@163.com

卡了,百度只会监听一次,后续都是无法正常获取了,坑。

苛学加

苛学加 - 向阳而生

这个问题这么久了都还没解决吗?老壳痛!
最开始用的百度定位,第一次启动监听一切正常,但是关闭了就再也启动不了了。
然后改使用系统定位,ios上可以正常开启正常关闭再开启,但是安卓上又关闭不了,出现了“timer101440659849457”...!唉

  • 苛学加

    经过一番测试后发现,虽然返回的“timer....”也是可以正常关闭的;只是监听事件可以重复开启,如果开启了两个就要关闭两次。注意!

    2019-08-14 15:56

z***@163.com

z***@163.com - 架构师

官方写的代码有bug,在clearWatch执行之前就报异常了!只能离线打包自己改改,把clearWatch的处理放到接受参数的前边!

该问题目前已经被锁定, 无法添加新回复