Google 地图相机在一秒后重置当前位置

Google Maps Camera reset the current position after a second

我正在使用 google 地图 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();
}

但问题是,当我通过拖动或 zoomIn/zoomOut 更改位置时,它会立即重置到之前的位置。

我想通过拖拽移动到任何地方,控制zoomIn,zoomOut也随心所欲。就在我点击 在 MyLocation 按钮上然后应该转到我当前的位置。

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

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

提前致谢。

您在 onLocationChanged 覆盖方法中编写了移动相机的代码,以便在某个时间间隔内它的位置纬度和经度发生变化(可能是微小的变化)。

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

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();
}