2014-01-12 123 views
3

我建立的Android使用谷歌地圖的應用程序。它就像一個導航應用程序,在運動中更新屏幕上的位置。我在地圖上放置了多個標記,每個標記的半徑爲125.噹噹前位置與標記半徑相交時,我會收到一條警告消息。這是通過所有標記循環和檢查,如果當前位置與任何標記在OnLocationChangedMethod()半徑交叉進行。如果你有幾個標記,但是我有超過30個標記,它效果很好。在遍歷所有標記並報告是否存在交集時,當前位置將通過標記。所以需要更長的時間並且效率不高。警報時,當前位置接近標記的Android地圖

我希望有人能幫助瞭解如何做一個更好的辦法。我已經閱讀了幾個解決方案,建議採取地圖邊界並找到可見的標記。但是這也遍歷所有的標記,它將需要與我的解決方案相同的時間。

如果有人能幫忙,我將不勝感激。

感謝,

阿卜杜拉

+0

爲什麼不保存在數據庫中標記位置,並通過服務於每學時45秒,用戶位置比較東西.. – Ranjit

+0

的標誌實際上是存儲在服務器數據庫。在首次初始化應用程序時,標記將被下載並保存在本地SQLite數據庫中。 45秒太長。標記半徑是250米。平均需要25秒才能通過標記。時代不是問題。根據存儲在數據庫中的標記的數量,檢查是否存在相交的過程實際上需要時間。我不知道是否有解決方案可以讓標記充當雷達而不是當前的位置標記。 –

回答

6

這聽起來像是你會更適合Geofencing因爲它基本上是你正在嘗試做的。沒有必要爲所有這些不同的服務,這樣當有已經建成

+0

經過大量與我的代碼和谷歌地圖的整合。它工作得很好。非常感謝你。一個簡單的問題。是否有你添加或不添加的Geofence點的數量限制? –

+0

100是限制 – tyczj

0

使用兩種服務。一個獲取當前位置,另一個計算距離。

+0

你是什麼意思的兩個服務?你的意思是線程? –

+0

服務在http://developer.android.com/guide/components/services.html –

+0

抱歉,沒有足夠的時間來完成我的答覆。使用兩項服務。一種廣播位置的服務和另一種計算每個點附近的服務。這樣,從理論上講,無論如何,在這種情況下最好的可以做到,接近度計算不會延遲位置廣播。 –

相關問題