CameraUpdateFactory.newLatLngBounds no es workinf todo el tiempo

Tengo algún problema para mover la cámara en android google maps.

Tengo esa función:

protected void centralizeMapToBounds(final LatLng southwest, final LatLng northeast, final LatLng taxi) { final int padding = 30; Location loc1 = new Location(""); loc1.setLatitude(southwest.latitude); loc1.setLongitude(southwest.longitude); Location loc2 = new Location(""); loc2.setLatitude(northeast.latitude); loc2.setLongitude(northeast.longitude); Location loc3 = new Location(""); loc3.setLatitude(taxi.latitude); loc3.setLongitude(taxi.longitude); float d1 = loc1.distanceTo(loc2); float d2 = loc1.distanceTo(loc3); float d3 = loc2.distanceTo(loc3); LatLngBounds bounds = null; try { if(d1 > d2){ if(d1 > d3){ ICabDebug.i(TAG, "Maior distancia d1: " + d1); if(southwest.latitude > northeast.latitude) bounds = new LatLngBounds(southwest,northeast); else bounds = new LatLngBounds(northeast, southwest); }else{ ICabDebug.i(TAG, "Maior distancia d3: " + d3); if(northeast.latitude > taxi.latitude) bounds = new LatLngBounds(northeast, taxi); else bounds = new LatLngBounds(taxi,northeast); } }else{ ICabDebug.i(TAG, "Maior distancia d2: " + d2); if(southwest.latitude > taxi.latitude) bounds = new LatLngBounds(southwest, taxi); else bounds = new LatLngBounds(taxi, southwest); } }catch (Exception e) { ICabDebug.i(TAG, e.getMessage()); ICabDebug.i(TAG, "bounds = null"); bounds = null; } final LatLngBounds bounds2 = bounds; // Pan to see all markers in view. try { ICabDebug.i(TAG, "Entro aki no primeiro bounds"); googleMap.moveCamera(CameraUpdateFactory.newLatLngBounds(bounds, padding)); } catch (Exception e) { if (mapView.getViewTreeObserver().isAlive()) { mapView.getViewTreeObserver().addOnGlobalLayoutListener(new OnGlobalLayoutListener() { @SuppressLint("NewApi") @Override public void onGlobalLayout() { mapView.getViewTreeObserver().removeGlobalOnLayoutListener(this); try { ICabDebug.i(TAG, "northeast ["+ bounds2.northeast.latitude + " / " + bounds2.northeast.longitude + "]"); ICabDebug.i(TAG, "southwest ["+ bounds2.southwest.latitude + " / " + bounds2.southwest.longitude + "]"); googleMap.moveCamera(CameraUpdateFactory.newLatLngBounds(bounds2, padding)); } catch (Exception ee) { ICabDebug.i(TAG, "----------------------------"); ICabDebug.i(TAG, ee.getMessage()); ICabDebug.i(TAG, "----------------------------"); googleMap.moveCamera(CameraUpdateFactory.newLatLngZoom(taxi, 15)); } } }); } } } 

Cuando lo uso con la coordenada funciona perfecto: (-23.5804166, -46.681909) (-23.4850942, -46.5802326) (-23.5802881, -46.6819049)

pero cuando uso con la coordenada abajo, mueve la cámara a Australia: (-23.5792416, -46.63472729999999) (-23.5436503, -47.4519223) (-23.580264, -46.6818923)

¿Podría alguien ayudarme? Gracias

No estoy seguro de lo que quieres lograr con el código en tu pregunta. Es un poco desordenado.

Si desea mostrar el área que contiene 3 LatLngs, es mejor usar

 LatLngBounds bounds = LatLngBounds.builder().include(latLng1).include(northeast).include(taxi).build(); map.moveCamera(CameraUpdateFactory.newLatLngBounds(bounds, padding)); 

Esto reemplazaría todos sus ifs y try-catches con unas pocas líneas.

Por cierto. No deberías hacer intentos de captura en tu código. Un error de programación no es algo que atrapará y probará algo diferente, pero cambie el código en su lugar.

Tengo la solución de poner todos con 4 dígitos decimales.

 String.format("%.4f", d) 
  • MyLocation botón oculto tras la barra de acción transparente, cómo reposicionar?
  • Área de clic del marcador de mapa de Google
  • ¿Cómo puedo importar com.google.maps.android.SphericalUtil en Android Studio?
  • Android: ¿La API de Google Maps sigue siendo gratuita?
  • Obtención de desviaciones de la ruta establecida de google maps?
  • Android - google map mover la cámara de una posición a otra
  • Google Maps Android API v2 sólo admite dispositivos con OpenGL ES 2.0 y superior
  • Cómo volver a colocar mi botón de ubicación en google mapv2 en android?
  • Error de EGL al intentar ejecutar mapsActivity en el emulador de Android
  • Cómo mostrar los marcadores todo el tiempo por AsyncTask o Handler en google map versión 2
  • Mostrar el icono de puntos azules en la ubicación actual Google Maps
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.