在我的應用程序中,我有一個Service
接收位置更新並將它們存儲到數據庫。我也有一個Fragment
,它顯示從數據庫中記錄的所有航點的MapView
和PolyLine
。更好的方式來更新PolyLine軌道的GPS讀數
在錄製過程中,Service
通知Fragment
有關新的路標,因此Fragment
可以更新PolyLine
。問題是,當用戶從應用程序導航離開應用程序Service
保持記錄航點到數據庫,但現在Fragment
自Fragment
暫停後不會更新。因此,在onResume
中,我創建了一個新的PolyLine
,讀取數據庫中的所有路點並將它們添加到數據庫中。
這一切都工作正常,但它並不真的覺得它是從性能角度來說是最佳的創建一個新的PolyLine
並重新添加所有的航點(可能有成千上萬!)。我想我可以重新添加任何尚未在PolyLine
中的新航點,但我想看看這裏有人是否有替代解決方案?即使應用程序處於後臺(只要服務正在運行),是否有任何方法可以使Fragment
「保持活動狀態」並更新其PolyLine
?還是有更好的方法來做到這一點?
謝謝,這是一些很好的建議!當我註冊我的位置更新偵聽器時,我已經在做#2(默認距離爲10米)。直線檢測是一個很好的,不知道如何實現它 - 它需要某種寬容... – BadCash
@BadCash有幾種方法可以實現這一點。我能想到的最好的方法是計算中間點到兩個周圍點所創建線的距離,並檢查它是否小於由您需要的誤差範圍確定的某個值。 –
再次感謝:)是的,這將是一種方式。我還有一個想法 - 如果我將AmB(m =中點)的路徑長度與直路徑AB的長度進行比較,如果第一個路徑與直路徑的距離在一定的公差範圍內(長於)可以認爲是直的? – BadCash