android-停止接收位置更新
在我的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
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只会删除“蓝点”。问题仍然存在