我正在编写一个后端(MongoDB,express,NodeJs),它从Android应用程序获取经度和经度。我必须确定某个地方是否在特定路线内。
假设有路线
A --> B
现在有一个名为C的地方,我想知道它是否位于A和B之间。
A--> C --> B
我还想确保在A - > C - > B的情况下行进的总距离在A-->B
当我试图解决这个问题时,我遇到了两个解决方案
但不幸的是我无法使用它们中的任何一个,因为它们都是库而不是npm模块。有没有办法使用它们还是有其他解决方案?
由于
答案 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编写)。