GoogleMaps.animateCamera вылетает из-за кода базы данных Firebase Realtime - PullRequest
1 голос
/ 27 мая 2020
ArrayList<Marker> markers = new ArrayList<>();
            markers.add(mMap.addMarker(new MarkerOptions().position(startLocationLatLng).title("Start Location").icon(BitmapDescriptorFactory
                    .defaultMarker(BitmapDescriptorFactory.HUE_GREEN))));
            markers.add(mMap.addMarker(new MarkerOptions().position(finishLocationLatLng).title("Finish Location").icon(BitmapDescriptorFactory
                    .defaultMarker(BitmapDescriptorFactory.HUE_BLUE))));

            LatLngBounds.Builder builder = new LatLngBounds.Builder();
            for (Marker marker : markers) {

                builder.include(marker.getPosition());

            }
            LatLngBounds bounds = builder.build();

            int padding = 300;
            CameraUpdate cu = CameraUpdateFactory.newLatLngBounds(bounds, padding);

            mMap.animateCamera(cu);

            FirebaseDatabase.getInstance().getReference()
                    .child("users").child(uId).child("CurrentChallenge")
                    .child("Active").setValue("1"); 

Приложение вылетает после установки значения дочернего элемента «Active» в Firebase, но ошибка:
Ошибка при использовании newLatLngBounds (LatLngBounds, int): размер карты не может быть равен 0. Скорее всего, макет еще не произошло для вида карты.
Когда я удаляю часть значения настройки - все работает нормально.
Не могу понять, почему возникает эта ошибка, я попытался создать AsyncTask для настройки значения, также пытался вставить этот код в обратный вызов animateCamera-onFini sh, всегда та же ошибка.

* UPD: это немного странно, код beosis работает после замены newLatLngBounds построение, с простым:

mMap.animateCamera(CameraUpdateFactory.newLatLngZoom(new LatLng(location.getLatitude(), location.getLongitude()), 16.0f));  

Но этот код анимирует карту только для одного места, без возможности видеть оба маркера.
Есть мысли? Это что-то с нитками? Понятия не имею, как это можно связать ( LatLngBounds и FirebaseDatabase ).

...