2011-10-06 68 views
2

有沒有人有任何想法加快設置Google地圖初始點的過程,並以您當前的位置爲中心。這必須是可能的,因爲它工作在自帶谷歌地圖應用不錯,但在我的自定義應用程序明顯的延遲,我現在用:Android:myLocationOverlay.runOnFirstFix太慢

myLocationOverlay.runOnFirstFix(new Runnable() { 
     public void run() {    
      findMe(); 
     }   
    }); 

哪裏找到我,包括:

if(myLocationOverlay.getMyLocation() != null){ 
    mapView.getController().animateTo(myLocationOverlay.getMyLocation()); 
} 

回答

1

至於我知道,原生地圖服務和應用程序正在系統啓動時加載,並在後臺自行準備,因此可以更快地加載地圖。您可以在設置中的正在運行的進程中檢查它。您雲做同樣的事情或做一個骯髒的解決方法,我做了一次:在所有加載之前顯示進度對話框(在onLoad中的setContentView之後),並在完成地圖上的所有操作後關閉它;)

+0

聽起來不錯,但有沒有辦法從該後臺服務獲取位置? – Moustachio

+0

當然。您需要從第一個活動或[啓動](http://androidgps.blogspot.com/2008/09/starting-android-service-at-boot-time.html)在後臺啓動服務(在清單中定義,創建服務連接和AIDL接口)。該服務將提供諸如getLatitude()getLongitude()之類的方法作爲像Double這樣的基元。該服務將不得不註冊LocationListener。爲進一步閱讀:[AIDL](http://developer.android.com/guide/developing/tools/aidl.html),[服務](http://developer.android.com/reference/android/app/Service .html) –

1

您是否僅使用GPS位置?如果您根據網絡位置請求當前位置,並接受一些陳舊的值(最多可能需要一個小時?),則應立即獲得用戶的位置。

+0

您將如何爲「myLocationOverlay」設置網絡服務?正如我想象的那樣,時間問題是由於等待所有服務變得可用? – Moustachio

+0

您仍然可以像以前一樣收聽GPS位置事件。但是,當您的活動開始使用LocationManager.getLastKnownLocation(LocationManager.NETWORK_PROVIDER)提供的位置值時,您可以立即運行findMe(),而不是等待第一次GPS修復。您當然也可以嘗試檢查最後一個已知的GPS_PROVIDER位置是否可用,對您而言是不是太舊。 如果您不關心準確的位置,但網絡位置對您來說足夠好,您可以註冊您的LocationListener以進行NETWORK_PROVIDER更新。 –