2017-08-24 44 views
0

即將開始開發應用程序,而且即時通訊卡會以最有效的方式執行任務。所以任何人都可以訪問這個應用程序,並說嘿我在這裏!在地圖上。他們的地理位置(長,緯度)將被用作一種標記。確定10英里範圍內的地理位置邏輯

現在,當用戶訪問這個應用程序時,它將如何顯示人們在10英里範圍內訪問過的標記。當然,我可以使用for循環來滾動每一個標記,但是規模要大得多,這是最有效的方法嗎?如果有5萬個標記會怎麼樣?

然後我想爲每個標記添加一個國家,所以它只能滾動你所在國家的標記,但即使如此,我仍然必須滾動每一個標記,檢查它們是否在同一個國家,那麼除非我爲每一個看起來不對的國家建立數據庫,否則這個位置就是這樣。

不找實際的代碼只是邏輯上如何現有的應用程序已經做到這一點,感謝您的任何意見:)

回答

0

如果你有一個標準的浮動索引的數據庫longlat(如使用MySQL),你可以選擇在一定的經度和緯度範圍內的所有點。爲此,應首先計算Delta_LongitudeDelta_Latitude對應10miles(DeltaLongitude是緯度相關)。結果集包含以標記爲中心的正方形上的所有點(因爲正方形在球體上,所以它不是真正的正方形)。

該查詢以較大的因子縮小了選擇範圍,現在應該可以計算每個點的distance on a sphere並再次過濾標記。


MongoDB功能geospatial indixes,它確實執行你要求的。

+0

啊,這是完美的,我從來沒有想過直接從SQL做它。我確定我可以使用谷歌地圖API或東西來制定出這個增量經緯度和長期,非常感謝:) –

+0

依靠已建立的框架可能是一個好主意來計算角度,因爲你還必須處理邊界情況:'' 359°+ 2°= 1°' – sauerburger

相關問題