这篇文章也是我自己为了总结之前的笔记而写的,因为之前有用到过百度定位的SDK,所以就写了这篇文章,其实大家可以参考一下百度定位官方的文档,这里放上地址链接百度SDK文档
1.首先,你需要创建一个百度地图开放平台的账号,之后按照文档要求获取开发密钥,之后jar包,so包的导入等等环境的配置工作,按照文档,很简单的,也可以网上查找资料,这里就不在过多的赘述了,下面主要介绍定位信息的获取;
2.设置一些将要用到的类对象 参数等,例如我设置了部分我用到的
// ***************************Baidu定位***********************
// 创建定位服务客户端的引用
public LocationClient mLocationClient = null;
// 声明一个对于定位的观察者对象
private MyLocationListener myListener = new MyLocationListener();
public ArrayList<BDLocation> locations = new ArrayList<BDLocation>();
//获得定位时间
private String locationTime;
//获得经度坐标
private Double locationLongitude;
//获得纬度坐标
private Double locationLatitude;
//获得详细地址信息
private String locationAddrStr;
//获取位置语义化信息,没有的话返回NULL
private String locationDescribe;
//回调的百度坐标类,内部封装了如经纬度、半径等属性信息
private BDLocation mBdLocation;
// ***************************Baidu定位***********************
3.初始化LocationClient类
**
* 初始化百度定位
*/
private void initBaidu() {
// 定位用声明LocationClient类
mLocationClient = new LocationClient(getApplicationContext());
mLocationClient.registerLocationListener(myListener);
initLocation();
mLocationClient.start();
}
其中initLocation()方法配置定位SDK参数
/**
* 设置定位参数包括:定位模式(高精度定位模式、低功耗定位模式和仅用设备定位模式),
* 返回坐标类型,是否打开GPS,是否返回地址信息、位置语义化信息 POI信息等等。
*/
private void initLocation() {
LocationClientOption option = new LocationClientOption();
option.setLocationMode(LocationClientOption.LocationMode.Hight_Accuracy);
// 可选,默认高精度,设置定位模式,高精度,低功耗,仅设备
option.setCoorType("bd09ll");
// 可选,默认gcj02,设置返回的定位结果坐标系
int span = 1000;
option.setScanSpan(span);
// 可选,默认0,即仅定位一次,设置发起定位请求的间隔需要大于等于1000ms才是有效的
option.setIsNeedAddress(true);
// 可选,设置是否需要地址信息,默认不需要
option.setOpenGps(true);
// 可选,默认false,设置是否使用gps
option.setLocationNotify(true);
// 可选,默认false,设置是否当GPS有效时按照1S/1次频率输出GPS结果
option.setIsNeedLocationDescribe(true);
// 可选,默认false,设置是否需要位置语义化结果,可以在BDLocation.getLocationDescribe里得到,结果类似于“在北京天安门附近”
option.setIsNeedLocationPoiList(true);
// 可选,默认false,设置是否需要POI结果,可以在BDLocation.getPoiList里得到
option.setIgnoreKillProcess(true);
// 可选,默认true,定位SDK内部是一个SERVICE,并放到了独立进程,设置是否在stop的时候杀死这个进程,默认不杀死
option.SetIgnoreCacheException(false);
// 可选,默认false,设置是否收集CRASH信息,默认收集
option.setEnableSimulateGps(false);
// 可选,默认false,设置是否需要过滤GPS仿真结果,默认需要
mLocationClient.setLocOption(option);
}
4.创建定位监听的观察类MyLocationListener要继承自BDAbstractLocationListener,用于实现对定位的监听,同时你也可以将之前声明的一些参数,放到这里,来获取你所需要的定位信息,核心代码如下:
/**
* 创建定位监听的观察类并继承自BDAbstractLocationListener
*/
public class MyLocationListener extends BDAbstractLocationListener {
//接受到的定位信息,BDLocation中包含定位的一些信息,例如街道名称/城市/经纬度
@Override
public void onReceiveLocation(BDLocation bdLocation) {
//将之前声明的一些参数放到这里,方便控件展示时,直接使用即可
mBdLocation = bdLocation;
locationTime = bdLocation.getTime();
locationLongitude = bdLocation.getLongitude();
locationLatitude = bdLocation.getLatitude();
locationAddrStr = bdLocation.getAddrStr();
locationDescribe = bdLocation.getLocationDescribe();
Log.i("定位信息--------", locationTime + locationLongitude +
locationLatitude + locationAddrStr + locationDescribe);
mLocationClient.stop();
}
}
5.获取定位信息,在所需要的地方只需要发起定位即可(此为点击一次定位一次)
mLocationClient.start();
然后将获取到的定位信息展示在特定控件.
烦请大家尊重原创者版权,转载请标明出处 http://blog.csdn.net/JOYU_/article/details/79298144