百度地图定位当前城市

版权声明:越努力,越幸运! https://blog.csdn.net/mingtiannihao0522/article/details/78563429

一.注册百度地图开放平台,并创建一个应用

百度地图开放平台:http://lbsyun.baidu.com/
创建应用:http://lbsyun.baidu.com/apiconsole/key/create

这里写图片描述

注意此处需要SHA1 :

MAC下获取:输入命令: keytool -list -v -keystore ~/.android/debug.keystore
注:debug.keystore只是默认调试的签名钥
密码:android
这里写图片描述
window 自行百度,方法多得是

应用创建结束后。会得到一个key

二.下载相应的SDK

http://lbsyun.baidu.com/index.php?title=android-locsdk/geosdk-android-download

三.打开或新建一个android项目,配置
1.添加SDK(jar + so):
a.将jar放到lib下
b.在main文件夹下新建jniLibs文件夹,将so文件放进去
这里写图片描述

2.配置build.gradle文件
这里写图片描述

3.添加AK
Android定位SDK自v4.0版本起,需要进行AK鉴权。开发者在使用SDK前,需完成AK申请,并在AndroidManifest.xml文件中,正确填写AK。
在Application标签中增加如下代码:

<meta-data
    android:name="com.baidu.lbsapi.API_KEY"
    android:value="开发者申请的AK" >
</meta-data>

4.添加定位权限
使用定位SDK,需在Application标签中声明service组件,每个App拥有自己单独的定位service,代码如下:

<service android:name="com.baidu.location.f" android:enabled="true" android:process=":remote"> </service>

除添加service组件外,使用定位SDK还需添加如下权限:

<!-- 这个权限用于进行网络定位-->
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"></uses-permission>
<!-- 这个权限用于访问GPS定位-->
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"></uses-permission>
<!-- 用于访问wifi网络信息,wifi信息会用于进行网络定位-->
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE"></uses-permission>
<!-- 获取运营商信息,用于支持提供运营商信息相关的接口-->
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"></uses-permission>
<!-- 这个权限用于获取wifi的获取权限,wifi信息会用来进行网络定位-->
<uses-permission android:name="android.permission.CHANGE_WIFI_STATE"></uses-permission>
<!-- 用于读取手机当前的状态-->
<uses-permission android:name="android.permission.READ_PHONE_STATE"></uses-permission>
<!-- 写入扩展存储,向扩展卡写入数据,用于写入离线定位数据-->
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"></uses-permission>
<!-- 访问网络,网络定位需要上网-->
<uses-permission android:name="android.permission.INTERNET" />
<!-- SD卡读取权限,用户写入离线定位数据-->

四.Activity中

利用定位SDK,不仅可以快速精准的获得经纬度信息,还可以获得当前地点的地址信息,便于开发者使用。

获取地址与获取经纬度使用方法一致,只需在配置定位SDK参数时,做相关的设置即可。此外,如果需要地址信息,需确保手机能够正常连接网络。

具体步骤如下:

1第一步,准备工作
在使用定位SDK进行具体开发工作之前,需获取开发密钥(AK),并对开发工程进行环境配置工作。详细介绍请参考项目创建部分的说明。 此外,Google在Android 6.0中引入了动态权限获取机制,开发者在使用定位SDK之前,请详细了解关于Android 6.0系统开发须知。
2第二步,初始化LocationClient类
请在主线程中声明LocationClient类对象,该对象初始化需传入Context类型参数。推荐使用getApplicationConext()方法获取全进程有效的Context。
核心代码段如下:

public LocationClient mLocationClient = null;
private MyLocationListener myListener = new MyLocationListener();
//BDAbstractLocationListener为7.2版本新增的Abstract类型的监听接口
//原有BDLocationListener接口暂时同步保留。具体介绍请参考后文中的说明
public void onCreate() {
    mLocationClient = new LocationClient(getApplicationContext());     
    //声明LocationClient类
    mLocationClient.registerLocationListener(myListener);    
    //注册监听函数
}

3第三步,配置定位SDK参数
此处请开发者注意,如果想获取地址信息,需在配置LocationClientOption类时做相应的设置。设置方法与获取经纬度中第三步类似,核心代码如下:

LocationClientOption option = new LocationClientOption();

option.setIsNeedAddress(true);
//可选,是否需要地址信息,默认为不需要,即参数为false
//如果开发者需要获得当前点的地址信息,此处必须为true

mLocationClient.setLocOption(option);
//mLocationClient为第二步初始化过的LocationClient对象
//需将配置好的LocationClientOption对象,通过setLocOption方法传递给LocationClient对象使用
//更多LocationClientOption的配置,请参照类参考中LocationClientOption类的详细说明

4第四步,实现BDAbstractLocationListener接口
Android定位SDK自v7.2版本起,对外提供了Abstract类型的监听接口BDAbstractLocationListener,用于实现定位监听。原有BDLocationListener暂时保留,推荐开发者升级到Abstract类型的新监听接口使用,该接口会异步获取定位结果,核心代码如下:

public class MyLocationListener implements BDAbstractLocationListener{
    @Override
    public void onReceiveLocation(BDLocation location){
        //此处的BDLocation为定位结果信息类,通过它的各种get方法可获取定位相关的全部结果
        //以下只列举部分获取地址相关的结果信息
        //更多结果信息获取说明,请参照类参考中BDLocation类中的说明

        String addr = location.getAddrStr();    //获取详细地址信息
        String country = location.getCountry();    //获取国家
        String province = location.getProvince();    //获取省份
        String city = location.getCity();    //获取城市
        String district = location.getDistrict();    //获取区县
        String street = location.getStreet();    //获取街道信息
    }
}

5第五步,获取定位地址信息
调用LocationClient的start()方法,发起请求,在BDAbstractLocationListener接口中,便可获得定位地址相关的信息。
详细信息请参考获取经纬度中第五步的介绍。

附上下载地址
http://download.csdn.net/download/mingtiannihao0522/10123215

猜你喜欢

转载自blog.csdn.net/mingtiannihao0522/article/details/78563429