目录

  • 一、经纬度的科普
  • 二、目前各大地图平台的经纬度标注方式
    • 1. 百度地图
    • 2. 高德地图
    • 3. 谷歌地图
  • 三、坐标体系
    • 1. 目前的坐标体系有哪些
    • 2. 各大地图平台使用的是哪种坐标体系
  • 三、两个坐标之间的距离计算
    • 1. geodatasource
    • 2. MYSQL
  • 四、总结

一、经纬度的科普

什么是经纬度呢?其实各位上学的时候地理课上都学过,作为本文中基础中的基础,有必要普及一下。

地理坐标系一般是指由经度、纬度和相对高度组成的坐标系,能够标示地球上的任何一个位置。经度和纬度常合称为经纬度,把球面上的经纬度显示在平面地图上需要采用某种地图投影。

经度、纬度能够标记地球上的位置。

经纬度以度数表示,一般可直接以小数点表示,但亦可把度数的小数点分为角分(1角分等于六十分之一度),和秒(一秒等于六十分之一分)。

  1. 度分秒表示(度:分:秒)-49°30’00"-49d30m00s
  2. 度分表示(度:分)-49°30.0’-49d30.0m
  3. 度数表示-49.5000°-49.5000d(一般会有四位小数)。

经度范围是0-180°,纬度范围是0-90°。

二、目前各大地图平台的经纬度标注方式

1. 百度地图

百度地图的页面不支持查看经纬度坐标,你需要到百度地图开放平台找打拾取坐标工具,地址是 https://api.map.baidu.com/lbsapi/getpoint/index.html ,可以在地图选点,找到经纬度。

下图所示,我在地图上找到的点的作为116.415979,39.888558

百度地图的坐标是经度在前纬度在后的方式。

2. 高德地图

高德地图同样也需要在开放平台找到坐标拾取器,可以查看具体位置的坐标,地址是https://lbs.amap.com/tools/picker , 比如我还是在天坛公园内随便找了一个点,坐标为116.410829,39.881913

百度地图和高德地图都是保留了小数点后6位

3. 谷歌地图

谷歌地图在位置上点击,就能显示位置的坐标,下图的坐标为39.883966, 116.414634.

和上面两个不同的是,谷歌地图的坐标为纬度在前经度在后,需要你在实际项目开发中注意。

三、坐标体系

1. 目前的坐标体系有哪些

WGS84:为一种大地坐标系,也是目前广泛使用的GPS全球卫星定位系统使用的坐标系。

GCJ02:又称火星坐标系,是由中国国家测绘局制定的地理坐标系统,是由WGS84加密后得到的坐标系。

BD09:为百度坐标系,在GCJ02坐标系基础上再次加密。其中bd09ll表示百度经纬度坐标,bd09mc表示百度墨卡托米制坐标。

2. 各大地图平台使用的是哪种坐标体系

  • 百度地图——BD09
  • 高德地图——GCJ02
  • 谷歌地图——GCJ02

目前百度地图提供了非百度坐标系转换为百度坐标系的API,文档地址是 https://lbsyun.baidu.com/index.php?title=webapi/guide/changeposition 。

注意的是,根据相关法律规定,不支持将任何一种坐标系坐标转换为GPS标准坐标。

我们从接下来要讲的的距离测算方法来看,不同的坐标体系内测量距离的方式是一样的,坐标体系更多的意义是在于对于真实坐标系的隐藏而不影响日常大众对于位置服务的使用。

三、两个坐标之间的距离计算

目前市面上计算两点之间距离的基本都是基于余弦球面定律,该定律使用三角函数来测量地球的曲率,以准确测量地球上的距离。

1. geodatasource

这个网站提供了全世界各个城市的经纬度信息,他自带了距离计算器,地址是 https://www.geodatasource.com/demo ,并且提供各种语言的距离计算函数。你在网上搜索到的各种文章,也基本都是这个源码。

function distance($lat1, $lon1, $lat2, $lon2, $unit) {if (($lat1 == $lat2) && ($lon1 == $lon2)) {return 0;}else {$theta = $lon1 - $lon2;$dist = sin(deg2rad($lat1)) * sin(deg2rad($lat2)) +  cos(deg2rad($lat1)) * cos(deg2rad($lat2)) * cos(deg2rad($theta));$dist = acos($dist);$dist = rad2deg($dist);$miles = $dist * 60 * 1.1515;$unit = strtoupper($unit);if ($unit == "K") {return ($miles * 1.609344);} else if ($unit == "N") {return ($miles * 0.8684);} else {return $miles;}}
}echo distance(32.9697, -96.80322, 29.46786, -98.53506, "M") . " Miles<br>";
echo distance(32.9697, -96.80322, 29.46786, -98.53506, "K") . " Kilometers<br>";
echo distance(32.9697, -96.80322, 29.46786, -98.53506, "N") . " Nautical Miles<br>";

其他语言参考 https://www.geodatasource.com/resources/categories/technical/

2. MYSQL

MySQL的5.7版本内建了函数,可以计算距离。文档地址是 https://dev.mysql.com/doc/refman/5.7/en/spatial-convenience-functions.html#function_st-distance-sphere 。

SELECT ST_Distance_Sphere(ST_GeomFromText('POINT(116.41294 39.883374)'), ST_GeomFromText('POINT(116.413085 39.882777)')) as d_distance;

如下图所示,返回的距离单位是米。

四、总结

在实际项目中,要统一使用的地图API,尽量不要多种地图一起使用,不同的坐标体系在地图上标记位置会不准确。

