手机端定位偏移问题

1、坐标系

  • WGS-84原始坐标系:也就是GPS定位拿到的经纬度,谷歌和高德在国外可以正常使用GPS定位,国内不允许各个平台使用GPS坐标。
  • GCJ-02坐标系,又名火星坐标系,由WGS-84加密而成,在国内各个地图平台需要使用这种坐标系,或者在GCJ-02的基础上在进行加密。像谷歌,高德,腾讯都是通用的GCJ-20坐标系
  • BD-09坐标系,是百度地图通过再次加密GCJ-20坐标系得到的独有的坐标系只适用于百度地图。(慎用)

2、原生安卓,ios定位偏移(vue+crodova)

navigator.geolocation.getCurrentPosition(geolocationSuccess,[geolocationError],[geolocationOptions]);

以上代码为crodova调用手机的原生定位方法,得到的经纬度为GPS坐标系,在国内各个地图平台上是无法使用的,亲测会发生大约一公左右的偏移。

3、偏移解决方案

以高德地图为例,高德地图中jsapi中有一个坐标转换的方法可将gps坐标转换为GCJ-20坐标。

var gps = [116.3, 39.9];
AMap.convertFrom(gps, 'gps', function (status, result) {if (result.info === 'ok') {var lnglats = result.locations; // Array.<LngLat>}
});

4.地图API定位

地图SDK会自动选择加密的方式,然后再将点显示在地图上,这个时候是没有偏移的。以高德地图为例。

mapObj = new AMap.Map('iCenter');
mapObj.plugin('AMap.Geolocation', function () {geolocation = new AMap.Geolocation({enableHighAccuracy: true,//是否使用高精度定位,默认:truetimeout: 10000,          //超过10秒后停止定位,默认:无穷大maximumAge: 0,           //定位结果缓存0毫秒,默认:0convert: true,           //自动偏移坐标,偏移后的坐标为高德坐标,默认:trueshowButton: true,        //显示定位按钮,默认:truebuttonPosition: 'LB',    //定位按钮停靠位置,默认:'LB',左下角buttonOffset: new AMap.Pixel(10, 20),//定位按钮与设置的停靠位置的偏移量,默认:Pixel(10, 20)showMarker: true,        //定位成功后在定位到的位置显示点标记,默认:trueshowCircle: true,        //定位成功后用圆圈表示定位精度范围,默认:truepanToLocation: true,     //定位成功后将定位到的位置作为地图中心点,默认:truezoomToAccuracy:true      //定位成功后调整地图视野范围使定位位置及精度范围视野内可见,默认:false});mapObj.addControl(geolocation);geolocation.getCurrentPosition();AMap.event.addListener(geolocation, 'complete', onComplete);//返回定位信息AMap.event.addListener(geolocation, 'error', onError);      //返回定位出错信息
});

在移动端,如果开发者开启了sdk辅助定位,那么安卓手机上我们会优先尝试调用sdk的定位接口,失败之后优先调用浏览器原生定位接口进行定位,浏览器定位失败之后尝试进行精确IP定位,如果以上三种定位全部尝试失败则返回error事件或回调error信息,否则和PC端的一样,定位成功之后进行高德坐标转化和地址融合。

高德地图手机端定位偏移问题相关推荐

  1. 手机端定位获取用户位置信息

    很多时候,我们需要获取手机端用户的位置信息,当然这需要用户的同意授权才能进行获取,下面介绍下我在项目中使用的定位 由于本项目web端使用的是高德地图,因此手机端定位也使用高德的定位接口 <htm ...

  2. h5手机端或PC端利用高德地图获取当前定位位置

    踩的坑写在前面: 想直接利用h5的特性来获取,但是一直报错,需要https服务,结果还去了阿里云搞ssl的域名卡住了,然后一直报未检测到DNS配置记录,如果你们服务是https就可以直接用这个了. 后 ...

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

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

  4. uniapp+高德地图api 获取定位信息及详细地址

    引入高德地图js api 高德地图api官方文档 根据官方文档建议,我使用的是JSAPI Loader 并且是通过npm安装的 npm i @amap/amap-jsapi-loader --save ...

  5. 利用高德地图api进行定位

    一.精准定位,需要https,需要用户手动同意. 在初次进入时进行定位,定位成功,保存定位所在城市.再次进入不定位,使用上一次的定位. 1.首先引入高德地图api <script type=&q ...

  6. 高德地图获取手机定位

    1.引入高德地图 <script type="text/javascript" src="https://webapi.amap.com/maps?v=1.4.15 ...

  7. 高德地图定位误差_【“怼”上了,四川景区一度建议别用高德地图】导航定位错误引用户到封闭区域,致拥堵!高德地图道歉,已更正!...

    导航错误,致景区拥堵 10月4日下午,青城山都江堰景区与高德地图"怼"上了.该景区官方公众号"青城山都江堰"发文称,近来,青城山都江堰景区频繁接到游客反映,使用 ...

  8. Vue中集成高德地图API实现定位与自定义样式信息窗体

    场景 若依前后端分离版手把手教你本地搭建环境并运行项目: https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/108465662 在上面 ...

  9. iOS获取高德地图实现持续定位功能

    首先,根据高德地图开发平台在Xcode里面配置相应的环境 自动部署用cocoapods,请按照http://lbs.amap.com/api/ios-location-sdk/guide/create ...

最新文章

  1. 阿里云EMR异步构建云HBase二级索引
  2. noip2014滚粗记
  3. 公众号怎么设置滑动文字_上善.小知——(1)公众号白名单怎么设置?
  4. OS / Linux / 系统阻塞在系统调用中时如果收到信号,系统如何处理?
  5. 初识python教案青岛版八年级_青岛版信息技术六上第二单元第8课8.初识python教案...
  6. B站Up主上传质量调优实践
  7. java中三种常见内存溢出错误的处理方法(good)
  8. MySQL 如何使用 PV 和 PVC?
  9. 一分钟了解阿里云产品:专有网络VPC五大热点技术问题分析
  10. wifipumpkin3 WiFi钓鱼工具
  11. 怎么把word转换ppt?
  12. windows安装docker环境并配置镜像
  13. Chrome浏览器历史版本下载
  14. 科勒公司成为曼联的主要合作伙伴
  15. 小米note3如何打开usb调试
  16. Linux Shell脚本面试25问
  17. RNA二级结构系列(1):基础知识篇
  18. html图片闪烁设置,HTMLCSS基础-图片按钮闪烁解决方案
  19. 谁再说“游戏没用”,就拿这个回怼他!
  20. google thumbnailator简介

热门文章

  1. 数字图像处理--冈萨雷斯第4版--第一章 绪论
  2. php显示网络图片,php中显示图片的方法
  3. 负载均衡获得真实源IP的6种方法
  4. 神威 计算机 应用,Gromacs在神威蓝光超级计算机上的部署和应用(2)
  5. css竖向箭头符号_用css制作空心箭头(上下左右各个方向均有)
  6. MATLAB:ode45
  7. 职业生涯规划(career planning)
  8. HTML下拉菜单怎么做成横向,纯css实现横向下拉导航菜单(可做左侧类目导航)
  9. 笔记本win10正在更新怎么关闭计算机,教你win10如何关闭自动更新
  10. 天画项目-低代码平台-总体设计与实现