2015-01-05 68 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服务并获取最后一个已知位置并获取位置,以便将来可以使用它。