我试图创建一个活动,启动它后,我将有一个地图,立即访问我在地图中的当前位置并朝它移动。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在活动开始后立即获取数据?谢谢。
将调用移动到onStart()。 –