android-停止接收位置更新

android-停止接收位置更新,android,google-maps,location,Android,Google Maps,Location,在我的android应用程序中,我使用下面的代码获取用户的当前位置 private void getDeviceLocation() { Boolean mLocationPermissionGranted = //ask for permission and stuff if (mLocationPermissionGranted) { //if permission granted mCurrentLocation = LocationServices.F

在我的android应用程序中,我使用下面的代码获取用户的当前位置

private void getDeviceLocation() {
    Boolean mLocationPermissionGranted = //ask for permission and stuff
    if (mLocationPermissionGranted) {   //if permission granted
        mCurrentLocation = LocationServices.FusedLocationApi.getLastLocation(mGoogleApiClient);
        LocationServices.FusedLocationApi.requestLocationUpdates(mGoogleApiClient, mLocationRequest, this);
    }
}
我只需要一个位置更新,因此我在我的
onLocationChanged
方法中
removelocationUpdate

 @Override
public void onLocationChanged(Location location) {
    mCurrentLocation = location;
    LocationServices.FusedLocationApi.removeLocationUpdates(mGoogleApiClient, this);
}

这样做会停止调用
onLocationChanged
方法,但我在地图上看到,我的位置在几秒钟内仍在不断变化。精度半径不断增大或减小。我不想那样。我希望“蓝点”稳定且不移动。

首先,蓝点有自己的定位源。设置
setMyLocationEnabled(true)
后,它将开始精确定位您的位置因此,蓝点与您的位置请求无关。

表示MyLocationLayer(蓝点)

启用且位置可用时,“我的位置”图层 连续绘制用户当前位置的指示

意味着,每当MyLocationLayer接收到新位置时,蓝点将移动

但是有一种方法可以改变这种行为:
setLocationSource(LocationSource源代码)

表示用于setLocationSource

替换“我的位置”图层的位置源

也就是说,您可以将您的位置请求和行为(只需一个位置)集成到蓝点(MyLocationLayer)中


选中此复选框,您可能已经使用了
mGoogleMap.setMyLocationEnabled(true),它完全符合您的需要。此功能允许谷歌地图访问用户的位置,而无需您提供更多代码。它可以是有用的,但它不能。@Gorcyn ya,我使用了
setMyLocationEnabled(true)
但将其设置为false只会删除“蓝点”。问题仍然存在