【问题标题】:Find a point after specific distance in straight line between 2 Points in google maps API在谷歌地图API中的2个点之间的直线上的特定距离后找到一个点
【发布时间】:2018-08-13 07:11:52
【问题描述】:

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

我想在这些直线之间找到一个点,比如 (P),它的纬度和经度位于距离 P1 一定距离之后。

例如:假设 P1 和 P2 之间的距离是 10 公里,我想在 P1 后 4 公里处找到一个点,与 P2 成直线。

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

【问题讨论】:

  • 这更像是一道数学题……
  • @madalinivascu 但我怀疑它是否有助于找到谷歌地图 API 的确切地理坐标。

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


【解决方案1】:

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

代码sn-p应该是

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;
}

我希望这会有所帮助!

【讨论】:

    【解决方案2】:

    您可以使用 google api 几何库中的插值函数

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

    更多信息google api

    【讨论】:

    • 谢谢!我可以用这个来达到我的要求☺
    猜你喜欢
    • 2012-04-29
    • 2016-09-04
    • 2019-05-30
    • 1970-01-01
    • 2020-12-12
    • 2014-08-29
    • 2016-07-08
    • 2015-07-04
    • 1970-01-01
    相关资源
    最近更新 更多