美文网首页
Android中实现高德地图定位功能

Android中实现高德地图定位功能

作者: 周晓川 | 来源:发表于2017-10-17 16:10 被阅读9次

    安卓项目中实现定位功能也是很常见的需求。最近这个项目就需要实现定位功能,所以就花了点时间研究来一下高德地图的源码,并在此基础上做了简化和封装,希望对需要实现高德地图定位功能的小伙伴有所帮助。
    一,开始之前。因为安卓6.0之后很多的功能都需要权限,所以在集成高德地图之前我们添加和设置权限到项目中来。关于6.0权限的轮子gitHub上也很多,我自己项目中就用的是我之前同事写的一个第三方库,地址;https://github.com/yewei02538/HiPermission ,当然你也可以选择使用其他的。
    二,集成过程。在我们添加好权限之后,就开始正式的集成之旅吧。
    2.1,首先我们需要到高德地图开发平台注册应用并获取到Key,这一步骤在高德开发平台有详细的说明,我就不重复了 http://lbs.amap.com/api/android-location-sdk/guide/create-project/get-key/
    2.2,添加应用成功拿到Key之后,我们就开始配置我们的工程,也就是所谓的集成高德地图的SDK。集成SDK也分两种,通过拷贝集成SDK和通过Gradle集成SDK,这两种大家同样可以参考官方的详细说明,http://lbs.amap.com/api/android-location-sdk/guide/create-project/android-studio-create-project 。单需要强调说明一点的时,千万千万别忘记了在项目的清单文件中添加权限和配置Key

    图片.png
    图片.png
    2.3,完成以上两个步骤之后,我们就开始我们的编码工作了。通过查看官方Demo源码我们可以发现,点位的过程大致也可以分为三步,设置参数,设置监听,开启定位并判断结果。
    2.3.1,首先我们需要初始化一个AMapLocationClient对象,然后在设置参数,参数比较多,大家可以根据自己项目的实际情况选择或者设置所需要的参数。以下是我项目中的参数
    图片.png
    2.3.2,接下来是设置监听回调,其可行的监听方法就一个AMapLocationListener,通过实现这个接口,并重写 void onLocationChanged(AMapLocation var1)来获取定位之后的数据。
    2.3.3,开始点位,调用 locationClient.startLocation()方法。调用之后,就会执行回调,需要说明一下的是,在参数设置里我们可以设置单次定位或多次点位,这个也可以根据项目的实际情况来调整。
    2.4,在开始定位之后,通过回调会返回给我们定位结果。官方Demo给出的说明是判断aMapLocation.getErrorCode()的值,如果值为0就说明定位成功,不为0表示失败。
    图片.png
    2.5,为了节省资源,提高程序的健壮性,我们还需要考虑停止定位和销毁定位。停止定位也只需要调用 locationClient.stopLocation() 即可,销毁定位
    图片.png ,到这里整个流程就走完了。
    三,后续整理和汇总。以后上我们只是介绍了整个集成的过程,在开发中要考虑到复用和代码逻辑的简洁性,所以我就把上面的步骤汇总整理成了一个帮助类,调用起来也比较方便。看看,就这么几行代码
    图片.png
    四,补充说明。我只是根据官方Demo做出的整理,这是以上步骤的全部代码 https://github.com/lucky-you/AndroidStudy/blob/master/app/src/main/java/com/cnsunrun/androidstudy/utils/LocationMapUtils.java 具体的详细步骤大家可以去参看官方的Demo或API描述。这里把官方的错误码对照表 http://lbs.amap.com/api/android-location-sdk/guide/utilities/errorcode 和定位类型对照表 http://lbs.amap.com/api/android-location-sdk/guide/utilities/location-type 也一并奉上,希望对你有所帮助。

    相关文章

      网友评论

          本文标题:Android中实现高德地图定位功能

          本文链接:https://www.haomeiwen.com/subject/vfpduxtx.html