我有一条从P1到P2的直线,如下所示,它是使用Google Maps API绘制的。这两个点都可以使用纬度和经度。
我想在经度和纬度这两个直线(P)之间找到一个点,该点位于距P1一段距离之后。
例如:假设P1和P2之间的距离为10 km,我想在P1到P2的直线上找到一个位于4 km的点。
function markPointInStraightLine(LatLngP1,LatLngP2, distanceInKm) {
// To do
//LatLngP1 and LatLngP2 is of type 'google.maps.LatLng'
}
答案 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;
}
我希望这会有所帮助!