谷歌地图定位偏移怎么解决(高德地图经常出现偏离)

news2024/9/15 2:46:25

话不多说,先上效果图

以前在做项目时,经常会听到客户说,你们这个地图是哪来的,太丑了,能不能换成百度地图……高德也行……

大家生活中,基本上都已经习惯了使用百度地图和高德地图,而在做项目时,用这两个地图做为底图,也基本成为了标配。但在开发中使用这两个地图,会遇到一个拦路虎,坐标偏移问题。

全球现在用的最多的坐标,是wgs84坐标,专业GPS设备和手机GPS定位得到的坐标,通常都是这个坐标。我们国家为了保密需要,要求在国内发布的互联网地图,必须要在这个基础上进行加密偏移。加密后的坐标叫做国测局坐标,俗称火星坐标。高德地图、腾讯地图、国内的谷歌地图都是这个坐标。百度地图则是在火星坐标的基础上再次加密,形成了百度坐标。

leaflet有一个加载互联网地图的插件
   leaflet.ChineseTmsProviders,可以轻松实现加载高德、百度、天地图、谷歌等在线地图瓦片,但并没有去解决它们的偏移问题。高德和百度地图倒是提供了wgs84坐标转成自己坐标的在线接口,但仅支持单向转入,不支持反向再转回来,这会导致地图拾取坐标等功能无法得到wgs84坐标。

网上流传着一份wgs84坐标、火星坐标和百度坐标之间相互转换的算法。在多个项目中使用后发现,基本很准,偶尔有误差,但很小,也就几米以内,平时用时基本感觉不到。

如何集成到leaflet

两种思路:

第一种,把纠偏算法封装成一个接口,类似上面提到的百度、高德地图的坐标转换接口,在向地图加载数据前,先调用这个接口完成坐标的转换再添加到地图上。等于是把自己的数据偏移到互联网地图坐标上。这种是最常见的。

第二种,百度、高德的地图都是瓦片地图,每一张瓦片在加载时都会去计算它的经纬度位置,我们可以在计算经纬度位置时加入纠偏算法,把瓦片的坐标位置纠偏回来。当所有瓦片的位置正确了,整个地图也就不存在偏移了。等于是把火星坐标或百度坐标的瓦片纠偏回wgs84坐标。

两种方案进行比较,第一种明显是被百度、高德的坐标转换接口带节奏了。leaflet是开源的,我们可以通过研究源码实现对瓦片的纠偏,从而真正实现对地图的纠偏,而不是每次去调用坐标转换接口,让数据将错就错。

第二种方案还可以进一步延伸,把对瓦片的纠偏封装成插件,最终目标是引入这个插件以后实现对地图的自动纠偏。

瓦片位置

对瓦片纠偏,先要找到加载瓦片、计算瓦片位置的代码在哪。

上文中提到的,加载互联网地图的插件
   leaflet.ChineseTmsProviders本质是一个图层,它继承了TileLayer

TileLayer继承了GridLayer

加载瓦片的代码主要是在GridLayer中写的。

计算瓦片位置的代码在 _getTiledPixelBounds 方法和 _setZoomTransform 方法中。

瓦片纠偏

瓦片纠偏分三步:

第一步:准备坐标转换的算法

第二步:根据互联网地图名称获取坐标类型

第三步:在获取瓦片和地图缩放的方法中,调用纠偏算法

封装成插件

有个问题,既然要封装成插件,就要做到耦合,不能直接修改leaflet的源码。这里可以参考leaflet的源码,使用 include 方式对方法进行重写来做到修改源码。

include方式

通过例子了解一下:比如leaflet源码中 Polygon.toGeoJSON() 方法不是在 Polygon.js 文件中写的,而是用 include 方式写在了GeoJSON.js文件中。Polygon类本来是没有toGeoJSON()方法的,这样就增加了这个方法。如果Polygon类中已经有了toGeoJSON()方法,这样写会根据执行的顺序,后执行的会把先加载的重写。

最后,我们把上面的代码封装成一个js插件,大家引用这个插件,就能实现了对地图的纠偏,不需要写一行js代码,这才是我心目中真正的优雅。

最终效果

下图是引用纠偏插件前后的对比:

注意:leaflet会以map初始化以后,加载的第一个图层的坐标,作为整个map的坐标,所以地图初始化以后,要第一个添加互联网地图作为底图。

