谷歌地图相机在一秒钟后重置当前位置



我正在使用谷歌地图 api 通过以下代码显示用户当前位置和周围提到的一些区域。

@Override
public void onLocationChanged(Location location) {
double latitude = location.getLatitude();
double longitude = location.getLongitude();
LatLng latLng = new LatLng(latitude,longitude);
mMap.moveCamera(CameraUpdateFactory.newLatLngZoom(latLng, 15f));
mMap.getUiSettings().setZoomControlsEnabled(true);
mMap.setMyLocationEnabled(true);
//call mentioned area to display
getLocation();
}

但问题是,当我通过拖动或放大/缩小来更改位置时,它会立即重置在上一个位置。

我想通过拖动和控制放大来移动到任何地方,缩小也随心所欲。就在我点击时 然后应该转到我当前的位置。

注意:当我关闭下面的代码时,需要几秒钟才能重置

//mMap.getUiSettings().setZoomControlsEnabled(true);
//mMap.setMyLocationEnabled(true);

提前谢谢。

您编写了代码以在 LocationChanged 覆盖方法中移动摄像机,以便在某个时间间隔内获取位置纬度和经度的变化(可能是微小的变化(。

为避免这种情况,请删除此代码

mMap.moveCamera(CameraUpdateFactory.newLatLngZoom(latLng, 15f));
mMap.getUiSettings().setZoomControlsEnabled(true);
mMap.setMyLocationEnabled(true);

onLocationChanged方法中编写它,并在必要时调用它(例如单击按钮(

但是,通过定义布尔标志来解决此问题

private boolean flag = true;

然后在移动相机之前检查它

@Override
public void onLocationChanged(Location location) {
double latitude = location.getLatitude();
double longitude = location.getLongitude();
LatLng latLng = new LatLng(latitude,longitude);
if (flag) {
flag = false;
mMap.moveCamera(CameraUpdateFactory.newLatLngZoom(latLng, 15f));
mMap.getUiSettings().setZoomControlsEnabled(true);
mMap.setMyLocationEnabled(true);
}
//call mentioned area to display
getLocation();
}

最新更新