我试图创建一个活动,在启动它之后,我会有一张地图可以立即访问我在地图中的当前位置并向它移动。
所以我在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 :(得分:0)
请不要使用GpsTracker它有很多错误。 尝试这个解决方案:
http://gabesechansoftware.com/location-tracking/
我用它替换我的gps跟踪器,它工作得很好。
答案 1 :(得分:0)
Gps需要一些时间才能锁定并获取位置。大约20-30秒。那时它需要看到天空。
因此,使用GooglePlay服务并获取最后一个已知位置并获取位置,以便将来可以使用它。