在Google Maps API中2个点之间的直线上的特定距离后找到一个点

时间:2018-08-13 07:11:52

标签: javascript jquery google-maps google-maps-api-3

我有一条从P1到P2的直线,如下所示,它是使用Google Maps API绘制的。这两个点都可以使用纬度和经度。

我想在经度和纬度这两个直线(P)之间找到一个点,该点位于距P1一段距离之后。

例如:假设P1和P2之间的距离为10 km,我想在P1到P2的直线上找到一个位于4 km的点。

enter image description here

 function markPointInStraightLine(LatLngP1,LatLngP2, distanceInKm) {
       // To do
       //LatLngP1 and LatLngP2 is of type 'google.maps.LatLng'
}

2 个答案:

答案 0 :(得分:1)

您可以使用Google API几何库中的插值函数

  

给出两个LatLng对象,其值在0到1之间,您也可以   使用interpolate()方法计算它们之间的目的地,   在两者之间执行球面线性插值   值指示行进距离的小数的位置   沿着从起点到终点的路径。

更多信息,google api

答案 1 :(得分:1)

我建议使用Maps JavaScript API的geometry library。几何库提供computeHeading()方法来定义两个点之间的航向,以及computeOffset()方法来计算距指定航向中的原点一定距离的点。在Maps JavaScript API URL中添加&libraries=geometry参数,以便在应用程序中使用几何图形库

代码段应为

function markPointInStraightLine(LatLngP1,LatLngP2, distanceInKm) {
    var heading = google.maps.geometry.spherical.computeHeading(LatLngP1,LatLngP2);
    var p = google.maps.geometry.spherical.computeOffset(LatLngP1, distanceInKm*1000, heading);
    return p;
}

我希望这会有所帮助!