美文网首页程序员iOS程序猿iOS学习笔记
iOS-关于app拉起第三方地图定位偏移的问题

iOS-关于app拉起第三方地图定位偏移的问题

作者: 我是何先生 | 来源:发表于2018-11-23 11:56 被阅读1次

前言

最近在研究的一个社交APP设计到定位分享的问题,在获取定位以后分享给好友,好友点击定位拉起第三方地图进行导航,在开发的过程中发现,用户在拉起第三方app后得到的位置和原本的位置出现了偏差。有经验的小伙伴就知道-不同坐标系造成的问题

关于坐标系


我们的定位一般会用经纬度来进行描述,但是由于一个原因出现了不同的坐标系,来对经纬度会进行加密操作,用于保护用户隐私,这个时候如果双方使用不同坐标系,就会对位置造成偏差

对于不同坐标系的详细定义,我就不再详细记录,以下是简单的了解:

  • WGS84: 这个是国际上同的坐标系,使用经纬度表示一个位置
  • GCJ-02: 这个是中国使用的坐标系,在中国地区高德地图,腾讯地图,以及谷歌中国区地图都是使用这个坐标系
  • BD-09: 这个是百度地图使用的坐标系,在GCJ-02的基础上进行了二次加密

使用场景:


我们app使用的是高德地图进行定位,也就是使用的是GCJ-02这个坐标系,所以我们首先得弄清楚自己目前获得的经纬度,使用的是什么坐标系,这样才能够精准的减少误差

我们的app上主要对高德地图和百度地图以及苹果原生的地图进行了引用,也就是我们点击定位的时候可以选择这三个地图中的一个来进行导航

关于百度地图


对于百度地图我们主要使用一下链接进行拉起

[[NSString stringWithFormat:@"baidumap://map/marker?location=%f,%f&title=目标位置&content=%@&coord_type=gcj02",location.latitude,location.longitude] stringByAddingPercentEncodingWithAllowedCharacters:[NSCharacterSet URLQueryAllowedCharacterSet]];

对照下面的参数列表

image

从参数列表中我们可以看到,百度的web api有一个关于coord_type的参数,由于我们使用的是高德进行定位所以当前使用的坐标系是gcj02,所以我们得把这个告诉百度地图,百度地图自己会进行换算

关于高德地图


前面已经说到我们使用的就是高德地图来进行定位,也就是我们不用再对获得的坐标系进行换算

使用的链接

[[NSString stringWithFormat:@"iosamap://viewMap?sourceApplication=Demo&poiname=%@&lat=%f&lon=%f&dev=0",name,location.latitude,location.longitude] stringByAddingPercentEncodingWithAllowedCharacters:[NSCharacterSet URLQueryAllowedCharacterSet]]

参数列表:


image

我们当前使用的就是gcj02的坐标系,已经是经过了一层加密,所以dev这个参数我们一定要传0,所以如果你们获取经纬度使用的坐标系使用的是 WGS84等未加密的坐标系,这里一定要把dev设置为1,让高德自己进行换算

总结


对于拉起第三方app定位造成误差的问题,最主要的就是先弄清楚自己当前使用的坐标系,这样经过换算后就能把误差消除

下面是一些可能用到的工具:

相关文章

  • iOS-关于app拉起第三方地图定位偏移的问题

    前言 最近在研究的一个社交APP设计到定位分享的问题,在获取定位以后分享给好友,好友点击定位拉起第三方地图进行导航...

  • 开发问题笔记(十三)

    目录 1.App内打开第三方地图进行导航 1.App内打开第三方地图进行导航 App内打开第三方地图进行导航;举例...

  • IOS 使用自带的GPS获取坐标位置在百度地图上定位有偏移问题

    2017年06月30日星期五 今天测试美眉跑过来和我说地图模块中的定位是有问题的,有偏移量,而且偏移量比较随机。我...

  • 高德地图6.8.0定位修改的修复方法

    高德地图6.8.0或以上版本开启后台定位 问题 如果APP中使用了高德地图并且具有后台定位功能,然后在3D地图升级...

  • 高德地图开发相关总结

    目录 1.坐标初始化方法2.打开第三方地图应用App进行导航及坐标转换3.地图最简单的定位及气泡图标展示4.地图路...

  • Android跳转第三方地图进行导航

    项目要实现跳入第三方APP实现导航功能,在APP内已经嵌入高德地图SDK,可以获取定位的经度。 坐标系的转换 要跳...

  • bd09坐标转wgs84

    之前公司定位用的是百度定位,但是由于公司地图展示位天地图,由于偏移严重(毕竟坐标系不同)需要坐标系转换,之前看公司...

  • 盒子定位以及精灵技术

    一、定位 解决页面上盒子与盒子之间的层叠问题 1、元素的定位属性 边偏移:通过边偏移属性top、bottom、le...

  • css定位

    定位=边偏移+定位模式 边偏移:top、bottom、left、right 不要使用相对的边偏移属性 定位模式 语...

  • 百度地图开发相关总结

    目录 1.坐标经纬度初始化方法2.打开第三方地图应用App进行导航及坐标转换3.地图最简单的定位及气泡图标展示4....

网友评论

    本文标题:iOS-关于app拉起第三方地图定位偏移的问题

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