android - 停止接收位置更新

时间:2016-12-21 16:22:39

标签: android google-maps location

在我的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);
    }
}

我只想要一次位置更新,因此我removeLocationUpdates方法中的onLocationChanged

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

这样做会停止调用onLocationChanged方法,但我在地图上看到我的位置仍然会持续变化几秒钟。精度半径不断增加或减少。我不想要那个。我想要"蓝点"保持稳定而不动。

1 个答案:

答案 0 :(得分:2)

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

Documentation表示MyLocationLayer(蓝点)

  

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

意味着,只要MyLocationLayer收到新位置,蓝点就会移动。

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

对于setLocationSource

Documentation

  

替换我位置图层的位置来源。

意思是,您可以将您的位置请求和行为(只有一个位置)整合到蓝点(MyLocationLayer)

检查此sample,确切地执行您需要的操作