您的当前位置:首页正文

百度地图Android定位SDK

2023-01-26 来源:步旅网
百度地图Android定位SDK

作者:黄丽敏 时间:2013-07-27

百度地图Android定位SDK为基于移动客户端开发LBS应用提供基础定位能力,它较百度Android 地图SDK而言,专注满足用户获取当前位置与获得地址信息描述功能,软件包体积小。功能更多,接口更友好。

百度Android定位SDK支持Android1.5以及以上设备,提供:

定位功能:通过GPS、网络定位(WIFI、基站)混合定位模式,返回当前所处的位置信息

反地理编码功能:解析当前所处的位置坐标,获得详细的地址描述信息。

定位SDK支持多样化服务与定位策略,用户可通过设置不同的定位时间间隔、选择不同的定位服务模式、定制不同的定位结果信息来满足自身需求。

定位原理

使用百度Android定位SDK必须注册GPS和网络使用权限。定位SDK采用GPS、基站、Wi-Fi信号进行定位。当应用程序向定位SDK发起定位请求时,定位SDK会根据应用的定位因素(GPS、基站、Wi-Fi信号)的实际情况(如是否开启GPS、是否连接网络、是否有信号等)来生成相应定位依据进行定位。

用户可以设置满足自身需求的定位依据:

若用户设置GPS优先,则优先使用GPS进行定位,如果GPS定位未打开或者没有可用位置信息,且网络连接正常,定位SDK则会返回网络定位(即Wi-Fi与基站)的最优结果。为了使获得的网络定位结果更加精确,请打开手机的Wi-Fi开关。

定位精度

使用步骤:

导入库文件

在下载最新的库文件。将liblocSDK3.so文件拷贝到libs/armeabi目录下。将locSDK3.3.jar文件拷贝到工程的libs目录下,并在工程属性->Java Build Path->Libraries中选择“Add JARs”,选定locSDK3.3.jar,确定后返回。

设置AndroidManifest.xml

在application标签中声明service组件,为了避免各个app公用1个service出现的权限问题,新版本各个app单独拥有自己的定位service.

android:name=\"com.baidu.location.f\"

android:enabled=\"true\" android:process=\":remote\">

声明使用权限

android:name=\"android.permission.ACCESS_COARSE_LOCATION\">

android:name=\"android.permission.ACCESS_FINE_LOCATION\">

android:name=\"android.permission.ACCESS_WIFI_STATE\">

android:name=\"android.permission.ACCESS_NETWORK_STATE\">

android:name=\"android.permission.CHANGE_WIFI_STATE\">

android:name=\"android.permission.READ_PHONE_STATE\">

android:name=\"android.permission.WRITE_EXTERNAL_STORAGE\">

android:name=\"android.permission.MOUNT_UNMOUNT_FILESYSTEMS\">

android:name=\"android.permission.READ_LOGS\">

具体操作

1.初始化LocationClient类

LocationClient类必须在主线程中声明。

public LocationClient mLocationClient = null;

public BDLocationListener myListener = new MyLocationListener();

public void onCreate() {

//声明LocationClient类

mLocationClient = new LocationClient( getApplicationContext());

//注册监听函数

mLocationClient.registerLocationListener( myListener ); }

2.实现BDLocationListener接口

BDLocationListener接口有2个方法需要实现: 1.接收异步返回的定位结果,参数是BDLocation类型参数。 2.接收异步返回的POI查询结果,参数是BDLocation类型参数。

Public class MyLocationListener implements BDLocationListener {

@Override

Public void onReceiveLocation(BDLocation location) {

}public void onReceivePoi(BDLocation poiLocation) {

}

3.设置参数

设置定位参数包括:定位模式(单次定位,定时定位),返回坐标类型,是否打开GPS等等。例如

LocationClientOption option = new LocationClientOption();

option.setOpenGps(true);

option.setAddrType(\"all\");//返回的定位结果包含地址信息

option.setCoorType(\"bd09ll\");//返回的定位结果是百度经纬度,默认值gcj02

option.setScanSpan(5000);//设置发起定位请求的间隔时间为5000ms

option.disableCache(true);//禁止启用缓存定位 。。。 4.发起定位请求

发起定位请求。请求过程是异步的,定位结果在上面的监听函数onReceiveLocation中获

取。

if(mLocClient != null && mLocClient.isStarted())

mLocClient.requestLocation();

else Log.d(\"LocSDK3\", \"locClient is null or not started\");

5.发起POI查询请求

if(mLocClient != null && mLocClient.isStarted())

mLocClient.requestPoi();

需要注意的问题

定位SDK必须注册GPS和网络的使用权限。

使用定位SDK请保证网络连接通畅(GPS定位方式不需要连网)。

我们强烈建议您设置自己的prodName,并保管好,这样方便我们为您提供更好的定位服

务。

若需要返回的定位结果里包含地址信息,请保证网络连接。

定位SDK可以返回bd09、bd09ll、gcj02三种类型坐标,若需要将定位点的位置通过百

度Android地图 SDK进行地图展示,请返回bd09ll,将无偏差的叠加在百度地图上。

有的移动设备锁屏后为了省电会自动关闭网络连接,此时网络定位模式的定位失效。此外,

锁屏后移动设备若进入cpu休眠,定时定位功能也失效。若您需要实现在cpu休眠状态仍需定时定位,可以用alarmManager 实现1个cpu可叫醒的timer,定时请求定位。

运行效果如图所示:

因篇幅问题不能全部显示,请点此查看更多更全内容