基于cordova-amap-location插件的高德地图定位实现

一、准备工作,申请高德地图key

1、登录高德开放平台(https://lbs.amap.com/)

     如果没有账号,需要注册账号;账号注册还需要进一步注册成为开发者

2、进入控制台

3、进入“应用管理-->我的应用”,执行添加操作:

1)获取调试版本的sha1

①F:\jdk\jdk1.8.0_211\bin\keytool -list -v -keystore C:\Users\eddy\.android\debug.keystore

【keytool是jdk自带的工具,具体请指向实际的目录;debug.keystore文件所在目录也请修改成自己机器上实际的目录】

②调试版本keystore的默认密码是:android

③执行结果如下:

2)获取发布版本的sha1

①F:\jdk\jdk1.8.0_211\bin\keytool -list -v -keystore D:\programe\emm\dist\app\build\NK-release.keystore

【keytool是jdk自带的工具,具体请指向实际的目录;NK-release.keystore文件所在目录也请修改成自己机器上实际的目录】

②发布版本keystore的密码是创建NK-release.keystore文件所指定的密码

③执行结果如下:

3)获取PackageName

    src-cordova\platforms\android\app\src\main\AndroidManifest.xml 配置文件package属性所对应的值。

将以上三个值分别填入下图中:

4、添加成功后,形成如下结果(得到android平台的key)

    重复以上步骤,得到IOS平台的KEY。(如果不需要IOS平台的地图定位,在申请时候可以随便填写sha1等信息,最后也会得到以上的KEY值)【注意:无论你是否有IOS平台地图定位的需求,andrioid、IOS另个平台的KEY都必须在这里申请下来】

【以上的申请的KEY,在所有高德地图的应用中都会用到,所以需要保管好】

二、插件安装

...\src-cordova>cordova plugin add cordova-amap-location --variable ANDROID_KEY=android的key  --variable IOS_KEY=ios的key  --save

【注意:以上两个variable缺一不可,否则不能成功安装插件】

   成功安装后,就可以在目录...\src-cordova\plugins\中多出了一个子目录:cordova-amap-location

三、插件使用

methods: {

  getPosition() {

         window.plugins.aMapLocationPlugin.getCurrentPosition((response) => {

                //成功定位的处理逻辑

                 console.log(response);

           }, (response) => {

                 //定位失败的处理

          });

    }

}

这是笔者执行后,Response的结果如下:

{

"locationType":5,  【定位类型:定位失败0、GPS定位结果1、前次定位结果2、缓存定位结果4、Wifi定位结果5、基站定位结果6】

"latitude":32.074172,                        【纬度】

"longitude":118.769733,                      【经度】

"accuracy":50,                              【精度信息,单位:米】

"speed":0,                                  【速度信息】

"bearing":0,                                【方向信息】

"date":"Wed Nov 04 19:56:57 GMT+08:00 2020",  【定位时间】

"address":"江苏省南京市鼓楼区虹桥靠近虹桥",  【地址详情】

"country":"中国",          【国家信息】

"province":"江苏省",      【省信息】

"city":"南京市",          【城市信息】

"district":"鼓楼区",        【城区信息】

"street":"虹桥",          【街道信息】

"streetNum":"200-2号院",  【街道门牌号】

"cityCode":"025",          【城市编码】

"adCode":"320106",        【地区编码】

"poiName":"虹桥",        【POI名称,信息点名称】

"aoiName":"南京工业大学虹桥校区宿舍区"  【AOI名称,多边形名称】

}

【注意,由于笔者是在房间内执行以上程序,所以插件自动采用的是wifi定位方法,误差50米,但据笔者分析坐标,真实误差应该200米以上。不过如果到室外,用GPS定位的话,误差应该会小很多吧】

四、总结

       cordova下的定位插件其实有很多:cordova-plugin-geolocation、cordova-plugin-bd-geolocation、cordova-plugin-baidumaplocation、cordova-plugin-geolocation-gaode、cordova-baidu-location、cordova-plugin-amap-location、cordova-amap-location......

     注明是cordova百度地图插件、cordova高德地图插件就有好多个,一开始笔者完全就搞晕了,同样的cordova高德地图插件怎么会有这么多个?后来才发现,这些插件并不是官方的,而是一些作者自己封装发布出来的。

     在此之前,笔者试过好几个插件,不知道是环境问题,还是插件本身就有问题:

     1、cordova-plugin-geolocation,出现“Only secure origins are allowed (see: https://goo.gl/Y0ZkNV)”错误,失败!

     2、cordova-plugin-baidumaplocation,执行定位命令没有响应,失败!

     3、cordova-plugin-bd-geolocation,速度倒是挺快,执行结果如下,完全就得不到地址和正确的坐标信息,失败!

      Position: {"timestamp":1604463557225,"coords":{"latitude":5e-324,"longitude":5e-324,"altitude":5e-324,"accuracy":0,"altitudeAccuracy":0,"heading":-1,"speed":0}}

      Extra:  {"type":162,"gpsAccuracyStatus":0}

    直到用cordova-amap-location时才一次性成功(就是开始申请key时有些小折腾),所以笔者将方法推荐给大家,以减少各位像我一样的重复折腾。

五、后续:补

    1、如果执行定位后出现定位失败(response=12),通过查https://lbs.amap.com/api/android-location-sdk/guide/utilities/errorcode/可知,没有给这个应用开放定位权限,因此在移动终端上允许这个应用的定位权限即可。

    2、如果执行定位后出现KEY鉴权失败(response=7)【这个坑折腾我好长时间:( 】

    以上高德开发平台中的“发布版本安全码SHA1”配置,根据“创建app数字签名证书”如果采用第三种方式进行apk签名,由于数字签名证书采用的是jks文件,而不是本文以上介绍的keystore文件方式。因此“发布版本安全码SHA1”采用如下方式获得:

keytool -list -v -keystore 数字证书文件名.jks

     输入创建这个证书时配置的密码,即可得到发布版安全码SHA1。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 214,504评论 6 496
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,434评论 3 389
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 160,089评论 0 349
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,378评论 1 288
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,472评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,506评论 1 292
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,519评论 3 413
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,292评论 0 270
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,738评论 1 307
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,022评论 2 329
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,194评论 1 342
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,873评论 5 338
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,536评论 3 322
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,162评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,413评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,075评论 2 365
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,080评论 2 352