百度地图开发坐标问题总结

雾凇接口
• 阅读 11084

PC端使用了百度地图搜索位置并显示在地图上 最后获取位置的经纬度坐标
移动端分别使用了百度地图获取实时经纬度 获取文字地址 定位在地图上
其中发现很多问题 及时总结下

坐标系种类和使用现状

当前国内地图参考系分三种:

  1. WGS84坐标系
    直接从GPS获取器中取出的原始数据 国际地图供应商使用的坐标系

  2. GCJ-02火星坐标系(国测局坐标系)
    中国标准 国行GPS产品获取到的数据使用的坐标 国家规定: 国内出版的各种地图系统(包括电子形式),必须至少采用GCJ-02对地理位置进行首次加密。

  3. BD-09百度坐标系
    百度标准,百度 SDK,百度地图,Geocoding 使用 本来就乱了,百度又在火星坐标上来个二次加密

三种参考系的使用情况:

  1. 国外如google地图 H5浏览器使用的都是WGS参考系

  2. 国内的大多数如 腾讯地图 高德地图 iOS地图(高德地图) 均是使用的火星坐标系

  3. 百度获取地理位置的方法 得到的坐标是百度坐标 (百度是基于浏览器获取地理位置方法进行了封装)

三种坐标系转换情况:

  1. 高德地图提供了WGS转火星坐标的方法

  2. 百度地图提供了WGS转百度地图的方法

  3. 微信获取地理位置默认WGS 可选择为火星坐标

三种坐标系的数据相对于真实位置对比

真实位置:北京市朝阳区洛娃大厦C座 116.475176 40.018079

地图上显示位置:

1.WGS

百度地图开发坐标问题总结

以上是WGS真实坐标应该在百度地图上显示的位置

2.火星坐标

如果认为上述坐标为火星坐标时候 将其显示在百度地图上 位置则会发生偏移

百度地图开发坐标问题总结

3.百度坐标

如果又将上诉坐标认为是百度坐标时 将其显示在百度地图上 位置则有发生偏移

百度地图开发坐标问题总结

可见加密过的坐标 均相对于真实坐标向西南角偏移 直线距离大概一公里

所以 当通过某种获取地理位的方式获取到坐标 而不知道其实什么坐标系的时候
可用上诉方法找个真实坐标对比 快速判定其坐标系
用图表示

百度地图开发坐标问题总结

可以看到 三种坐标系转换的方法 是不全面的
高德和百度只提供转到其自己坐标系的转换方法 不支持转出其他坐标系的方法

现在项目遇到的情况
数据库保存的是在PC端设置的 WGS坐标
移动端获取的百度坐标系
两者之间进行距离计算 需要转换

明白了各种获取位置是什么坐标系的
再明白了各种坐标系之间的转换就容易多了

坐标系转换方法

这里安利github上一个人做的转换方法(star 565)
里面可以实现各种坐标的来回转换 极大地方便了开发使用
wandergis/coordtransform

另外可以查看各个坐标相对于真实位置的地图位置工具
在线经纬度查询

大概就是这样

