根据经纬度计算距离公式

图片来自互联网

对上面的公式解释如下:

  1. Lung1 Lat1表示A点经纬度, Lung2 Lat2表示B点经纬度;
  2. a=Lat1 – Lat2 为两点纬度之差 b=Lung1 -Lung2 为两点经度之差;
  3. 6378.137为地球半径,单位为千米;
  4. 计算出来的结果单位为千米,若将半径改为米为单位则计算的结果单位为米。
  5. 计算精度与谷歌地图的距离精度差不多,相差范围在0.2米以下。

参数说明

lng:经度
lat:纬度
地球半径:6378.137(千米)

一般地图上显示的坐标顺序为,纬度在前(范围-90 ~ 90),经度在后(范围-180 ~ 180)

各种语言计算距离的代码

这种计算方式一般都是直线距离

sql语句

SELECT*,6378.138 * 2 * ASIN(SQRT(POW(SIN(('.$lat.' * PI() / 180 - lat * PI() / 180) / 2), 2) + COS('.$lat.' * PI() / 180) * COS(lat * PI() / 180) * POW(SIN(('.$lng.' * PI() / 180 - lng * PI() / 180) / 2), 2))) *1000 AS distance
FROMdistance
ORDER BYdistance ASC

php计算距离

/*** 根据两点间的经纬度计算距离* @param $lng1* @param $lat1* @param $lng2* @param $lat2* @return int*/
public static function getDistance($lng1, $lat1, $lng2, $lat2)
{//将角度转为狐度$radLat1 = deg2rad($lat1);//deg2rad()函数将角度转换为弧度$radLat2 = deg2rad($lat2);$radLng1 = deg2rad($lng1);$radLng2 = deg2rad($lng2);$a = $radLat1 - $radLat2;$b = $radLng1 - $radLng2;$s = 2 * asin(sqrt(pow(sin($a / 2), 2) + cos($radLat1) * cos($radLat2) * pow(sin($b / 2), 2))) * 6378.137 * 1000;return $s;
}

js求距离的方法

/*** 转换弧度* @param d* @returns {number}*/
function getRad(d){var PI = Math.PI;return d*PI/180.0;
}/*** 根据经纬度计算两点间距离* @param lng1* @param lat1* @param lng2* @param lat2* @returns {number|*}* @constructor*/
function CoolWPDistance(lng1,lat1,lng2,lat2){var f = getRad((lat1 + lat2)/2);var g = getRad((lat1 - lat2)/2);var l = getRad((lng1 - lng2)/2);var sg = Math.sin(g);var sl = Math.sin(l);var sf = Math.sin(f);var s,c,w,r,d,h1,h2;var a = 6378137.0;//The Radius of eath in meter.var fl = 1/298.257;sg = sg*sg;sl = sl*sl;sf = sf*sf;s = sg*(1-sl) + (1-sf)*sl;c = (1-sg)*(1-sl) + sf*sl;w = Math.atan(Math.sqrt(s/c));r = Math.sqrt(s*c)/w;d = 2*w*a;h1 = (3*r -1)/2/c;h2 = (3*r +1)/2/s;s = d*(1 + fl*(h1*sf*(1-sg) - h2*(1-sf)*sg));if(s >= 1000 && s <= 99000){var kilometer = s/1000;s = kilometer.toFixed(1) + 'km';}else if(s > 99000){s = '>99km';}else{s = Math.round(s) + 'm';}// s = s/1000;// s = s.toFixed(2);//指定小数点后的位数。return s;
}

以上代码大部分来自网上收集,经过验证过的,可以使用

