2015-12-25 311 views
-2

在我的ASP.NET MVC應用5我有一個ApiController(的WebAPI)與返回按名稱排序的機構單位名單(存儲在我的數據庫)的方法。它工作正常。計算距離

現在我希望能夠通過距離排序這個列表。因此,使用Web服務的移動應用程序將發送用戶位置作爲參數,並且在服務器端我需要計算用戶位置與每個機構位置之間的距離。

我可以使用哪些工具來做到這一點? Google Maps API?另一個?我已經搜索,但沒有發現任何有用的... 如果有人知道在哪裏可以找到如何開始這個例子,這將是非常有益的。

更新

這裏有一些更多的細節:

  • 我的數據庫是SQL Server 2014;
  • 每個機構已經有存儲在我的數據庫中的經度和緯度;

我寧願讓車的最短路徑的距離......

+1

空間數據... – dotctor

+1

是否存儲在數據庫中的機構有一個地理位置? (經度,緯度)?如果是這樣,這可能幫助你:http://stackoverflow.com/questions/6366408/calculating-distance-between-two-latitude-and-longitude-geocoordinates – jpgrassi

回答

1

假設你在數據庫中存儲(緯度經度+)各設立的地理位置,它是非常容易的計算使用Harvesine formula(以及其中的一些online demo)的2個點之間的距離。一旦你知道了距離,你將能夠對結果進行分類。您尚未提供有關您正在使用的數據庫的任何詳細信息,但有些數據存儲庫已經提供了這種開箱即用的計算方法,因此您無需在客戶端上進行這些計算。

如果在另一方面,你不要你的機構的座標存儲在您的數據存儲,那麼第一步當然會是一些在線服務得到它們。其中有很多,只要選擇最適合你的那個。很明顯,在這種情況下,這種計算的性能取決於第三方服務的速度。

+0

感謝。你能檢查我的更新嗎? – amp

+0

您用於存儲地理位置的列類型是什麼?您是使用特殊的GEOGRAPHY列類型還是僅使用了2列經緯度?就汽車最短距離而言,恐怕在這種情況下,您可能需要使用一些第三方服務,這些服務的道路信息要多得多,而不僅僅是點的地理位置。您可以檢出Google地圖提供的可用API。 –

+0

我只有兩列經緯度。您將檢查Google Maps API。 – amp