2012-10-17 53 views
1

我正在開發一個POI定位器應用程序。我解析了超過1600個位置的JSON文件。如何有效地比較這個列表與當前用戶的位置並獲得最接近的10個?ANDROID在地圖上顯示最近的10個位置

編輯 該應用程序沒有使用服務器,因爲我想使用本地JSON文件。

+0

比較服務器站點上的距離。 –

+0

沒有服務器,全部是本地的 – SquiresSquire

回答

1

我通過使用for循環並測量位置和用戶位置之間的距離來修復它。

distance = locationA.distanceTo(locationB); 
if (distance <= 1000 * 10) //finding all within 10km Radius.{ 
ADD GEOPOINT HERE 
} 
0

如果您可以將1600個位置存儲在支持地理空間查詢的數據庫(如mongodb)中,則會更好。您可以直接查詢數據庫以確定與用戶的給定緯度和經度最接近的N個位置。

0

如果您要通過鳥瞰方法找到距離,您可以使用位於here的公式查詢您的位置並檢查距離。但是如果你打算將道路(圖表)記入帳戶,恐怕你需要使用某種類型的尋路服務,如google maps或者自己推出。 (據我所知在Android中沒有內置機制。)

0

我們也在編寫這種應用程序,並對MySQL和MongoDB執行了一些性能測試。由於MongoDB是基於文檔並以json格式存儲其數據,因此基於位置的查詢(如最接近用戶的餐廳)完成並返回的速度非常快。據我記憶,它比MySQL快大約10倍。因此,即使您的應用程序目前不使用非sql數據庫,我強烈建議您使用MongoDB,即使只是用於位置計算部分項目。

+0

我需要一個全部離線的方法,要使用MongoDB你需要一臺服務器。整個應用程序正在使用沒有互聯網數據,然後引腳指向用戶的位置。 – SquiresSquire