【问题标题】:getMyLocation can't immediately get location when calling from new activity onCreate从新活动 onCreate 调用时,getMyLocation 无法立即获取位置
【发布时间】:2015-01-05 19:44:46
【问题描述】:

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

所以我在 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()。

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


【解决方案1】:

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

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

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

【讨论】:

  • 感谢 Maor。检查了googlemap,貌似行为是一样的。
【解决方案2】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-09-29
    • 2015-10-22
    • 1970-01-01
    相关资源
    最近更新 更多