在我的 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);
}
}
我只需要 1 个位置更新,因此我在 onLocationChanged
方法中 removeLocationUpdates
。
@Override
public void onLocationChanged(Location location) {
mCurrentLocation = location;
LocationServices.FusedLocationApi.removeLocationUpdates(mGoogleApiClient, this);
}
这样做会停止调用 onLocationChanged
方法,但我在 map 上看到我的位置仍然每隔几秒钟发生变化。精度半径不断增大或减小。我不想要这样。我希望“蓝点”稳定且不动。
最佳答案
首先,蓝点有自己的位置源。设置setMyLocationEnabled(true)
后,它将开始精确定位您的位置。 因此,蓝点与您的位置请求无关。
Documentation表示 MyLocationLayer(蓝点)
While enabled and the location is available, the my-location layer continuously draws an indication of a user's current location
意思是,每当MyLocationLayer收到新位置时,蓝点就会移动。
但是有一种方法可以改变这种行为:setLocationSource (LocationSource source)
Documentation表示 setLocationSource
Replaces the location source of the my-location layer.
意思是,你可以将你的位置请求和行为(只要你想要的一个位置)集成到蓝点(MyLocationLayer)
检查这个sample ,正是您所需要的
关于android - 停止接收位置更新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41267413/