Камера Google Maps сбрасывает текущее положение через секунду

Я использую api карты Google, чтобы показать текущее местоположение пользователя и окружение некоторой упомянутой области с помощью кода ниже.

@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);

Заранее спасибо.

2 ответа

Решение

Однако решите эту проблему, определив логический флаг

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

Вы написали код для перемещения камеры в методе переопределения onLocationChanged, так что на некотором временном интервале он меняет широту и долготу местоположения (могут быть незначительные изменения).

Чтобы избежать этого, удалите этот код

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

из onLocationChanged метод и напишите его во внешний метод и вызовите его, когда это необходимо (например, по нажатию кнопки)

Другие вопросы по тегам