现在APP中用到的定位功能是越来越常见的了,下面就是我在使用百度地图定位的时候走的一些流程,话不多说,直接开始:
1.首先我们要在百度地图开放平台(如果不知道地址,点这里)上注册一个账号并登录,点击API控制台,如下图:
![](https://img.haomeiwen.com/i2120096/02f841eb30384d73.png)
2.点击创建应用,如下图
![](https://img.haomeiwen.com/i2120096/530e436281cd8a09.png)
3.填写你的应用信息,应用名称就是你的APP_NAME,应用类型选择“Android SDK”,如下图
![](https://img.haomeiwen.com/i2120096/60f436fd691c61e4.png)
选择你需要的额服务,下面的SHA1,要通过如下方法去获取:
在AndroidStudio中的获取方法为:
(1)打开as下面的Terminal
(2)输入:D:\AndroidStudioProjects\xiangwai>"D:\android\Java\jre7\bin\keytool.exe "
-list -v -keystore "D:\android\xiangwai\keystore.jks"
注释:(D:\AndroidStudioProjects\xiangwai>"D:\android\Java\jre7\bin\keytool.exe "
)为你的keytool.exe路径;("D:\android\xiangwai\keystore.jks")为你的签名文件的路径,一定不要写错,否则是看不到的。
(3)输入秘钥库口令:签名文件的密码
(4)回车;看到如下信息
![](https://img.haomeiwen.com/i2120096/a721ad90d83ed67c.png)
则表示获取成功,
如上图所示,我们就拿到了SHA1,最后再输入我们项目的包名,点击提交。
5.点击查看应用,就可以看到我们创建的项目了,也获取到APP中需要的key,如下图
![](https://img.haomeiwen.com/i2120096/bbfee9160d7e0c14.png)
�6.接下来就是下载我们需要的sdk啦,点击首页,在开发中选择你需要的sdk,点击相关下载,就可以看到下载sdk的地方,如下图:
![](https://img.haomeiwen.com/i2120096/ad560e070cecc471.png)
7.下载好了之后,就是在项目中的部署了,将下载的sdk里面的将so文件的压缩文件解压出来,把对应架构下的so文件放入开发者自己APP的对应架构下的文件夹中(建议全部放入以提高程序兼容性),将locSDK_6.X.jar文件拷贝到工程的libs目录下,这样您就可以在程序中使用百度定位SDK了。(我是将so文件放在jniLIiba下面,这个文件夹是我自己创建的,如下图:)
![](https://img.haomeiwen.com/i2120096/7f425750d716a50e.png)
然后将jar文件放入libs文件夹下面,这样准备工作基本是完成了。
8.接下来就是在项目中的使用了,首先,我们在AndroidManifest.xml中添加需要的权限,如下:
![](https://img.haomeiwen.com/i2120096/e59aa1381a0c809e.png)
然后再声明Servie和meta-data,value就是我们在开放平台上创建应用获取到的key,如下图:
![](https://img.haomeiwen.com/i2120096/5cd6750deee98ade.png)
9.最后就是使用百度地图进行定位了,直接上代码,我是这么做的:
(1)先声明定位的类及接口回掉
private LocationClient mLocationClient=null;
private BDLocationListener myListener=newMyLocationListener();
(2)在需要获取定位信息的地方调用如下代码
mLocationClient=newLocationClient(getApplicationContext());//声明LocationClient类
mLocationClient.registerLocationListener(myListener);//注册监听函数
initLocation();
mLocationClient.start();
(3)需要的方法的代码
private voidinitLocation() {
LocationClientOption option =newLocationClientOption();
option.setLocationMode(LocationClientOption.LocationMode.Hight_Accuracy);//可选,默认高精度,设置定位模式,高精度,低功耗,仅设备
option.setCoorType("bd09ll");//可选,默认gcj02,设置返回的定位结果坐标系
intspan =1000;
option.setScanSpan(span);//可选,默认0,即仅定位一次,设置发起定位请求的间隔需要大于等于1000ms才是有效的
option.setIsNeedAddress(true);//可选,设置是否需要地址信息,默认不需要
option.setOpenGps(true);//可选,默认false,设置是否使用gps
option.setLocationNotify(true);//可选,默认false,设置是否当gps有效时按照1S1次频率输出GPS结果
option.setIsNeedLocationDescribe(true);//可选,默认false,设置是否需要位置语义化结果,可以在BDLocation.getLocationDescribe里得到,结果类似于“在北京天安门附近”
option.setIsNeedLocationPoiList(true);//可选,默认false,设置是否需要POI结果,可以在BDLocation.getPoiList里得到
mLocationClient.setLocOption(option);
}
public classMyLocationListenerimplementsBDLocationListener {
@Override
public voidonReceiveLocation(BDLocation location) {
String address = location.getAddrStr();//拿到地址
if(StringUtil.isEmpty(address)) {
return;
}
if(!StringUtil.isEmpty(address)) {
edittext.setText(address);
Editable etext =edittext.getText();
Selection.setSelection(etext,etext.length());//光标定位到最后
mLocationClient.stop();
}
}
}
address 就是我们定位到的地址啦,以上就是我们使用百度地图定位的流程,第一次写,写的不好,有什么问题希望大家多多补充,我也会一直进步的。
(*/ω╲*)
网友评论