百度地图Android SDK 2.0开发指南2-结合百度定位SDK在百度地图上显示当前位置

15 篇文章 0 订阅

上一讲我们介绍了如何在Activity中显示百度地图,很多情况下我们都需要在百度地图上显示当前位置。百度地图Android SDK更新到2.0之后,将定位功能进行了剥离,但它依旧保留了定位图层,方便开发者便捷的展示定位结果等信息。所以获取当前位置需要结合百度定位SDK使用。

1、添加定位sdk

所先在官方相关下载中下载最新的库文件。然后将liblocSDK3.so文件拷贝到libs/armeabi目录下。将locSDK3.3.jar文件拷贝到工程的libs目录下,并在工程属性->Java Build Path->Libraries中选择“Add JARs”,选定locSDK3.3.jar,确定后返回。现在我们工程的libs目录应该是这个样子:

BaiduMap-local

 

2、设置AndroidManifest.xml

在application标签中声明service组件。

并声明使用权限

3、新建相关Activity关实现代码

新建一个类ShowMyLocationActivity继承至Activity,并在AndroidManifest.xml注册。相关代码如下:

4、在MainActivity中添加到该类的”导航”:

运行程序并点击“在百度地图上显示当前位置”,运行结果如下:

BaiduMap-local3

BaiduMap-local4

 

 

可以看出已经在地图上正确的显示了当前位置,但是存在一些比较怪异的地方:

1、我们并没有发送定位请求(并没有调用mLocationClient.requestLocation(或mLocationClient.requestPoi())就开始了定位。

2、仔细观察代码中两处关于mLocationClient.isStarted的打印信息,我们发现在调用mLocationClient.start()后,mLocationClient.isStarted返回的是false,而在调用mLocationClient.stop()后,mLocationClient.isStarted返回的反而是true;

BaiduMap-local2

所以下面的代码反而是错误的:

你会发现mLocationClient.requestLocation()并不会执行,而是显示”定位失败”。这时如果你没有调用mLocationClient.start(),则不能正常定位。所以我在想,是不是在调用mLocationClient.start()的时候,就开始定位了?但是这样的话,mLocationClient.requestLocation()或mLocationClient.requestPoi(),还有离线定位mLocationClient.requestOfflineLocation(),还有什么意义呢?

不过我们仍然是可以区分的,因为调用mLocationClient.requestPoi()的时候,返回的结果是在回调接口中的onReceivePoi()中处理。调用离线定位mLocationClient.requestOfflineLocation()时,返回结果虽然也是在回调接口中的onReceiveLocation()中,我们可以使用如下方法判断是否是离线定位请求:


原文地址:点击打开链接

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值