-1

我正在使用 google map 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);

提前致谢。

4

2 回答 2

0

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

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

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

onLocationChanged方法并将其写入外部方法并在必要时调用它(例如单击按钮)

于 2019-11-26T13:16:51.763 回答
0

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

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();
}
于 2019-11-27T11:48:40.020 回答