2010-12-22 58 views
4

我有一個數據庫中有限數量的城市的網站,並且需要向用戶顯示他當前位置最近的城市。獲取用戶就近城市的最佳方式? Python/Django

我可以通過MaxMind API獲取位置,但是我想在我的數據庫中找到離用戶城市最近的城市。

例如,如果我在數據庫中的這些城市:Los AngelesSan FranciscoNew York City,和我是從其他城市的訪問像Miami,我應該看到NYC選擇,因爲它是地理上最接近的。

這種快速性能感知的最佳方式是什麼?

+2

近似的經度和緯度(只是度數,而不是分鐘或秒)+距離公式。請參閱http://www.movable-type.co.uk/scripts/latlong.html – 2010-12-22 18:25:51

+0

@ S.Lott做到了。 – 2010-12-22 18:30:28

回答

7

您應該存儲每個城市的近似經度和緯度,計算用戶的經度和緯度(度),然後使用Haversine formula找到距離。它在Javascript here中實現。 MaxMind API應該會給你經緯度。

0

是否有這樣的感覺,無論您何時在數據庫中添加一個城市,都會運行一段代碼(脫機),以計算您所擁有的每個城市最近的城市。您可以讓每個城市指向另一個城市,並將其指定爲其最近的城市,並帶有一個外鍵

現在您已經預先計算了一切,無論何時出現實時請求和城市名稱,只需用城市名稱打開數據庫,就可以通過您指定的外鍵訪問最近的城市。 (city --- foreignkey ---> city)

現在,由於您已經預先計算離線最近的城市並且可以在每個實時請求中立即返回結果,所以速度會非常快。

但是您打算多久添加一個城市?可能不會那麼頻繁。因此,即使需要一點時間,離線預計算也很少見。但現場請求的響應速度非常快。 (其他人已經推薦使用公式來計算距離,所以我將跳過那部分!)

相關問題