(未显示1个用户的11个中间版本) | |||
第1行: | 第1行: | ||
<div class="bluetitle"><div class="services-title-text">简介</div></div> | <div class="bluetitle"><div class="services-title-text">简介</div></div> | ||
− | + | 利用定位SDK,不仅可以快速精准的获得经纬度信息,还可以根据开发者的使用场景选择不同的定位方式来获得位置信息,目前百度Android 定位SDK支持签到场景、出行场景和运动场景定位。 | |
− | + | 获取位置描述与获取经纬度使用方法一致,只需在配置定位SDK参数时,做相关的设置即可。 | |
具体步骤如下: | 具体步骤如下: | ||
<div class="devguide"> | <div class="devguide"> | ||
− | <div class="leftborderbg" style="height: | + | <div class="leftborderbg" style="min-height:2130px;"></div> |
<div class="devguideorder"><span>1</span>第一步,准备工作</div> | <div class="devguideorder"><span>1</span>第一步,准备工作</div> | ||
<div class="devguidecenter">在使用定位SDK进行具体开发工作之前,需 [http://lbsyun.baidu.com/apiconsole/key?application=key 获取密钥(AK)],并对开发工程进行环境配置工作。详细介绍请参考项目创建部分的说明。 | <div class="devguidecenter">在使用定位SDK进行具体开发工作之前,需 [http://lbsyun.baidu.com/apiconsole/key?application=key 获取密钥(AK)],并对开发工程进行环境配置工作。详细介绍请参考项目创建部分的说明。 | ||
第27行: | 第27行: | ||
} | } | ||
</pre></div> | </pre></div> | ||
− | <div class="devguideorder"><span>3</span> | + | <div class="devguideorder"><span>3</span>第三步,配置场景定位参数</div> |
− | <div class="devguidecenter"> | + | <div class="devguidecenter"> |
+ | 1)签到场景:只进行一次定位返回最接近真实位置的定位结果 | ||
+ | |||
+ | 2)运动场景:高精度连续定位,适用于运动类开发者场景 | ||
+ | |||
+ | 3)出行场景:高精度连续定位,适用于出行类开发者场景 | ||
+ | |||
+ | 设置方法与获取经纬度中第三步类似,核心代码如下: | ||
<pre class="prettyprint codestyle"> | <pre class="prettyprint codestyle"> | ||
− | LocationClientOption | + | LocationClientOption locationClientOption = new LocationClientOption(); |
+ | // 设置定位场景,根据定位场景快速生成对应的定位参数 以出行场景为例 | ||
+ | locationClientOption.setLocationPurpose(LocationClientOption.BDLocationPurpose.Sport); | ||
+ | </pre> | ||
+ | 设置定位场景后,定位SDK会自动配置相应参数。具体配置情况如下。 | ||
+ | |||
+ | 签到场景: | ||
+ | <pre class="prettyprint codestyle"> | ||
+ | LocationClientOption option = new LocationClientOption(); | ||
+ | option.setLocationMode(LocationMode.Hight_Accuracy); | ||
+ | option.setLocationNotify(false); | ||
+ | option.setScanSpan(0); | ||
+ | option.setNeedNewVersionRgc(true); | ||
+ | |||
+ | option.setIsNeedAddress(true); | ||
+ | option.setIsNeedLocationPoiList(true); | ||
+ | option.setIsNeedAltitude(true); | ||
option.setIsNeedLocationDescribe(true); | option.setIsNeedLocationDescribe(true); | ||
− | // | + | option.setWifiCacheTimeOut(10000); |
− | // | + | </pre> |
+ | 出行场景: | ||
+ | <pre class="prettyprint codestyle"> | ||
+ | LocationClientOption option = new LocationClientOption(); | ||
+ | option.setLocationMode(LocationMode.Hight_Accuracy); | ||
+ | option.setLocationNotify(true); | ||
+ | option.setScanSpan(3000); | ||
+ | option.setNeedNewVersionRgc(true); | ||
+ | |||
+ | option.setIsNeedAddress(true); | ||
+ | option.setIsNeedLocationPoiList(false); | ||
+ | option.setIsNeedAltitude(true); | ||
+ | option.setIsNeedLocationDescribe(false); | ||
+ | option.setWifiCacheTimeOut(1000); | ||
+ | </pre> | ||
+ | 运动场景: | ||
+ | <pre class="prettyprint codestyle"> | ||
+ | LocationClientOption option = new LocationClientOption(); | ||
+ | option.setLocationMode(LocationMode.Hight_Accuracy); | ||
+ | option.setLocationNotify(true); | ||
+ | option.setScanSpan(1000); | ||
+ | option.setNeedNewVersionRgc(true); | ||
+ | |||
+ | option.setIsNeedAddress(true); | ||
+ | option.setIsNeedLocationPoiList(false); | ||
+ | option.setIsNeedAltitude(true); | ||
+ | option.setIsNeedLocationDescribe(false); | ||
+ | option.setWifiCacheTimeOut(1000); | ||
+ | </pre> | ||
+ | </div> | ||
− | |||
− | |||
− | |||
− | |||
− | |||
<div class="devguideorder"><span>4</span>第四步,实现BDAbstractLocationListener接口</div> | <div class="devguideorder"><span>4</span>第四步,实现BDAbstractLocationListener接口</div> | ||
<div class="devguidecenter">Android定位SDK自V7.2版本起,对外提供了Abstract类型的监听接口BDAbstractLocationListener,用于实现定位监听。原有BDLocationListener暂时保留,推荐开发者升级到Abstract类型的新监听接口使用,该接口会异步获取定位结果,核心代码如下: | <div class="devguidecenter">Android定位SDK自V7.2版本起,对外提供了Abstract类型的监听接口BDAbstractLocationListener,用于实现定位监听。原有BDLocationListener暂时保留,推荐开发者升级到Abstract类型的新监听接口使用,该接口会异步获取定位结果,核心代码如下: | ||
第51行: | 第98行: | ||
//更多结果信息获取说明,请参照类参考中BDLocation类中的说明 | //更多结果信息获取说明,请参照类参考中BDLocation类中的说明 | ||
− | + | double latitude = location.getLatitude(); //获取纬度信息 | |
+ | double longitude = location.getLongitude(); //获取经度信息 | ||
} | } | ||
} | } | ||
</pre></div> | </pre></div> | ||
− | <div class="devguideorder"><span>5</span> | + | <div class="devguideorder"><span>5</span>第五步,获取定位结果</div> |
− | <div class="devguidecenter">调用LocationClient的start() | + | <div class="devguidecenter">调用LocationClient的start()方法,发起请求,在BDAbstractLocationListener接口中,便可获得。 |
− | + | 详细信息请参考[http://lbs.baidu.com/index.php?title=android-locsdk/guide/get-location/latlng 获取经纬度中第五步的介绍]。</div> |
2021年6月29日 (二) 16:11的最后版本
简介
利用定位SDK,不仅可以快速精准的获得经纬度信息,还可以根据开发者的使用场景选择不同的定位方式来获得位置信息,目前百度Android 定位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第三步,配置场景定位参数
1)签到场景:只进行一次定位返回最接近真实位置的定位结果
2)运动场景:高精度连续定位,适用于运动类开发者场景
3)出行场景:高精度连续定位,适用于出行类开发者场景
设置方法与获取经纬度中第三步类似,核心代码如下:
LocationClientOption locationClientOption = new LocationClientOption(); // 设置定位场景,根据定位场景快速生成对应的定位参数 以出行场景为例 locationClientOption.setLocationPurpose(LocationClientOption.BDLocationPurpose.Sport);
设置定位场景后,定位SDK会自动配置相应参数。具体配置情况如下。
签到场景:
LocationClientOption option = new LocationClientOption(); option.setLocationMode(LocationMode.Hight_Accuracy); option.setLocationNotify(false); option.setScanSpan(0); option.setNeedNewVersionRgc(true); option.setIsNeedAddress(true); option.setIsNeedLocationPoiList(true); option.setIsNeedAltitude(true); option.setIsNeedLocationDescribe(true); option.setWifiCacheTimeOut(10000);
出行场景:
LocationClientOption option = new LocationClientOption(); option.setLocationMode(LocationMode.Hight_Accuracy); option.setLocationNotify(true); option.setScanSpan(3000); option.setNeedNewVersionRgc(true); option.setIsNeedAddress(true); option.setIsNeedLocationPoiList(false); option.setIsNeedAltitude(true); option.setIsNeedLocationDescribe(false); option.setWifiCacheTimeOut(1000);
运动场景:
LocationClientOption option = new LocationClientOption(); option.setLocationMode(LocationMode.Hight_Accuracy); option.setLocationNotify(true); option.setScanSpan(1000); option.setNeedNewVersionRgc(true); option.setIsNeedAddress(true); option.setIsNeedLocationPoiList(false); option.setIsNeedAltitude(true); option.setIsNeedLocationDescribe(false); option.setWifiCacheTimeOut(1000);
4第四步,实现BDAbstractLocationListener接口
Android定位SDK自V7.2版本起,对外提供了Abstract类型的监听接口BDAbstractLocationListener,用于实现定位监听。原有BDLocationListener暂时保留,推荐开发者升级到Abstract类型的新监听接口使用,该接口会异步获取定位结果,核心代码如下:
public class MyLocationListener extends BDAbstractLocationListener{ @Override public void onReceiveLocation(BDLocation location){ //此处的BDLocation为定位结果信息类,通过它的各种get方法可获取定位相关的全部结果 //以下只列举部分获取位置描述信息相关的结果 //更多结果信息获取说明,请参照类参考中BDLocation类中的说明 double latitude = location.getLatitude(); //获取纬度信息 double longitude = location.getLongitude(); //获取经度信息 } }
5第五步,获取定位结果
调用LocationClient的start()方法,发起请求,在BDAbstractLocationListener接口中,便可获得。
详细信息请参考获取经纬度中第五步的介绍。