毛豆啊 2017-05-02 03:22 采纳率: 50%
浏览 2540
已结题

Android调用百度定位的SDK进行定位,位置已经移动了,但是定位到的坐标没有变化?

我现在做的是在应用中每次拍照或是摄像后,有一个保存按钮,点击保存的时候开启定位服务,有坐标信息后在定位信息的回调中发送广播,然后接受坐标信息。但是现在遇到的一个问题是地理位置已经移动了,但是返回的坐标信息却没有改变。比如在地点A拍摄了一张照片,我点击了保存,然后此时定位到一个经纬度信息为11,6.2345,39.2345。然后我移动到地点B(地点B与地点A两者相距5km),拍摄了一张照片,点击保存后,返回的经纬度信息还是11,6.2345,39.2345。谁能解释下原因啊。我开启定位的代码是放在了一个继承了Application的MyApplicationLocation类中,每次开启定位使用如下方式开启:MyApplicationLocation.getInstance.onLineRequest();然后剩下的就是在onReceiveLocation(BDLocation location)这个回调方法中发送定位到的坐标信息了。在设置参数时setScanSpan(1000)设置为了1000,所以并不是仅定位一次,再有就是每次点击保存图片时都会重新设置一遍啊,我刚去看了下百度地图SDK的官方api,也没有发现类似的参数或是方法,其中有一个方法是getLastKnownLocation(),官方的说明是:同步定位,返回最近一次定位结果,但是我每次定位都是新发出一个定位请求啊,求解下定位信息重复的原因,是因为缓存的原因吗?有没有什么解决方法?谢谢啦。(还有就是想问下,百度定位SDK中的离线定位的定义是什么啊?是指使用什么方式定位还是指离线定位是使用之前的地理位置信息)

在MyApplicationLocation中部分代码如下:

public LocationClient mLocationClient = null;
private static MyApplicationLocation instance = null;

 @Override
public void onCreate() {
    super.onCreate();
    instance = this;
    mLocationClient = new LocationClient(getApplicationContext()); // 声明LocationClient类
    mLocationClient.registerLocationListener(this); // 注册监听函数
}

public static MyApplicationLocation getInstance() {
    return instance;
}

public void onLineRequest() {
    setOption();
    start();
    if (mLocationClient != null && mLocationClient.isStarted()) {
        mLocationClient.requestLocation(); // 发起定位,异步获取当前位置
    }
}

private void setOption() {
        LocationClientOption option = new LocationClientOption();
        option.setLocationMode(LocationMode.Hight_Accuracy);// 可选,默认高精度,设置定位模式,高精度,低功耗,仅设备
        option.setCoorType("bd09ll");
        option.setScanSpan(span);// 可选,默认0,即仅定位一次,设置发起定位请求的间隔需要大于等于1000ms才是有效的
        option.setIsNeedAddress(true);// 可选,设置是否需要地址信息,默认不需要
        option.setOpenGps(true);// 可选,默认false,设置是否使用gps
        option.setLocationNotify(true);
        option.setIsNeedLocationDescribe(true);
        option.setIsNeedLocationPoiList(true);
        option.setIgnoreKillProcess(false);
        option.SetIgnoreCacheException(false);
        option.setEnableSimulateGps(false);
        mLocationClient.setLocOption(option);
    }

    public void start() {
        if (mLocationClient != null && !mLocationClient.isStarted()) {
            mLocationClient.start();
        }
    }

  • 写回答

2条回答 默认 最新

  • qq_36558707 2021-09-16 11:56
    关注

    我也遇到了,是因为没有GPS信号会一直现实缓存的网络定位,经纬度更新慢,或者走很远才更新。我也在找方法。

    评论

报告相同问题?

悬赏问题

  • ¥60 版本过低apk如何修改可以兼容新的安卓系统
  • ¥25 由IPR导致的DRIVER_POWER_STATE_FAILURE蓝屏
  • ¥50 有数据,怎么建立模型求影响全要素生产率的因素
  • ¥50 有数据,怎么用matlab求全要素生产率
  • ¥15 TI的insta-spin例程
  • ¥15 完成下列问题完成下列问题
  • ¥15 C#算法问题, 不知道怎么处理这个数据的转换
  • ¥15 YoloV5 第三方库的版本对照问题
  • ¥15 请完成下列相关问题!
  • ¥15 drone 推送镜像时候 purge: true 推送完毕后没有删除对应的镜像,手动拷贝到服务器执行结果正确在样才能让指令自动执行成功删除对应镜像,如何解决?