百度地图的学习

目前项目要做一个定位的项目,进入程序后获取位置,然后退出程序后在后台按照一定频率定位。

之前做过基站定位的项目,获取LAC等值取得基站位置,这次本来也打算这么做,结果google的获取位置的接口废弃了。

考虑到程序中需要地图显示,而google 之前用过的地图实在太恶心,偏移太大,故研究了下百度地图,准备使用百度地图的接口。


结果发现百度在Service中无法定位,locationClient.isstarted == false


考虑一直开启locationListener,但是一直出现send handler in a dead thread 警告,不堪其扰,而且怎样把消息传递到Service中没想到怎么解决,因为Service中handler的生存时间很短,并不一定能和locationListener重合,这块实在是因为我太菜了,不知道怎么办。


最后还是用回了Google的网络定位。。唉,壮哉我大Google

private void getGPSLoc() {
// TODO Auto-generated method stub
System.out.println("GPS 记录开始!");
locationManager = (LocationManager) this.getSystemService(Context.LOCATION_SERVICE);
Criteria criteria = new Criteria();
criteria.setAccuracy(Criteria.ACCURACY_FINE);
criteria.setAltitudeRequired(false);
criteria.setBearingRequired(false);
criteria.setCostAllowed(true);
criteria.setPowerRequirement(Criteria.POWER_MEDIUM);
String provider = locationManager.getBestProvider(criteria, true);
Location location = locationManager.getLastKnownLocation(provider);
if(location!=null)
{
gps_latitude = (float) location.getLatitude();
System.out.println("GPS定位 latitude:" + gps_latitude);
gps_longitude = (float) location.getLongitude();
System.out.println("GPS定位 longitude:" + gps_longitude);
}else{
location = locationManager.getLastKnownLocation(LocationManager.NETWORK_PROVIDER);
if(settings.contains("lat")){
    settings.edit().remove("lat").remove("lon");
   }


if(location != null){
gps_latitude = (float) location.getLatitude();
System.out.println("基站、WIFI定位 latitude:" + gps_latitude);


gps_longitude = (float) location.getLongitude();
System.out.println("基站、WIFI定位 longitude:" + gps_longitude);

settings.edit().putFloat("lat", gps_latitude).putFloat("lon", gps_longitude);
}else{
System.out.println("暂时无法定位,采用历史数据");
gps_latitude = settings.getFloat("lat", 39.954232f);
gps_longitude = settings.getFloat("lon", 116.372305f);
}
}

中间用sharedPreference记录了下最近一次定位到的经纬度,频繁操作肯定会造成一些问题或者造成数据碎片之类的,但是具体影响未知。


最后求指教java.lang.RuntimeException: Handler (com.baidu.vi.i) {413d28c0} sending message to a Handler on a dead thread到底是怎样造成的


贴一篇底层的AGPS的百度文库链接供日后学习

http://wenku.baidu.com/view/8db86c8b680203d8ce2f2467

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值