Android StreetView comprueba si hay alguna vista para la ubicación determinada
Estoy jugando con la nueva característica StreetView de Google Play Services 4.4 para Android ( enlace ) y me preguntaba si hay algún método / posibilidad de comprobar si hay un material 'view' / foto para cualquier ubicación. Cuando carga una ubicación que no está cubierta por StreetView con streetViewPanorama.setPosition(someLatLng);
Acabo de conseguir una pantalla negra. ¿Alguna manera de comprobarlo de antemano?
- ¿Cómo implementar Google StreetView con Google CardBoard SDK?
- Determinar la existencia de la función Streetview de Google
- Cómo saber si existe una Streetview antes de lanzar la intención de Streetview
- Vista de Google Street + inclinación del dispositivo
- Intentando mostrar StreetView utilizando Google Maps Android API v2 en android pero no consiguiendo que funcione
- Quiero agregar popover / overlay / hotspot en el streetview de google map en android
- Android: Uso de StreetViewPanoramaView en XML
- android startActivityForResult streetview obtener datos
- API de Street View de Android tema animateTo
- Cómo saber si existe una Streetview antes de lanzar la intención de Streetview
@Override public void onStreetViewPanoramaReady(StreetViewPanorama streetViewPanorama) { mPanorama.setOnStreetViewPanoramaChangeListener(new StreetViewPanorama.OnStreetViewPanoramaChangeListener() { @Override public void onStreetViewPanoramaChange(StreetViewPanoramaLocation streetViewPanoramaLocation) { if (streetViewPanoramaLocation != null && streetViewPanoramaLocation.links != null) { // location is present } else { // location not available } } });
Mirando la documentación creo que debería hacerlo
StreetViewPanoramaLocation location = mSvp.getLocation(); if (location != null && location.links != null) { mSvp.setPosition(location.links[0].panoId); }
Es mi entendimiento que si la location
es nulo o location.links
(enlaces es la matriz de imágenes de vista de la calle) es nulo, entonces es seguro decir que no hay vista de la calle en esa posición
Referencia desde este enlace
https://developers.google.com/maps/documentation/android/streetview
Editar
Probar esto por ahí es una advertencia a este método, usted tiene que esperar hasta que la vista se ha creado. Así que por ejemplo haciendo esto dentro del fragmento mismo en el onCreateView
Puse en un controlador con un retraso de 1 segundo para probar esta teoría.
Handler h = new Handler(); h.postDelayed(new Runnable(){ @Override public void run() { StreetViewPanoramaLocation svpl = mSvp.getLocation(); if(svpl == null){ Toast.makeText(getActivity(), "Unable to show Street View at this location", Toast.LENGTH_SHORT).show(); } } }, 1000);
Si intenta utilizar el getLocation()
antes de que la vista se ha creado siempre devolverá null. Accederlo después devolverá null si no hay vista de la calle en esas coordenadas
Editar 2:
Ahora hay una devolución de llamada que debe utilizar para hacerle saber cuando la vista de la calle está lista
getStreetViewPanoramaAsync(new OnStreetViewPanoramaReadyCallback(){ @Override public void onStreetViewPanoramaReady(StreetViewPanorama streetViewPanorama) { } })
Aparecerá la pantalla negra cuando la ubicación no esté presente. Sólo comprueba si se ha cargado o no.
@Override public void onStreetViewPanoramaReady(StreetViewPanorama streetViewPanorama) { mPanorama.setOnStreetViewPanoramaChangeListener(new StreetViewPanorama.OnStreetViewPanoramaChangeListener() { @Override public void onStreetViewPanoramaChange(StreetViewPanoramaLocation streetViewPanoramaLocation) { if (streetViewPanoramaLocation != null && streetViewPanoramaLocation.links != null) { // location is present } else { // location not available } } });