之前使用的是百度地图的定位功能,不知道什么原因注册的时候总是失败,而且JAR和SO的匹配也弄的我十分蛋疼,最后换了最新的JAR和SO依然不好使,回调函数一直失败,究竟是为了什么,我也不知道。反正结果是我醉了ORZ。

但是那条条大陆通罗马吧,启用高德定位,这货好使了,但是,但是,但是,最恶心的是这货的验证机制,真尼玛不想说,特别难弄。日了狗了。这里面的蛋疼就不说了,但是它也确实是好用的,而且功能比较完善,而且开源这里支持一下!

以下内容会按照使用流程进行解析只说android studio IDE下怎么使用
一、和很多国内的开源API一样当然是注册一个开发者帐号啦

二、注册完成之后使用公司或者个人的keystore.jks获取绑定所要使用的SHA1签名指纹。
若没有自己生成成,具体方法,请百度。
这里的坑不多,主要是打开jsk
产看jsk的方法是在DOS界面在存放key.store的地址使用命令
keytool -list -keystore yourkeystore.jks
就可以在命令行里看到相应的SHA1串。一共20对,复制的时候一定要注意别复制少了,在复制完成之后务必对照一遍,因为就整个高德地图来说这个是最恶心的,必须签名,否则定位不好使。

三、下载定位包,这里推荐新手下载API和DEMO,如果是有经验的可以直接上API。

四、有了API之后,解压,复制到项目的libs目录下面,然后项目管理,添加依赖,就这么简单。查看是否添加成功可以在build,gradle里查看是否产生里依赖。

五、由于定位大多数的时候是在Service占用运行的,所以我们当然也要添加高德自己的定位服务,(这步要在依赖之后添加)。其操作为在AndroidManifest.xml中添加高德的后台服务

六、声明权限 主要有一下权限

<!--用于进行网络定位-->
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"></uses-permission>
<!--用于访问GPS定位-->
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"></uses-permission>
<!--获取运营商信息,用于支持提供运营商信息相关的接口-->
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"></uses-permission>
<!--用于访问wifi网络信息,wifi信息会用于进行网络定位-->
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE"></uses-permission>
<!--这个权限用于获取wifi的获取权限,wifi信息会用来进行网络定位-->
<uses-permission android:name="android.permission.CHANGE_WIFI_STATE"></uses-permission>
<!--用于访问网络,网络定位需要上网-->
<uses-permission android:name="android.permission.INTERNET"></uses-permission>
<!--用于读取手机当前的状态-->
<uses-permission android:name="android.permission.READ_PHONE_STATE"></uses-permission>
<!--写入扩展存储,向扩展卡写入数据,用于写入缓存定位数据-->
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"></uses-permission>注:权限可以重复所以不必一个一个去看有没有 直接追加进去即可。

七、也是最重要的一步添加自己的开发者KEY
//开发者申请的key

那么如何获得该KEY那,在我们注册的时候就是为了获取该KEY做的准备。
1.点击右上角开发者信息->左上角 我的应用
2.然后右上角创建新应用 名字随意
3.添加新的KEY

这里注意key名称自定义没问题,服务平台选择Android平台SDK
然后填写发布版安全码SHA1就是之前让大家获取的SHA1,千万别写错,然后看看有没有什么空格什么的,Package 可以在AndroidManifest里面进行查看。

添加完成之后,就可以获得自己的开发者key了。

八、最后设置自己的application Key
//开发者申请的key

九、也就是最重要的我们来讲DEMO这里直接讲混合定位,因为根据Android定位原理,也就是GPS定位和NET定位。即走GPS和网络,而高德的DEMO里面解直接有混合定位功能,即那个精度高使用那个定位的结果。其界面是这样的。

根据这张图片我们可以很清楚的知道,我们在service中需要使用的定位模式,如果我们需要实时的进行定位那么我们就可以查看持续定位功能,并且设置定位周期(毫秒级且最少1000)。和单次定位功能。

