2 shenzhinishimeng shenzhinishimeng 于 2017.01.12 11:22 提问

android百度地图定位遇到的bug

集成百度定位,要在程序启动的时候就获取到位置信息,我就直接写到application节点里面,在初始化的时候开启定位,在接收到定位信息停止定位,这样的话只能定位一次,我想能不能让他多定位几次,我果断把stop方法去掉了.结果一直返回百度的默认值,有什么方法可以解决吗.
public class BaiLingApplication extends Application {
public LocationClient mLocationClient;
public MyLocationListener mMyLocationListener;
@Override
public void onCreate() {
super.onCreate();

mLocationClient = new LocationClient(this.getApplicationContext());
mMyLocationListener = new MyLocationListener();
mLocationClient.registerLocationListener(mMyLocationListener);
InitLocation();
mLocationClient.start();

if (!GlobalVar.isPrintLog) {
AppCrashHandler handler = AppCrashHandler.getInstance();
handler.init(getApplicationContext());
Thread.setDefaultUncaughtExceptionHandler(handler);
}

initSD();
}
/**

  • 实现定位回调监听 */ public class MyLocationListener implements BDLocationListener {

@Override
public void onReceiveLocation(BDLocation location) {
GlobalVar.city_location = location.getCity();
Double longitude = location.getLongitude(); // 经度
Double latitude = location.getLatitude(); // 纬度
GlobalVar.longitude_latitude = String.valueOf(longitude) + "," + String.valueOf(latitude);
LogUtils.i(GlobalVar.longitude_latitude);
//如果去掉stop 的话.一直返回百度的默认值.不去掉的话只能定位一次,是key不对还是sha1值不对还是有其他的原因
mLocationClient.stop();
}

}

private void InitLocation() {
LocationClientOption option = new LocationClientOption();
option.setLocationMode(LocationMode.Hight_Accuracy);// 设置定位模式
option.setCoorType("bd09ll");// 返回的定位结果是百度经纬度,默认值gcj02
option.setScanSpan(5000);// 设置发起定位请求的间隔时间为5000ms
option.setIsNeedAddress(true);// 设置开启反地理编码
option.setEnableSimulateGps(true);// 设置是否需要过滤GPS仿真结果,默认需要
mLocationClient.setLocOption(option);
}

1个回答

JIANLIPP
JIANLIPP   2017.01.12 15:24

这个不stop就是会一直返回,返回的是当前定位的值吧,可以把定位封装到一个类里,需要的时候调一下,写个回调获取当前定位值也可以。

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!