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:
- Google Maps Android V2 - Pantalla en blanco
- Cómo dibujar Polyline interactivo en la ruta google maps v2 android
- Google Maps API v2: ¿Cómo hacer que los marcadores se puedan hacer clic?
- NoClassDefFoundError en la biblioteca Google Play Services V2
- Mapa no funciona después de instalar desde la tienda de juegos en android
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
- Crear dibujable del marcador de mapa de Google BitmapDescriptorFactory
- Google map android api v2 falla en la aplicación
- Google Maps no se muestra en el dispositivo Android
- SetRadius en Circle da mala experiencia de usuario en Google Maps
- Cómo cargar marcadores dinámicamente para la posición actual en google-maps de Android?
- Cómo guardar agregados google mapas superposiciones en una aplicación para Android?
- Android Maps API v2 - ¿acercamientos a la rotación del marcador?
- ¿Asir la ubicación del usuario con google maps v2 en android?
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)