2015-07-11 29 views
0

我正在寫一個後端(MongoDB,express,NodeJs),它從android應用程序獲取經度和緯度。我必須確定某個地點是否在特定路線內。確定一個地方是否落入使用谷歌地圖api的路線

假設有一個路線

A --> B 

現在有一個名爲C的地方,我想找出它是否位於A和B之間

A--> C --> B 

我也要打確定在A→C→B的情況下行進的總距離在A-->B之間的距離

之間的距離相比是在可容忍的距離內當我試圖解決這個問題時,我來到了acros兩大解決方案

  1. 通過幾何庫使用isLocationOnEdge()的
  2. 真棒圖書館使用名爲routeBoxer

但不幸的是,我無法使用其中任何一個,因爲他們都是庫,而不是NPM模塊。有沒有辦法使用它們或者是否有其他解決方案?

感謝

+0

一種方法是在多段線中的每個點上創建半徑圓並檢查您的位置,看它是否在任何這些圓的範圍內。 –

回答

0

假設你正試圖測量距離是嚴格的線性,沒有包含在谷歌地圖的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編寫)。

+0

感謝您的回答。我已經使用Haversine公式來計算兩個非常接近的位置之間的距離,以便我們可以假設它們是嚴格線性的。但我更關心的是計算行程距離而不是位移。而且我也使用MEAN堆棧,所以即時通訊面臨的問題是指任何JS庫不可用作爲npm模塊:( – yash