百度定位开发onReceiveLocation回调两次

public void startLoaction(final BDLocationListener locationListener) {
mLocClient = new LocationClient(mContext.getApplicationContext());
        mLocClient.registerLocationListener(new BDLocationListener() {
            @Override
            public void onReceiveLocation(BDLocation bdLocation) {
                locationTip(bdLocation);// 调用了2次
                locationListener.onReceiveLocation(bdLocation);
            }
        });
        LocationClientOption option = new LocationClientOption();
        option.disableCache(true);//禁止启用缓存定位
        option.setOpenGps(true);// 打开GPS
        option.setCoorType("bd09ll"); // 设置坐标类型
        option.setPriority(LocationClientOption.GpsFirst);
        // 设置网络优先(不设置,默认是gps优先)
        option.setIsNeedLocationPoiList(true);
        option.setIsNeedAddress(true);
// 返回的定位结果包含地址信息
        option.setAddrType("all");
        int scanTime = KeyConstant.locationScan;
        Logger.e("定位的时间间隔",scanTime+"");
        option.setScanSpan(scanTime);// 设置发起定位请求的间隔时间为5s(小于1秒则一次定位)
        mLocClient.setLocOption(option);

        if(!mLocClient.isStarted()){
            mLocClient.start();
        }}

onReceiveLocation会回调两次,避免方法使用最新的百度SDK,在5.1版本时百度首次定位会触发这样的逻辑,只是为了加速首次定位的速度。解决办法在回调后stop()。但是百度并不建议直接stop(),所以说最好的方法还是自己写一个boolean值进行判读,onReceiveLocation调用一次时候就将boolean改变。从而保证了onReceiveLocation内信息只走了一次。http://bbs.lbsyun.baidu.com/forum.php?mod=viewthread&tid=109126&extra=page%3D1

转载于:https://my.oschina.net/chenxinyu/blog/744339

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值