使用google maps api确定某个地点是否属于某个路线

时间:2015-07-11 17:06:28

标签: node.js google-maps google-maps-api-3 google-places-api

我正在编写一个后端(MongoDB,express,NodeJs),它从Android应用程序获取经度和经度。我必须确定某个地方是否在特定路线内。

假设有路线

A --> B

现在有一个名为C的地方,我想知道它是否位于A和B之间。

A--> C --> B

我还想确保在A - > C - > B的情况下行进的总距离在A-->B

之间的距离之内的可容忍距离内

当我试图解决这个问题时,我遇到了两个解决方案

  1. 几何库
  2. 使用isLocationOnEdge()
  3. 使用名为routeBoxer的精彩库
  4. 但不幸的是我无法使用它们中的任何一个,因为它们都是库而不是npm模块。有没有办法使用它们还是有其他解决方案?

    由于

1 个答案:

答案 0 :(得分:0)

假设您尝试测量的距离是严格线性的,Google Maps JavaScript API的几何库中包含一个名为google.maps.geometry.spherical.computeDistanceBetween的函数。它接受两个LatLng作为参数。

var originalDist = google.maps.geometry.spherical.computeDistanceBetween(a, b)
var newDist = google.maps.geometry.spherical.computeDistanceBetween(a, c) + google.maps.geometry.spherical.computeDistanceBetween(c, b)
var difference = newDist - originalDist

如果您想要确定构成C折线的任何点A-->B的距离,您可以采用迭代方法:

min(
  polyline.map(
    function(pt){
      return google.maps.geometry.spherical.computeDistanceBetween(pt, c)
    }
  )
)

这比画圈更有效,因为它不涉及对象的初始化。

google.maps.geometry.spherical.computeDistanceBetween的替代是Haversine Formula(方便地用JavaScript编写)。