2010-03-09 50 views

回答

0

你必須自己完成大部分的工作,API不會爲你做太陽下的每個功能。

但是,我知道您可以使用Google Maps API找到兩點之間的距離。看看API reference中的distanceFrom方法。這只是計算XML文件中每個點的距離,然後取最小的X數。

關於你的評論 - 是的,我猜在客戶端循環300項可能會有點多。一種解決方案是將每個點的GPS座標存儲在XML文件中(如果尚未存在的話),然後創建一個函數,使用簡單的距離計算器刪除大部分點(您必須自己研究)。然後將剩餘的點(可能是其中的30個)傳遞給API以計算更準確的距離。

+0

在某些情況下,可能有大約300多個XML項目,所以我想盡量避免循環遍歷所有這些項目。 我很樂意做到這一點過濾自己,但提供這些數據的CMS不能因此我想知道,如果谷歌或Bing可以做到這一點。 – Simon 2010-03-10 11:08:12

+0

@Simon:你也許可以自己做一些預處理,並刪除任何明顯的離羣值等。我會更新我的答案。 – DisgruntledGoat 2010-03-10 13:48:10

+0

如果對於集合中的每個點都有經度和緯度,並且您希望將距離(直線上的距離)指定給某個點,則可以使用Havesine函數:http://en.wikipedia .ORG /維基/ Haversine_formula。 – mslot 2011-11-14 18:31:32

0

我只是看着這樣做的客戶端請求我有。據我所知,最好的辦法是在進入Google地址(或類似地址)時使用您的地址(即將郵政地址變爲經度和緯度)Geocode

當您來「找到最近的」時,您需要獲取搜索人的郵政編碼(可能),然後對其進行地理編碼,或者如果您能夠直接獲取數據,脫離移動設備。

一旦你有固定位置的經緯度和你的用戶一樣,我估計你可以使用haversine formula(我這樣說,但我沒有真正嘗試過 - 我不是數學家)這是計算球體周圍兩點之間距離的數學方法。地球不是一個球體,但爲了這種目的而足夠接近。

這樣,您只需對外部服務進行一次查找即可找到您的用戶位置(假設您在創建時對您的固定點進行了地理編碼,並將其存儲起來以備後用),然後執行驢工作服務器端來計算距離。你甚至可以創建一個自定義的SQL函數,將它從數據庫中按順序排出。