南京做网站的公司排名最好看免费观看高清大全多多电影
news/
2025/10/8 20:20:44/
文章来源:
南京做网站的公司排名,最好看免费观看高清大全多多电影,江苏省网站建设哪家好,o2o平台运营是什么意思在LBS(基于位置服务)的一些应用中#xff0c;有时我们会需要计算两个用户或两个坐标点之间的距离。要解决这类问题#xff0c;就要了解空间几何的概念并结合数学中在三角函数公式计算两点之间的值。本文介绍基于经度/纬度的#xff0c;两个坐标点之间的距离计算#xff0c;…在LBS(基于位置服务)的一些应用中有时我们会需要计算两个用户或两个坐标点之间的距离。要解决这类问题就要了解空间几何的概念并结合数学中在三角函数公式计算两点之间的值。本文介绍基于经度/纬度的两个坐标点之间的距离计算与JavaScript的实现代码。1. 解决思路问题已知两个GPS坐标点A和B其坐标值分别为(φ1, λ1)和(φ2, λ2)(φ表示纬度λ表示经度)计算两个坐标点之间的直线距离。解决这个问题时我们可以将经度想象成平面几何中的x轴将纬度想象成平面几何中的y轴。并利用这两个点构造出一个∠C90°的直角三角型如下所示在这个三角型中我们可以根据坐标点A和B计算出坐标点C的坐标为(φ2, λ1)并可以坐标点A和B的经/纬度计算出边a和边b的距离。经过这一系列的推导和计算坐标点之间的距离计算已经转换为利用三角函数计算勾股值的问题。2. 公式及方法2.1 公式根据上面的问题分析在这个计算中我们应该包括以下推导过程经纬度转换为10进制在GPS坐中使用度/分/秒的形式表示我们首先应该将其转换为10进制表示。如点A坐标为(北纬39°5427东经116°2317)可以将其表示为(39.5427, 116.2317)。经纬度转换为弧度三角函数中使用弧度值进行计算还需要将经纬度转换为弧度。转换公式为N*PI/180如将点A的纬度值39.5427转换为弧度39.5427*PI/180(PI为圆周率)。经纬度转换为弧度三角函数中使用弧度值进行计算还需要将经纬度转换为弧度。转换公式为N*PI/180如将点A的纬度值39.5427转换为弧度39.5427*PI/180(PI为圆周率)。A/B两点的经/纬度转为弧度后分别用φA、λA、φB、λB计算边a和边b的弦度利用纬度差我们可得到边a的弧度Δa利用经度差我们可得到边b的弧度Δb(计算时注意取绝对值)。计算边两点间的正弦值和余弦值计算出以上一系列变量后计算出半正矢值a其计算公式为sin²(Δa/2)cos(φA)*cos(φA)*sin²(Δb/2)。计算边正切值c 2*atan2(√a, √(1−a))返回距离d R*c(R表示地球半径)2.2 算法实现综上所述JavaScript实现计算两个坐标点之间的距离方法如下function getDistance(lat1, lon1, lat2, lon2) {var R 6378137; // 地球长半径var φ1 toRadians(lat1);var φ2 toRadians(lat2);var Δφ toRadians(lat2-lat1);var Δλ toRadians(lon2-lon1);var a Math.sin(Δφ/2) * Math.sin(Δφ/2) Math.cos(φ1) * Math.cos(φ2) *Math.sin(Δλ/2) * Math.sin(Δλ/2);var c 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1-a));var d R * c;return d;// 转为弧度function toRadians(d) {return d * Math.PI / 180;}}或者我们可以写成更易读的方式function getDistance(lat1, lng1, lat2, lng2) {var dis 0;var radLat1 toRadians(lat1);var radLat2 toRadians(lat2);var deltaLat radLat1 - radLat2;var deltaLng toRadians(lng1) - toRadians(lng2);var dis 2 * Math.asin(Math.sqrt(Math.pow(Math.sin(deltaLat / 2), 2) Math.cos(radLat1) * Math.cos(radLat2) * Math.pow(Math.sin(deltaLng / 2), 2)));return dis * 6378137;function toRadians(d) { return d * Math.PI / 180;}}使用这个公式计算坐标点(北纬39°5400东经116°2300)与坐标点(北纬38°3800东经115°4800)之间的距离getDistance(39.54, 116.23, 38.85, 115.48)// 100430.73284694664
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/931909.shtml
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!