点赞
收藏
评论区
推荐文章
Irene181 Irene181
4年前
只要两步,用Python将地址标记在地图上!
大家好,在之前的文章中,很多读者私信对如何将商家地址标记到地图上感兴趣👇本文就将讲解,给你一个地址,如何用Python进行可视化,只需要两步:将地址转成经纬度根据经纬度在地图上标记点一、将地址转成经纬度首先我们需要将地理位置转成经纬度这种统一格式,方便代码去识别。完成这一个需求可以使用爬虫通过在线的经纬度转换网站来实现,也可以使用
Easter79 Easter79
3年前
uniapp安卓app打包后获取位置信息失败解决方法(含高德地图key详细申请流程)
这个也是我在做uniapp混合app时遇到的问题,也是困惑了几天,网上也有很大相关文章,但是有些地方有些不清晰,让新手很困惑。问题原因我在项目中碰到两个问题1.如果只需要用定位功能获取到经纬度坐标的,可以不用在manifest.jsonAppSDK配置中勾选定位和地图服务(注意:部分国产Android手机可能必须勾
Easter79 Easter79
3年前
vue 百度地图实现标记多个maker,并点击任意一个maker弹出对应的提示框信息, (附: 通过多个地址,标记多个marker 的 方法思路)
通过点击不同筛选条件,筛选出不同企业所在的地点,根据每个企业的经纬度在地图上标记多个maker,点击任意一个maker,会弹出infoWindow信息窗口;说明: 因每个人写法不同、需求不同,部分代码未提供复制粘贴需要参考: 百度地图API1、初始化地图this.baiduMapnewBMap.Map("allMap
Jacquelyn38 Jacquelyn38
4年前
2020年前端实用代码段,为你的工作保驾护航
有空的时候,自己总结了几个代码段,在开发中也经常使用,谢谢。1、使用解构获取json数据let jsonData  id: 1,status: "OK",data: 'a', 'b';let  id, status, data: number   jsonData;console.log(id, status, number )
Easter79 Easter79
3年前
SVG的坐标系统
在开始学习如何绘图之前,我们先来看一下SVG的坐标系统。与很多计算机绘图所使用的坐标系统一样,SVG也使用了网格坐标系统。这种坐标和我们以前在数学中学过的坐标有些不同。数学中的坐标是由x轴(水平横向延伸)和y轴(垂直纵向延伸)交织组成,交点被称为坐标原点(0,0)。原点沿x轴向右为正值,反之为负值,沿y轴向上
Stella981 Stella981
3年前
LeafLet 简单使用
Leaflet使用最近在Angular项目中,用到了地图,由于种种原因放弃了百度地图api使用,最后选择了leaflet,简单介绍一下。介绍:Leaflet是一个为移动设备设计的交互式地图的开源的javascript库,并只有38k,包含了大多数开发者需要的地图特点。准备:下载leaflet文件
Wesley13 Wesley13
3年前
Java调用百度地图API
本实战代码将使用百度地图的接口来实现以下功能: 1.确定输入地址的坐标 2.两个坐标的距离其他的话,还要使用百度账户申请相关的api,具体见:http://lbsyun.baidu.com/index.php?titlewebapi示例代码:importcom.alibaba.fastjson.JSON;im
Stella981 Stella981
3年前
Google Map 开发(三):Google Map 地点搜索功能
开发国内应用当我们需要使用到地图时,首选肯定是高德地图或者百度地图,这是因为它们的地图功能足够强大,对于开发人员来说,更是因为API封装的完善和简单的调用实现,扩展功能强大。如果要开发全球通用的APP,需要集成地图,我们难免会对需要使用的地图SDK进行一番调研,百度和高德并没有全世界范围的地图数据,在亚洲或许还能使用以下,对于需要全球范围内都要
鸿蒙小林 鸿蒙小林
1个月前
《仿盒马》app开发技术分享-- 定位获取(25)
技术栈Appgalleryconnect开发准备上一节我们实现了地址管理页面的数据查询和展示,接下来我们要实现的功能是地址添加相关的,我们想实现的功能是地图选点,那么在地图选点之前我们要做的就是先获取用户当前的定位。获取定位后我们拿到经纬度和其他信息,然后
鸿蒙小林 鸿蒙小林
1个月前
《仿盒马》app开发技术分享-- 原生地图展示(26)
技术栈Appgalleryconnect开发准备上一节我们实现了获取当前用户的位置,并且成功的拿到了经纬度,这一节我们就要根据拿到的经纬度,结合我们其他的知识点来实现地图的展示。功能分析地图的展示,我们需要在管理中心先给我们对应的应用开启地图api功能,否
鸿蒙小林 鸿蒙小林
1个月前
《仿盒马》app开发技术分享-- 新增地址(28)
技术栈Appgalleryconnect开发准备上一节我们实现了地图选点,获取当前位置,在地图上添加标记,根据当前的定位获取poi地址列表等功能,这些全部都为了我们这一节而铺垫,这一节我们要实现的是新增地址,把我们的用户信息,填写收件人、门牌号、手机号、经