从新活动onCreate调用时,getMyLocation无法立即获取位置

时间:2015-01-05 11:06:56

标签: android google-maps-android-api-2

我试图创建一个活动,在启动它之后,我会有一张地图可以立即访问我在地图中的当前位置并向它移动。

所以我在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在活动开始后立即获取数据?感谢。

2 个答案:

答案 0 :(得分:0)

请不要使用GpsTracker它有很多错误。 尝试这个解决方案:

http://gabesechansoftware.com/location-tracking/

我用它替换我的gps跟踪器,它工作得很好。

答案 1 :(得分:0)

Gps需要一些时间才能锁定并获取位置。大约20-30秒。那时它需要看到天空。
因此,使用GooglePlay服务并获取最后一个已知位置并获取位置,以便将来可以使用它。