在我的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
方法,但我在地图上看到我的位置仍然会持续变化几秒钟。精度半径不断增加或减少。我不想要那个。我想要"蓝点"保持稳定而不动。
答案 0 :(得分:2)
首先,蓝点有自己的位置源。设置setMyLocationEnabled(true)
后,它将开始精确定位您的位置。 因此,蓝点与您的位置请求无关。
Documentation表示MyLocationLayer(蓝点)
启用并且位置可用时,我的位置图层 连续绘制用户当前位置的指示
意味着,只要MyLocationLayer收到新位置,蓝点就会移动。
但是有一种方法可以改变这种行为:setLocationSource (LocationSource source)
替换我位置图层的位置来源。
意思是,您可以将您的位置请求和行为(只有一个位置)整合到蓝点(MyLocationLayer)
检查此sample,确切地执行您需要的操作