根据经纬度计算距离公式

图片来自互联网

对上面的公式解释如下:

Lung1 Lat1表示A点经纬度, Lung2 Lat2表示B点经纬度;

a=Lat1 – Lat2 为两点纬度之差 b=Lung1 -Lung2 为两点经度之差;

6378.137为地球半径,单位为千米;

计算出来的结果单位为千米,若将半径改为米为单位则计算的结果单位为米。

计算精度与谷歌地图的距离精度差不多,相差范围在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

FROM

distance

ORDER BY

distance 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;

}

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

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

  1. mysql 地理_MySQL geometry地理位置数据存储和计算

    最近学习了些MySQL geometry数据存储和计算,在这里记录下. 1. 环境 geometry推荐在5.6版本以上使用,尽管大部分功能在5.5已经可用,除了距离计算函数st_distance等新 ...

  2. knex mysql 操作_mysql – 使用knex.js的我的Sql Alter表

    需要使用knex更改MySql Db中列的数据类型和默认值; 稍后数据类型是日期,需要将其更改为dateTime以及从NULL更改为CURRENT_TIMESTAMP所需的默认值 下面给出了MySql ...

  3. knex mysql 操作_mysql – 使用knex.js的我的Sql Alter表

    需要使用knex更改 MySql Db中列的数据类型和默认值; 稍后数据类型是日期,需要将其更改为dateTime以及从NULL更改为CURRENT_TIMESTAMP所需的默认值 下面给出了MySq ...

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

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

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

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

  6. node在linux无法连接mysql,无法连接到Node.js上的MySQL数据库

    我仍然无法弄清楚为什么我在尝试连接到Node.js上的MYSQL服务器时仍然收到此错误消息 – 错误 – Error: ER_ACCESS_DENIED_ERROR: Access denied fo ...

  7. 基于js利用经纬度进行两地的距离计算

    转自:http://www.storyday.com/html/y2009/2212_according-to-latitude-and-longitude-distance-calculation- ...

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

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

  9. 百度地图根据经纬度计算距离php,详解js根据百度地图提供经纬度计算两点距离...

    正常在使用百度地图时,我们可以通过BMap的实例对象提供的方法计算距离: var map = new BMap.Map('map_canvas'); map.getDistance(point1 ,p ...

最新文章

  1. Linux挂载卸载光盘实践
  2. (C++)异常退出情况合集(持续更新中)
  3. CreateWindow创建指定宽和高的client区域窗口的方法
  4. python flask 设置 header 响应体、响应头、状态码
  5. SilverLight学习笔记--如何解决Button不响应MouseLeftButtonDown与MouseLeftButtonUp事件的问题...
  6. 【bzoj2754】【scoi2012】喵星球上的点名
  7. 06-03 Jenkins 节点管理(Linux)
  8. iOS | NSProxy
  9. 如何使用Deckset配置编辑命令
  10. 基于Javaweb校园代步工具租赁系统毕业设计源码061335
  11. 从5点来分析搜索引擎算法
  12. 水箱建模最小二乘法_消防水箱的设置要求
  13. Evolutionary Learning: Advances in Theories and Algorithms PART I
  14. 收到微软律师函怎么办?当接到微软律师函的处理办法
  15. magisk卸载内置软件_Win10自带软件怎么卸载 Win10自带软件卸载方法【详细教程】...
  16. 深度丨详解 Amazon Go 三大核心技术
  17. python基础学习的书籍
  18. 创建三维头像只需一张自拍,AI 技术即将开启 3D 社交时代?
  19. 特惠|好物推荐iPhone充电线两条装6.9元
  20. 基于GRNN网络和小波变换的ECG信号睡眠监测matlab仿真

热门文章

  1. win8 应用商店程序使用SQLITE数据库
  2. 【面试】2020软件测试面试题及答案汇总
  3. 打开动森显示维护服务器,动物森友会服装店开启条件是什么 动森服装店打开方式一览...
  4. Springboot整合kaptcha实现验证码
  5. BES平台(恒玄) ANC调试笔记
  6. 9. 自媒体素材管理
  7. java进国企养老_国企事业单位都交社保!退休待遇差别却很大!
  8. c#窗体应用程序看Console.WriteLine打印的内容
  9. html 2 swf 转换器,iPixSoft SWF to HTML5 Converter(SWF到HTML5转换器) V3.6.0 官方版
  10. 创新引导工具发明原理关键词推荐