mysql,php和js根据经纬度计算距离相关推荐

  1. php mysql 经纬度_mysql,php和js根据经纬度计算距离

    根据经纬度计算距离公式 图片来自互联网 对上面的公式解释如下: Lung1 Lat1表示A点经纬度, Lung2 Lat2表示B点经纬度: a=Lat1 – Lat2 为两点纬度之差 b=Lung1 ...

  2. php 经纬度 距离排序,php mysql 根据经纬度计算距离和排序

    #1.两点距离(1.4142135623730951) select st_distance(point(0,0),point(1,1)); select st_distance(point (120 ...

  3. js根据经纬度计算两点距离

    js根据经纬度计算两点距离 1.html <button type="button" οnclick="distanceByLnglat(116.95400,39. ...

  4. mysql数据库根据经纬度计算距离,获取离我最近的地点列表,并排序。附近的人,附近商店等功能,一个sql就搞定

    mysql数据库根据经纬度计算距离,获取离我最近的地点列表,并排序 附近的人,附近商家等功能,顺序显示顺序是由近到远的,便利用户查看和判断,sql实现如下. StringBuilder sb=new ...

  5. 根据两点间的经纬度计算距离

    /** * @desc 根据两点间的经纬度计算距离 * @param float $lat 纬度值 * @param float $lng 经度值 */ function getDistance($l ...

  6. 百度地图经纬度计算距离(Java)

    百度地图Java经纬度计算距离 阅读百度地图Web服务api文档 Maven依赖 百度地图经纬度工具类 阅读百度地图Web服务api文档 Maven依赖 <!--baidu--><d ...

  7. 根据两点经纬度计算距离

    根据两点经纬度计算距离 这些经纬线是怎样定出来的呢?地球是在不停地绕地轴旋转(地轴是一根通过地球南北两极和地球中心的 假想线),在地球中腰画一个与地轴垂直的大圆圈,使圈上的每一点都和南北两极的距离相等 ...

  8. 经纬度计算距离的公式

    经纬度计算距离的公式是: 设点A(lat1, lon1),点B(lat2, lon2) d = R * arccos(sin(lat1) * sin(lat2) + cos(lat1) * cos(l ...

  9. mysql语句,根据传入的经纬度,查询距离最近的地点和距离

    经纬度计算距离公式 对以上公式描述 1.Lung1 Lat1表示A点经纬度, Lung2 Lat2表示B点经纬度: 2.a=Lat1 – Lat2 为两点纬度之差 b=Lung1 -Lung2 为两点 ...

最新文章

  1. CMD 输入中文看不到输入法的解决方法
  2. 用C#2.0实现网络蜘蛛(WebSpider)
  3. 我在Suse 11 Sp3上使用anaconda安装TensorFlow的过程记录
  4. Eclipse出现Class Not Found异常时可以参考我所知道的一个方案
  5. Hadoop源码分类概要整理
  6. 通过SQL Server 2008 访问Oracle 10g
  7. maven的聚合和继承详解(2021版)
  8. 一篇文章搞懂前端学习方法与构建知识体系,怎么做自己的职业规划
  9. Postgresql Hot_Standby 流复制 基于Linux 对postgresql 和 linux 会基本的操作
  10. Paranoid String
  11. 管理员如何保证企业邮箱的安全?【企业邮箱申请】
  12. pta简单的插入排序
  13. 典型相关分析(Matlab实现函数)
  14. 分布式一致性协议Raft,以及难搞的Paxos
  15. 数据库DQL数据查询语言
  16. Android studio插件GsonFormat 的使用
  17. Openssl Aes加解密使用示例
  18. 【PYTHON数据分析实战】电影票房数据分析(一)数据采集
  19. 高级软件工程第三次大作业(周帅)
  20. 京东末位淘汰:为什么末位淘汰不适合用在软件研发团队?

热门文章

  1. Android 以太网转 WiFi 热点 (并在同一网段 192.168.0.xx)
  2. 提高无线网络下载速度的秘诀
  3. VB获取快捷方式原文件路径
  4. 百度又要开放哪些无人车新能力?“老司机”Apollo3.5要来了,市中心开车无压力...
  5. 一个八卦的AI,嗅到了你和TA之间基情满满
  6. 马库斯:DeepMind新出的机器心智网络不错,但有误导性
  7. 应用悄悄拿走你的隐私做了什么?只需30秒这个AI给你答案
  8. dubbo-monitor-simple-2.5.3-assembly 简易监控中心安装
  9. 中国人寿如何基于容器搭建金融PaaS云平台
  10. linux忘记root密码怎么修改密码和多台linux相互使用密钥连接