系统的梳理一下自己之前做过的东西,同时也是为以后做准备吧
集成步骤(省略了在百度的个人中心创建)
在Application中添加
//在使用SDK各组件之前初始化context信息,传入ApplicationContext
SDKInitializer.initialize(this);
//自4.3.0起,百度地图SDK所有接口均支持百度坐标和国测局坐标,用此方法设置您使用的坐标类型.
//包括BD09LL和GCJ02两种坐标,默认是BD09LL坐标。
SDKInitializer.setCoordType(CoordType.BD09LL);
然后就是代码
在onCreate的方法中调用getLocationClientOption()即可
private LocationClientOption mOption;//定位属性
private LocationClient client;//定位监听
/***
* 定位选项设置
* @return
*/
public void getLocationClientOption() {
mOption = new LocationClientOption();
mOption.setLocationMode(LocationClientOption.LocationMode.Hight_Accuracy);//可选,默认高精度,设置定位模式,高精度,低功耗,仅设备
mOption.setCoorType("bd09ll");//可选,默认gcj02,设置返回的定位结果坐标系,如果配合百度地图使用,建议设置为bd09ll;
mOption.setScanSpan(2000);//可选,默认0,即仅定位一次,设置发起连续定位请求的间隔需要大于等于1000ms才是有效的
mOption.setIsNeedAddress(true);//可选,,默认不需要
mOption.setIsNeedLocationDescribe(true);//可选,设设置是否需要地址信息置是否需要地址描述
mOption.setNeedDeviceDirect(true);//可选,设置是否需要设备方向结果
mOption.setLocationNotify(true);//可选,默认false,设置是否当gps有效时按照1S1次频率输出GPS结果
mOption.setIgnoreKillProcess(true);//可选,默认true,定位SDK内部是一个SERVICE,并放到了独立进程,设置是否在stop的时候杀死这个进程,默认不杀死
mOption.setIsNeedLocationDescribe(false);//可选,默认false,设置是否需要位置语义化结果,可以在BDLocation.getLocationDescribe里得到,结果类似于“在北京天安门附近”
mOption.setIsNeedLocationPoiList(false);//可选,默认false,设置是否需要POI结果,可以在BDLocation.getPoiList里得到
mOption.SetIgnoreCacheException(false);//可选,默认false,设置是否收集CRASH信息,默认收集
mOption.setOpenGps(true);//可选,默认false,设置是否开启Gps定位
mOption.setIsNeedAltitude(false);//可选,默认false,设置定位时是否需要海拔信息,默认不需要,除基础定位版本都可用
client = new LocationClient(this);
client.setLocOption(mOption);
client.registerLocationListener(BDAblistener);
client.start();
}
/***
* 接收定位结果消息,并显示在地图上
*/
private BDAbstractLocationListener BDAblistener = new BDAbstractLocationListener() {
@Override
public void onReceiveLocation(BDLocation location) {
//定位方向
mCurrentLat = location.getLatitude();
mCurrentLon = location.getLongitude();
int locType = location.getLocType();
Log.e("------------", "onReceiveLocation: 错误码 " + locType);
Log.e("---------", "onReceiveLocation: 个人定位 " + mCurrentLat + " " + mCurrentLon);
}
};
注意在百度地图开发平台里面有个坑
控制台中会让你填写两个SHA1,分别是开发版和发布版
两个都要填写,开发版:
如果是开发版的sha1值我们直接默认用安卓自带的签名,具体操作:
输入cd .android,定位到.android文件夹下
输入keytool -list -v -keystore debug.keystore,
输入密钥口令:密钥口令是android
会得到三种指纹证书,选取SHA1类型的证书
图中的SHA1值,就是我们需要获取的开发版的SHA1值。
以上我们完成了开发版SHA1值的获取。
接着来看发布版sha1值的获取。
发布版我是直接看的日志填写的
当我们运行的时候会在日志中告诉我们
如图