为什么使用谷歌地图和Android获取当前位置有时会返回最后一个位置而不是当前位置

时间:2016-05-17 20:05:07

标签: android google-maps

我创建的应用程序与谷歌地图一起使用,它可以与谷歌地图服务一起使用。但是出现了一个问题。 当我请求当前位置有时它工作正常并返回确切的当前位置,但有时它返回最后一个当前位置 我不在的地方 谁能为我提供解决方案 这是代码

private GoogleApiClient mLocationclient;
GoogleMap mMap;             

// connect client to the map by take his location
            mLocationclient = new GoogleApiClient.Builder(this)
                    .addApi(LocationServices.API)
                    .addConnectionCallbacks(this)
                    .addOnConnectionFailedListener(this)
                    .build();
            mLocationclient.connect();
            // end connect

//获取当前位置

public LatLng getCurrentLocation(Context context, GoogleMap mMaps,GoogleApiClient mlocationclient){
    LatLng ll=null;
    Location currentLocation= LocationServices.FusedLocationApi.getLastLocation(mlocationclient);
    if(currentLocation==null)
        Toast.makeText(context,"could not connect",Toast.LENGTH_SHORT).show();
    else {
            ll=new LatLng(
                currentLocation.getLatitude(),
                currentLocation.getLongitude()
        );
    }
    return ll;
}

2 个答案:

答案 0 :(得分:3)

您正在呼叫getLastLocation();,它将返回您的GPS设备上次获取位置的时间。

如果您想强制设备获取位置,请尝试:

    lm.requestSingleUpdate(LocationManager.GPS_PROVIDER, this, null);
    Location loc = lm.getLastKnownLocation(LocationManager.GPS_PROVIDER);
    lat = loc.getLatitude();
    lng = loc.getLongitude();

此外,您可以查看此参考资料以获取更多信息。 requestSingleUpdate

答案 1 :(得分:0)

Google地图使用上一个已知位置,因为它没有确切的当前位置。 GPS需要时间来定位用户的确切位置,因此应用程序使用之前的纬度和经度,直到GPS得到修复。

点击此链接:https://developer.android.com/training/location/index.html