android - 停止接收位置更新

标签 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);
    }
}

我只需要 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/

相关文章:

java - 如何将数据从返回 Activity 传递到上一个 Activity 中的对话框?

Android - 如何获得从一个地方到另一个地方的估计驾驶时间?

javascript - 从 LatLng 点数组填充 Google map 多边形

javascript - Ember.js 中的 Google map

安卓 M : System permission vs WebView location permission

android - 如何获取收发邮件信息?

android - 尝试创建 AVD 时失败是 Android SDK

google-maps - 谷歌地图距离矩阵错误结果

java - 如何定位文件?

java - 旋转 ImageView 以面对给定的纬度和经度位置