首先我们先从两者的共性中进行分析即一些参数。

//定位客户端
private AMapLocationClient locationClient = null;
//定位客户端配置
private AMapLocationClientOption locationOption = null;

之后在onCreate中进行参数的初始化。

locationClient = new AMapLocationClient(this.getApplicationContext());locationOption = new AMapLocationClientOption();// 设置定位模式为高精度模式locationOption.setLocationMode(AMapLocationMode.Hight_Accuracy);// 设置定位监听locationClient.setLocationListener(this);

这里面的四句话第一局是获得Application以初始化定位客户端。
第二句是初始化定位参数对象。
第三句是设置定位的模式 高精度模式
第四句是设置定位监听,即按周期或者单次定位返回数据后回调的函数,我们也根据这句话获取需要的相关信息。

//其类型有省电模式、设备模式(仅使用GPS定位)、高精度模式public static enum AMapLocationMode {Battery_Saving, Device_Sensors, Hight_Accuracy;private AMapLocationMode() { /* compiled code */ }}

十、这些都写完之后,我们就可以初始化定位配置项,以开始定位了。
在选择开始定位之后进行的工作
10.1

private void initOption() {// 设置是否需要显示地址信息locationOption.setNeedAddress(cbAddress.isChecked());/*** 设置是否优先返回GPS定位结果,如果30秒内GPS没有返回定位结果则进行网络定位* 注`这里写代码片`意:只有在高精度模式下的单次定位有效,其他方式无效*/locationOption.setGpsFirst(cbGpsFirst.isChecked());//“设置请求周期” String strInterval = seconds*1000+"";if (!TextUtils.isEmpty(strInterval)) {// 设置发送定位请求的时间间隔,最小值为1000,如果小于1000,按照1000算locationOption.setInterval(Long.valueOf(strInterval));}}

10.2 在初始化配置之后将参数交给客户端 后启动定位

// 设置定位参数locationClient.setLocationOption(locationOption);// 启动定位locationClient.startLocation();

对应的停止定位为
locationClient.stopLocation();

十一、在第九步所写的locationClient.setLocationListener(this);是添加位置返回回调,其写法可以参考如下
11.1接入AMapLocationListener 接口 重写 onLocationChanged方法

 @Overridepublic void onLocationChanged(AMapLocation loc) {if (null != loc) {//其中主要的信息封装在loc 中可以常看loc的子方法,获取想要的参数。Message msg = mHandler.obtainMessage();msg.obj = loc;msg.what = MSG_LOCATION_FINISH;latitude=loc.getLatitude()+"";longitude=loc.getLongitude()+"";
//使用handler进行信息回调处理mHandler.sendMessage(msg);}}

十二、一些参数的设置以及使用以区分到底是GPS优先 单次 或者周期循环定位等等
locationOption.setNeedAddress(false);//是否需要返回地址信息
locationOption.setOnceLocation(false);//是否为一次定位
locationOption.setGpsFirst(true);//是否优先使用GPS进行定位
locationOption.setHttpTimeOut();//设置连接超时时间
等等小伙伴可以根据自己的需求进行发觉,这里就不再多说了。

高德地图全解析--定位篇相关推荐

  1. 高德地图(第三篇)定位

    1.引入依赖 implementation 'com.amap.api:3dmap:5.6.0'implementation 'com.amap.api:location:5.6.0'implemen ...

  2. 高德地图--SDK集成--定位功能 地图定位搜索

    最近项目需要到高德定图定位,就此记录下简单集成思路 下载文件之只放了libs和主要代码文件 https://download.csdn.net/download/qq_38355313/1035261 ...

  3. VUE项目使用高德地图进行精准定位 高德地图API

    提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言 一.高德地图API 二.使用步骤 1.引入key 2.创建方法 总结 前言 提示:以下是本篇文章正文内容,下面案例可供 ...

  4. [iOS]高德地图SDK开发--准备篇

    本文是对高德地图SDK使用的总结,对于高德地图不做过多介绍,可直接登录其官网开放平台进行了解; PS: 这里主要是讲解地图使用的准备工作,最后,以显示地图并定位到当前位置来验证;对于其他的使用,可参看 ...

  5. vue中PC端使用高德地图 -- 实现搜索定位、地址标记、弹窗显示定位详情

    PC端高德地图使用步骤: 1.注册并登录高德开放平台获取 2.安装高德依赖(amap-jsapi-loader) 3.初始化地图 4.首次打开地图获取当前定位并标记 5.根据已有地址自动定位到指定地址 ...

  6. Android使用高德地图地理围栏定位自动发送短信

    功能点: 使用高德地图实现地理围栏功能 可设置手机号和短信间隔,设置后间隔发送当前位置 可地图选点设置地理围栏 离开进入地理围栏会有相应短信提醒(设置手机号并获取权限后) 关键代码 public cl ...

  7. 高德地图 SDK集成 定位 地理编码 搜索 经纬度获取 功能工具类

    最近项目要集成高德地图,然后可以根据语音输入指令,进行定位和地理编码搜索功能,从而实现获取当前位置经纬度和根据地址获取经纬度的功能 下载文件之只放了libs和主要代码文件 https://downlo ...

  8. 高德地图Amap搜索定位

    在前一篇的基础上加入了搜索提示,和通过搜索定位 前文: https://blog.csdn.net/Zdelta/article/details/87072653 加入搜索: 1,引入js //引入高 ...

  9. 高德地图全链路压测平台TestPG的架构与实践

    高德地图:全链路压测平台TestPG的架构与实践 转自  https://www.sohu.com/a/341414025_692515 1. 导读 2019年以来,高德DAU一个亿进入常态,不断增长 ...

  10. js应用高德地图API精确定位到门牌号标注并输出当前地址和经纬度

    主要就是两个方法,逆地址解析和地址解析过程,以及Chrome只支持https的定位. <head><meta charset="utf-8"><met ...

最新文章

  1. python十大标准_python对标准类型的分类
  2. 大工14春《计算机应用基础》在线测试2,大工14春《计算机应用基础》在线测试2...
  3. java设计模式:Singleton模式
  4. [云炬创业基础笔记]第七张创业团队测试2
  5. mysql 内存表使用教程_MySQL的内存表的基础学习教程
  6. vue的视图化创建项目_vue-cli3用图形化的方式创建项目
  7. Simulink之绝缘栅双极型晶体管(IGBT)
  8. Thinkphp3.2整合微信支付
  9. 设计师必备超人气设计素材网站
  10. C#获取cpu序列号 硬盘ID 网卡硬地址以及操作注册表 .
  11. 数据结构与算法之PHP排序算法(桶排序)
  12. 掘金小册:Git 原理详解和实用指南
  13. python代码混淆加密
  14. ElasticSearch 中文同义词实现
  15. 迅雷 linux 命令行 版本号,在Linux系统下使用wine运行迅雷5的方法
  16. paper read - 01- 2004 - 语码转换之结构研究述评
  17. 【vs】vs编译爆出大量莫名其妙错误的解决方法
  18. 单片机的智能垃圾桶设计
  19. JavaScript 删除 HTML 元素
  20. 《高数》基本初等函数 反对幂三指 (二)

热门文章

  1. Servlet的九大内置对象
  2. STM8L051低功耗实现
  3. appium实现屏幕截图
  4. at24c256读写linux,AT24C256写不进去
  5. 系统篇-在linux上用deb包安装steam。
  6. Windows中的iTunes Setup Assistant驱动程序错误修复
  7. 【Java · 类加载】类加载器
  8. sip协议详解(三)
  9. hivesql:行列转换
  10. php 获取客户端真实ip_php获取客户端真实ip地址的三种方法