给定随机纬度/经度,从给定隐含行进方向的坐标列表中找到最接近的坐标(纬度/经度)

时间:2019-02-01 07:07:19

标签: algorithm google-maps geospatial google-distancematrix-api

需要编写以下函数来计算给定3个输入的距离:

  1. 带有坐标的停靠点列表,这也暗示了行进的方向。更像是一个多边形,或者会形成一个闭环。
  2. 随机围绕循环进行协调。
  3. 第1点中列出的坐标之一。

需要找到2到3之间的距离,并牢记循环的方向。

P.S。,更像Google如何根据给定路线的两个点来查找距离。但是不能使用Google API。

1 个答案:

答案 0 :(得分:1)

Here,您可以找到公式和JS代码以获取坐标之间的距离

JavaScript: 
var R = 6371e3; // metres
var φ1 = lat1.toRadians();
var φ2 = lat2.toRadians();
var Δφ = (lat2-lat1).toRadians();
var Δλ = (lon2-lon1).toRadians();

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;

据我了解,您必须按顺序检查点与所有停止节点之间的距离。

P-S[i]P-S[i+1]的最小距离总和显示了与该点最接近的线段(并不总是起作用,例如,对于自相交路径等)