总结

  1. leaflet有一个加载国内互联网地图的插件,但存在坐标偏移问题。
  2. 常见的偏移坐标有国测局坐标和百度坐标。网上有一份wgs84坐标国测局坐标和百度坐标相互转换的算法,需要自己集成到leaflet中
  3. 纠偏算法集成到leaflet中有两种思路,一种是把自己的数据偏移到互联网地图,另一种是把互联网地图的瓦片纠偏回自己的数据。
  4. 采用第二种思路,把纠偏算法封装成插件,对互联网地图的瓦片纠偏,在插件中复写源码的方式最为优雅。

在线示例

在线示例:http://gisarmory.xyz/blog/index.html?demo=leafletMapCorrection

纠偏插件:http://gisarmory.xyz/blog/index.html?source=leafletMapCorrection


原文地址:
   http://gisarmory.xyz/blog/index.html?blog=leafletMapCorrection

关注《GIS兵器库》公众号, 第一时间获得更多高质量GIS文章。

本文章采用 知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议 进行许可。欢迎转载、使用、重新发布,但务必保留文章署名《GIS兵器库》(包含链接: http://gisarmory.xyz/blog/),不得用于商业目的,基于本文修改后的作品务必以相同的许可发布。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://bk.xjx100.cn/news/161958.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈,一经查实,立即删除!

相关文章

小熊一键重装系统在线PE重装win10系统步骤

很多用户都会使用笔记本上网来进行工作或是娱乐。不过上网本使用久了,平时又没有进行维护,容易出现卡顿等问题。这时候我们可以通过重装系统来解决电脑卡顿的问题。不过很多用户都不知道如何重装系统,那么下面就让小熊一键重装系统为大家带来笔记本在线PE重装win10系统步骤。…

如何一键重装win10系统?桔子一键重装win10系统教程

win10系统以其界面美观和运行流畅收到众多网友的喜爱。越来越多的人想体验win10系统,安装win10系统的方法也层出不穷,如在线升级、U盘安装等。但是在线升级容易出错,很多用户找不到升级win10的补丁推送,u盘重装又太过麻烦,那么有没有更简单快捷的方法呢?答案是肯定的。今…

酷比魔方电脑如何一键重装win10系统

今天给大家介绍一下酷比魔方电脑如何一键重装win10系统的具体操作步骤。1. 首先我们需要下载安装一款第三方工具:【小鱼一键重装系统】。2. 安装好之后,双击打开【小鱼一键重装系统】,在左侧选择“在线重装”选项,然后在右侧选择我们想要重装的win10系统,单击后面的“安装…

如何给微软电脑一键重装win10系统

我们现在用的电脑大多都有微软公司的软件,而且微软配合最近流行的win10系统还推出了surface系列的触控笔记本,今天就跟大家介绍一下如何给微软电脑一键重装win10系统的具体操作步骤。1. 首先我们需要下载【系统之家一键重装】软件然后安装,安装之后打开,在首页上方选择“一…

win7电脑中的蓝牙图标不见了怎么办?

虽然无线连接已经成为了现在的主流,但是对于有些设备,有些用户来说,蓝牙功能也是咱们电脑中不可或缺的功能,也是咱们日常生活中需要操作到的一个功能。在之前的文章中,小编也已经详细的介绍过在ghost win7系统下载中如何使用蓝牙功能了,不过最近小编又接到了一个关于ghos…

win7搜索功能不见了怎么办

一、Win7搜索不能用的原因: 1、权限受限,有可能你登陆的用户不是管理帐号,没有搜索功能的权限,也就是权限限制了。 2、也有可能搜索服务被关闭掉了,出现这一情况大多是使用了一些优化软件,优化软件把搜索功能给关闭掉了; 二、解决win7搜索功能不见了不能用的方法: 1、仔…

win7系统下文件搜索功能不见了的解决方法

你们在电脑磁盘中想要找一个文件,一般是怎么寻找的?一个磁盘一个磁盘的找寻,还是在搜索功能中输入关键字?很多人也许都对文件进行了分类整理,方便文件的管理,但是大多数人还是没有整理的,或者是文件一多的时候更加难以管理了,这个时候电脑中的搜索功能显得至关重要。最…

如何给高德地图设置竖屏的屏幕方向

我们在使用高德地图导航的时候,想要设置屏幕方向为竖屏,该怎么操作呢?今天就跟大家介绍一下如何给高德地图设置竖屏的屏幕方向的具体操作步骤。1. 解锁手机后,找到桌面上的“高德地图”APP,打开。2. 进入主页面后,点击页面右下角的“我的”选项。3. 在打开的我的页面,点…

手机端WPS怎么将隐藏的sheet标签显示出来

我们现在在手机中可以依靠WPS对文档、表格等进行编辑了,那么今天小编跟大家分享下手机端WPS怎么将隐藏的sheet标签显示出来。具体如下:1. 首先我们需要在手机中打开WPS Office这个APP。2. 进入主界面之后我们点击一个表格打开。3. 打开之后我们点击右上方“...”图标。4. 在下…

电脑版微信中的聊天语音自动转文字功能怎么设置取消

我们在电脑中设置开启了微信中的聊天语音自动转文字功能,想要取消该怎么操作呢?今天就跟大家介绍一下电脑版微信中的聊天语音自动转文字功能怎么设置取消的具体操作步骤。1. 打开电脑,进入桌面,找到微信图标,双击打开。2. 如图,在登录页面,通过手机确认登录。3. 登录进入…

dnf高科技戒指怎么做

高科技系列戒指几乎是DNF中每个职业BUFF换装中必不可少的装备之一,那么究竟如何才能在游戏中获得高科技系列戒指呢?下面小编就来给大家讲解一下。操作方法01首先,进入到游戏后,点击下方功能栏中的“任务手册”选项,或者直接按下快捷键“F1”唤出任务栏。02在任务栏中接取“…

如何设置自定义图片自动更换桌面壁纸?

如何设置自定义图片自动更换桌面壁纸?接下来小编就为大家分享一下设置方法,希望能帮到大家!操作方法01以华为mate10设置自动更换桌面壁纸为例,点击手机设置,如图。02在设置下点击显示按钮,如图。03在显示下点击互动屏保,如图。04把互动屏保打开,然后设置图片来源和播放…

轻松用电脑实时显示手机屏幕

用电脑实时显示手机屏幕,可以在电脑上操作手机,可以借助一款Total Control软件来实现。操作方法01首先,在电脑上下载安装Total Control。02然后把手机用USB数据线连接在电脑上,打开Total Control,会搜索连接设备。03连接成功后电脑桌面上就出现了手机屏,显示你手机的桌面…

LOL青蛙锤石CD流出装顺序

LOL青蛙锤石CD流出装顺序是什么呢?下面就这个话题跟大家说一下操作方法01首先我要说的是,青蛙的cd锤石,在天赋和符文的选择上也是有一定的减cd的,大家不要忘记。一般点星际洞察02另外第一件的出装还是常规的辅助装备,这件装备不过现在没用减cd的了,只有一定的血量。03第二…

dnf街霸、毒王、毒神绝完美换装

街霸是DNF中女格斗家的转职职业之一,BUFF技能为【涂毒】,15级可以学习的技能,可以提升中毒几率、中毒持续时间等,下面小编就来给大家讲解一下毒王的BUFF换装。操作方法01首先来讲一下异界套装,异界2期套装中的“狂犬洛克”,6件套效果中,【涂毒】普通攻击时的攻击力+10%,…

在office word中自动生成目录的步骤

在word中写论文是每个准毕业生都要做的事情,那么如何让word自动生成目录呢,这里为大家简单介绍一下方法,很简单,供大家参考。操作方法01先打开word文档,接着点击文本空白的地方,可以适当输入一些内容,接着点击导航栏中的引用,在这里能找到目录。02接着点击插入下面的目…

手机腾讯视频卡顿如何解决?

今天小编要和大家分享的是手机腾讯视频卡顿如何解决,希望能够帮助到大家。操作方法01首先在我们的手机桌面上找到腾讯WiFi管家并点击它,如下图所示。02然后点击管理,如下图所示。03接着点击视频加速,如下图所示。04然后点击启动加速,如下图所示。05通过以上操作,我们就能…

笔记本电脑怎么开启小键盘

笔记本电脑用久了以后难免会出现一些小毛病,那么这时候该如何进行设置或者使用电脑中的小键盘呢?这里为大家简单介绍一下,供大家参考,希望能有所帮助。操作方法01直接将鼠标点击到电脑的底部黑色位置,然后点击鼠标右键,这时候有很多可以进行选择,然后找打和键盘相关的字…

怎么查苹果手机是不是正品

怎么查苹果手机是不是正品?下面就这个话题跟大家一起来说一下吧操作方法01首先你找到你手机的设置功能。如下图。02然后找到通用功能,然后点击进入,如下图。03进入之后你会看到有关于本机,如下图,然后点击进入。04进入之后你会看到你手机的信息了,尤其是你的序列号,这个…

手机热点怎么设置

今天小编要和大家分享的是手机热点怎么设置,希望能够帮助到大家。操作方法01首先在我们的手机桌面上找到设置并点击它,如下图所示。02然后点击个人热点,如下图所示。03接着点击开启个人热点开关,如下图所示。04然后点击朋友手机桌面上的设置,如下图所示。05接着点击无线局…