【LBS】高德地图、百度地图的经纬度科普|MySQL和编程语言是如何计算两个坐标之间的距离?相关推荐

  1. oracle如何计算2个坐标的距离,百度地图两个坐标之间的距离计算

    /** * 计算两组经纬度坐标 之间的距离 * params :lat1 纬度1: lng1 经度1: lat2 纬度2: lng2 经度2: len_type (1:m or 2:km); * re ...

  2. mysql 计算gps坐标距离_mysql实现经纬度计算两个坐标之间的距离

    DELIMITER $$ CREATE DEFINER = CURRENT_USER FUNCTION `getDistance`(`lon1` float,`lat1` float,`lon2` f ...

  3. vue项目H5调起高德或百度地图手机应用,或调起高德百度网页版实现导航功能(已实现)

    需求说明:H5实现唤起高德和百度地图导航到目标景点的功能 分析:用户通过点击选择使用百度还是高德地图,点击后调用guide方法,判断设备上是否有高德或者百度APP,有就直接调用APP,如果没有就调用网 ...

  4. WEB页面或者H5页面如何打开高德或者百度地图APP导航(实战向)

    一.序言 在日常开发中,地图的接入使用在各大app和网站中我们都不难见到,打开方式也各有不同,嵌套内部的,或者是直接打开百度,高德,谷歌等地图app.相对来说,各大地图app的文档写的非常齐全,即使是 ...

  5. Android实现高德地图上拉,ScrollLayout:上拉滑动上滑拖出,类似高德地图百度地图抽屉拖拽效果...

    摘要 在ScrollView或者ListView里面使用ViewPager.支持手势上拉滑出,中途停顿,下滑退出页面,类似高德地图百度地图内场景抽屉拖拽效果效果 Gif动画 类似使用 Demo 下载A ...

  6. H5页面唤醒高德地图|百度地图App

    H5页面唤醒高德地图|百度地图App 移动端H5页面唤醒app,若唤醒失败则跳转到应用商城下载. 唤醒前需要检测当前操作系统,不同的操作系统用不同的协议 我这里的需求是唤醒失败就跳转到网页版的地图,若 ...

  7. Flutter对接第三方高德地图+百度地图基础定位实现

    Flutter对接第三方高德地图+百度地图基础定位实现 原创:@As.Kai 博客地址:https://blog.csdn.net/qq_42362997 如果以下内容对您有帮助,点赞点赞点赞~ 高德 ...

  8. 地图导航业下半场,高德与百度地图各缺一子?

    百度地图和高德地图的份额之争一直没有平息,二者的用户量高低在业内一直是个谜. 有说高德超过百度的:在2017年8月,国内第三方数据研究机构Talking Data移动观象台发布的月度APP覆盖率排行榜 ...

  9. 5张对比图告诉你,天地图,高德地图,百度地图,谷歌地图区别

    先来看看传说中最争议的天地图吧. 最大放大距离,每厘米25米. 我们用这个体育场和下面的大厦做对比..其实还有大厦下的车..(这张图上的车看不清,真有,没骗你们....) 再上一张高德的, 最大50M ...

  10. 利用高德地图API获取任意两座城市之间的距离!异地也有惊喜!

    工作中有时会遇到这样一种场景:年末需要统计所有员工该年的航旅出差情况,然后根据他们的飞行距离补贴一定的交通费.例如如下所示情况: 然而,如果我们使用地图APP等工具逐一进行手工查询,在一家规模稍大的公 ...

最新文章

  1. python画图代码turtle-Python使用Turtle图形函数画图 颜色填充!
  2. Spring核心技术之IOC容器(一):IOC容器与Bean简介
  3. OpenGL开发库的详细介绍
  4. 一个基于STM32实现的多组分气体分析仪项目
  5. CF1228C. Primes and Multiplication(数学)
  6. elementui表格列宽自适应_Java 操作Word表格——创建嵌套表格、添加复制表格行或列...
  7. 利用函数imnoise2处理噪声污染和spfilt处理滤波器
  8. mysql8忘记密码后重置密码
  9. 普通java类注入dao失败_spring mvc 整合mybatis dao接口注入失败
  10. 张孝祥张老师一路走好!
  11. 2019第十届蓝桥杯JAVA G组题解
  12. [BZOJ1587]叶子合并leaves
  13. 共模电压你了解多少?陈老师带你搞清楚
  14. 想了解机器学习?这 3 种算法你必须要知道(中英文对照)
  15. 点、圆、圆柱类的设计
  16. 处理数据中心发生的故障,应该遵循哪些原则?
  17. Shell expr
  18. 园区智慧安防解决方案2020
  19. 大盘点!国内外深度相机汇总
  20. word该值小于列表中的前一条目_Word域的应和详解.doc

热门文章

  1. Crystal Ball—蒙地卡罗仿真软件
  2. Go语言编程从入门到精通,数据类型
  3. java1.6安装_JAVAjdk1.6安装方法
  4. 简单开发一个java 插件式demo
  5. MFC开发之显示网页
  6. 计算机主机插线安装驱动程序,刻字机usb驱动设置及使用方法-刻字机USB 接口安装及使用说明...
  7. 高斯分布matlab程序,生成高斯分布的matlab程序
  8. 一文告诉你Java素数怎么判断
  9. 自学编程、玩 vlog,90 后程序员们的冠军之路
  10. 几大经典算法c语言cnds,浮点数据有损压缩算法 附完整C代码