2015-01-05 102 views
0

我試圖創建一個活動,啓動它後,我將有一個地圖,立即訪問我在地圖中的當前位置並朝它移動。getMyLocation無法立即獲取位置,當從新活動創建時創建

所以我叫下面的的onCreate()期間...

public void moveToCurrentLocation() 
{ 
    if (!mLM.isProviderEnabled(LocationManager.GPS_PROVIDER)) { 
     buildAlertMessageNoGps(); 
    } 
    else 
    { 
     Location myloc = mMap.getMyLocation(); 
     //if (myloc == null) myloc = mLM.getLastKnownLocation(LocationManager.GPS_PROVIDER); 
     if (myloc != null) { 
      LatLng position = new LatLng(myloc.getLatitude(), myloc.getLongitude()); 
      moveToLocation(position); 
      return; 
     } else { 
      Toast.makeText(mContext, "Sorry no location information obtained yet. Try click again on 'current location button' on the map", Toast.LENGTH_LONG).show(); 
     } 
    } 
    moveToLocation(SINGAPORE, false, 9); 

} 

發生什麼事是,getMyLocation總是首先返回null,並且只有一段時間之後,將能夠得到的位置。我使用的解決方法是從LocationManager獲取getLastKnownLocation來解決問題。但是,LastKnownLocation可能不是當前位置。

那麼我如何解決問題以確保getMyLocation在活動開始後立即獲取數據?謝謝。

+0

將調用移動到onStart()。 –

回答

0

全球定位系統將需要一段時間來鎖定和獲取位置。大約20-30秒。那時它需要看到天空。
因此,使用GooglePlay服務並獲取最後一個已知位置並獲取位置,以便將來可以使用它。