根据经纬度计算地球上两点之间的距离js实现代码_javascript技巧
利用JS实现的根据经纬度计算地球上两点之间的距离
最近用到了根据经纬度计算地球表面两点间距离的公式,然后就用JS实现了一下。
计算地球表面两点间的距离大概有两种办法。
第一种是默认地球是一个光滑的球面,然后计算任意两点间的距离,这个距离叫做大圆距离(The Great Circle Distance)。
公式如下:
使用JS来实现为:
var EARTH_RADIUS = 6378137.0; //单位M
var PI = Math.PI;
function getRad(d){
return d*PI/180.0;
}
/**
* caculate the great circle distance
* @param {Object} lat1
* @param {Object} lng1
* @param {Object} lat2
* @param {Object} lng2
*/
function getGreatCircleDistance(lat1,lng1,lat2,lng2){
var radLat1 = getRad(lat1);
var radLat2 = getRad(lat2);
var a = radLat1 - radLat2;
var b = getRad(lng1) - getRad(lng2);
var s = 2*Math.asin(Math.sqrt(Math.pow(Math.sin(a/2),2) + Math.cos(radLat1)*Math.cos(radLat2)*Math.pow(Math.sin(b/2),2)));
s = s*EARTH_RADIUS;
s = Math.round(s*10000)/10000.0;
return s;
}
这个公式在大多数情况下比较正确,只有在处理球面上的相对点的时候,会出现问题,有一个修正的公式,因为没有需要,就没有找出来,可以在wiki上查到。
当然,我们都知道,地球其实并不是一个真正的圆球体,而是椭球,所以有了下面的公式:
/**
* approx distance between two points on earth ellipsoid
* @param {Object} lat1
* @param {Object} lng1
* @param {Object} lat2
* @param {Object} lng2
*/
function getFlatternDistance(lat1,lng1,lat2,lng2){
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 = EARTH_RADIUS;
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;
return d*(1 + fl*(h1*sf*(1-sg) - h2*(1-sf)*sg));
}
这个公式计算出的结果要比第一个好一些,当然,最后结果的经度实际上还取决于传入的坐标的精度。

热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

AI Hentai Generator
免费生成ai无尽的。

热门文章

热工具

记事本++7.3.1
好用且免费的代码编辑器

SublimeText3汉化版
中文版,非常好用

禅工作室 13.0.1
功能强大的PHP集成开发环境

Dreamweaver CS6
视觉化网页开发工具

SublimeText3 Mac版
神级代码编辑软件(SublimeText3)

热门话题

给定一个三维平面,因此有三个坐标,任务是找到给定点之间的距离并显示结果。在三维平面上,有三个坐标轴,x轴的坐标为(x1,y1,z1),y轴的坐标为(x2,y2,z2),z轴的坐标为(x3,y3,z)。计算它们之间的距离有一个直接的公式如下所示$$\sqrt{\lgroupx2-x1\rgroup^{2}+\lgroupy2-y1\rgroup^{2}+\lgroupz2-z1\rgroup^{2}}$$下面是表示三个不同坐标轴及其坐标的图示下面使用的方法如下−输入坐标(x1,

本文转载自微信公众号「活在信息时代」,作者活在信息时代。转载本文请联系活在信息时代公众号。在机器学习中,一个基础的概念就是如何判断两个样本之间的差异,从而能够评价两个样本之间的相似性和类别等信息。而判断这种相似性的度量就是两个样本在特征空间内的距离。根据数据特征的不同,度量方法有很多种。一般而言,对两个数据样本x,y,定义一个函数d(x,y),如果定义其为两个样本之间的距离,那么d(x,y)则需要满足以下几条基本性质:非负性:d(x,y)>=0同一性:d(x,y)=0 ⇔ x=y对

在其年度开发者大会上,苹果推出了下一代操作系统来为其设备套件提供支持。像往常一样,iOS17是所有主要变化的核心,具有实时语音邮件、消息转录、实时贴纸、待机模式、全屏实时活动、交互式小部件等功能。在这些新增功能中脱颖而出的功能之一是“屏幕距离”。这是一项以健康为中心的功能,专注于防止iPhone屏幕上的眼睛疲劳和近视。在这篇文章中,我们将解释什么是屏幕距离以及如何在iOS17中启用它。什么是iOS17上的屏幕距离?作为iOS17推出的新健康功能的一部分,Apple提供了屏幕距离功能,以帮助用户预

iOS17更新中的屏幕距离功能是什么?苹果在iPhone上提供了屏幕距离功能,以帮助用户防止眼睛疲劳和近视风险。该功能(在iOS17或更高版本上可用)将利用iPhone的原深感摄像头(也有助于FaceID的摄像头)来测量脸部与手机之间的距离。如果“屏幕距离”检测到您将iPhone握在12英寸或30厘米以下的时间很长,它会提示您与iPhone屏幕保持距离。当您的设备检测到它距离脸部不到12英寸时,您会在屏幕上看到“iPhone太近”消息,并建议您应该保持距离以保护您的视力。只有当您将设备放在更远的

我们在使用这款平台的时候,都有了解到每一个位置地点方面都是会有坐标的,我相信学过地理的同学们都能知道经纬度坐标是什么,上面的功能可以说是非常强大的了,不仅可以实时的定位到你所在的一些位置,并且还能让你们了解到当前的一些经纬度是多少,也就是说我们都能任意的查看到在地图方面任意位置的经纬度坐标是在哪里,这样我们可以更好准确的知道相对应的一些具体的位置,但是不知道查看的用户们还是占有大多数的,所以为了能够让你们更好的对其进行一些了解,现在就和小编一起来看看吧,我相信你们应该不会错过的,赶紧来看看。

谷歌地图是可以查看经纬度,那么如何查看经纬度呢?用户们点击一个位置的信息,然后点击查看更多,就能够在里面查看到具体的经纬度信息。这篇查看经纬度方法介绍就能够告诉大家具体的内容,下面就是详细的方法,赶紧看看吧。谷歌地图如何查看经纬度答:点击地点,选择查看详细信息。具体介绍:手机版:1、首先进度地图,选择一个需要查看的位置。2、点击里面的查看全部这个按键。3、就能够看到详细的经纬度了。电脑版:1、首先进入谷歌地图网站。https://www.google.cn2、右击查看需要的位置,点击这儿有什么。

UWB技术在行业应用市场中出现了一个有趣的趋势:基站的传输距离正在逐渐增加一个典型的场景是隧道或矿井,这种场景的特点是空间是线性的,中间没有太多的遮挡物,UWB基站也是直线布设。基站的工作距离越远,项目所需的基站数量就越少,项目成本也就越低在市场竞争下,市场上的UWB基站工作距离就越来越远,基站的工作距离从早期的几十米,扩大到100m、200m、500m、1000m、2000m甚至更远。这背后的商业逻辑本文就不做过多的探讨。为什么UWB基站的工作距离越来越远?其中有两个关键的组件,一个是天线,另

如何使用Java代码在百度地图上显示当前位置的经纬度?百度地图是一款非常流行的地图应用程序,在开发地理位置相关的应用时经常会用到。本文将介绍如何使用Java代码在百度地图上显示当前位置的经纬度。首先,我们需要准备一个百度开发者账号,并创建一个应用来获取API密钥。在百度开发者网站上注册账号并登录后,我们可以在控制台中创建一个应用,并获得一个API密钥,用于访
