Eso es todo.

Para comenzar a desarrollar, consulta nuestra documentación para desarrolladores.

Activar la Google Maps Android API

Para que puedas comenzar, te proporcionaremos orientación en la Google Developers Console a fin de que hagas primero algunas acciones:

  1. Crear o seleccionar un proyecto
  2. Activar la Google Maps Android API
  3. Crear claves correspondientes
Continuar

Street View

Google Street View proporciona vistas panorámicas a 360 grados de ubicaciones designadas en su área de cobertura.

En este video se muestra la manera de usar el servicio de Street View para brindar a tus usuarios una perspectiva real sobre las direcciones en un mapa y un contexto significativo en términos de los destinos que elijan o los sitios que les interesen.

La cobertura disponible a través de la Google Maps Android API V2 es igual a la que ofrece la aplicación de Google Maps de tu dispositivo Android. Puedes obtener más información sobre Street View y ver las áreas admitidas en un mapa interactivo en Acerca de Street View.

La clase StreetViewPanorama modela el panorama Street View de tu aplicación. Dentro de tu IU, un panorama se representará a través de un objetoStreetViewPanoramaFragment o StreetViewPanoramaView.

Ejemplos de código

En el repositorio de ApiDemos de GitHub se incluyen ejemplos en los cuales se muestra el uso de Street View:

Información general sobre Street View en la Google Maps Android API

La Google Maps Android API proporciona un servicio de Street View para obtener y administrar las imágenes usadas en Google Street View. Las imágenes se devuelven como panoramas.

Cada panorama de Street View es una imagen, o un conjunto de imágenes, que proporciona una vista a 360 grados desde una ubicación. Las imágenes cumplen con la proyección equirrectangular (Plate Carrée), que contiene 360 grados de vista horizontal (vista envolvente completa) y 180 grados de vista vertical (del extremo superior al extremo inferior). El panorama a 360 grados resultante define una proyección en una esfera con la imagen ajustada a la superficie bidimensional de dicha esfera.

StreetViewPanorama proporciona un visor que representa el panorama como una esfera con una cámara en el centro. Puedes manipular StreetViewPanoramaCamera para controlar el zoom y la orientación (inclinación y rumbo) de la cámara.

Primeros pasos

Sigue los pasos de la guía de primeros pasos para configurar un proyecto de Google Maps Android API. Luego agrega un panorama de Street View, como se describe a continuación.

En la biblioteca cliente del SDK de Google Play Services se incluyen algunos ejemplos de Street View que puedes importar a tu proyecto y usar como base para el desarrollo. Consulta la introducción para hallar pautas relacionadas con la importación de ejemplos.

Usa la API

Para agregar un panorama de Street View a un fragmento de Android, sigue las instrucciones que se ofrecen a continuación. Será la manera más sencilla de agregar Street View a tu aplicación. Luego, obtén más información sobre los fragmentos, las vistas y la personalización del panorama.

Agregar un panorama de Street View

Resumen:

  1. Agrega un objeto Fragment a la clase Activity que administrará el panorama de Street View. La manera más sencilla de hacerlo es agregar un elemento <fragment> al archivo de diseño de Activity.
  2. Implementa la interfaz OnStreetViewPanoramaReadyCallback y usa el método de callback onStreetViewPanoramaReady(StreetViewPanorama) para administrar el objeto StreetViewPanorama.
  3. Llama a getStreetViewPanoramaAsync() en el fragmento para registrar el callback.

A continuación, se ofrece información más detallada sobre cada paso.

Agregar un fragmento

Agrega un elemento <fragment> al archivo de diseño de la actividad para definir un objeto de Fragment. En este elemento, fija el atributo class en com.google.android.gms.maps.StreetViewPanoramaFragment (o SupportStreetViewPanoramaFragment).

A continuación, te mostramos un ejemplo de un fragmento de un archivo de diseño:

<fragment
    android:name="com.google.android.gms.maps.StreetViewPanoramaFragment"
    android:id="@+id/streetviewpanorama"
    android:layout_width="match_parent"
    android:layout_height="match_parent"/>

Agregar código de Street View

Para trabajar con el panorama de Street View dentro de tu aplicación, deberás implementar la interfaz OnStreetViewPanoramaReadyCallback y configurar una instancia del callback en un objeto StreetViewPanoramaFragment o StreetViewPanoramaView. En este tutorial se usa un objeto StreetViewPanoramaFragment, ya que es la manera más sencilla de agregar Street View a tu aplicación. El primer paso es implementar la interfaz de callback:

public class MainActivity extends FragmentActivity
    implements OnStreetViewPanoramaReadyCallback {
...
}

En el método onCreate() de tu Activity, configura el archivo de diseño como la vista de contenido. Por ejemplo, si el nombre del diseño es main.xml, usa este código:

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);
    ...
}

Para administrar el fragmento, llama a FragmentManager.findFragmentById() y pásale el id. de recursos de tu elemento <fragment>. Ten en cuenta que el id. de recursos R.id.streetviewpanorama se agrega automáticamente al proyecto de Android cuando creas el archivo de diseño.

Luego usa getStreetViewPanoramaAsync() para configurar el callback del fragmento.

StreetViewPanoramaFragment streetViewPanoramaFragment =
    (StreetViewPanoramaFragment) getFragmentManager()
        .findFragmentById(R.id.streetviewpanorama);
streetViewPanoramaFragment.getStreetViewPanoramaAsync(this);

Nota: se debe llamar a getStreetViewPanoramaAsync() desde el subproceso principal. El callback se ejecutará en este. Si los Google Play Services no están instalados en el dispositivo del usuario, el callback no se activará hasta que el usuario los instale.

Usa el método callback onStreetViewPanoramaReady(StreetViewPanorama) para recuperar una instancia no nula de StreetViewPanorama lista para usarse.

@Override
public void onStreetViewPanoramaReady(StreetViewPanorama panorama) {
    panorama.setPosition(new LatLng(-33.87365, 151.20689));
}

Más información sobre la configuración de un estado inicial

A diferencia de lo que sucede con un mapa, no es posible configurar el estado inicial del panorama de Street View mediante XML. Sin embargo, puedes configurar el panorama de manera programática pasando un objeto StreetViewPanoramaOptions que contenga las opciones que especifiques.

mSvpView = new StreetViewPanoramaView(this,
    new StreetViewPanoramaOptions().position(SAN_FRAN));

Más información sobre StreetViewPanoramaFragment

StreetViewPanoramaFragment es una subclase de la clase Fragment de Android y te permite disponer un panorama de Street View en un fragmento de Android. Los objetos StreetViewPanoramaFragment actúan como contenedores del panorama y brindan acceso al objetoStreetViewPanorama.

Nota: Google Maps Android API necesita una API de nivel 12 o superior para admitir objetos StreetViewPanoramaFragment. Si apuntas a una aplicación anterior a la API nivel 12, puedes acceder a la misma funcionalidad a través de la claseSupportStreetViewPanoramaFragment. También deberás incluir la biblioteca de compatibilidadde Android.

Nota: La Google Maps Android API no admite varios objetos StreetViewPanoramaFragment en una actividad.

StreetViewPanoramaView

StreetViewPanoramaView, una subclase de la clase View de Android, te permite disponer un panorama de Street View en un objeto View de Android. Un objeto View representa una sección rectangular de la pantalla y es un componente fundamental para aplicaciones y widgets de Android. Al igual que StreetViewPanoramaFragment, en muchos aspectos, StreetViewPanoramaViewactúa como un contenedor del panorama y exhibe la funcionalidad principal de este a través del objeto StreetViewPanorama. Los usuarios de esta clase deben enviar todos los métodos de ciclo de vida de actividad (como onCreate(), onDestroy(), onResume() y onPause())) a los métodos correspondientes de la clase StreetViewPanoramaView.

Nota: La Google Maps Android API no admite varios objetos StreetViewPanoramaView en una actividad.

Personalizar la funcionalidad controlada por el usuario

De manera predeterminada, la siguiente funcionalidad se encuentra disponible para el usuario al ver el panorama de Street View: desplazamiento, zoom y acceso a panoramas cercanos. Puedes habilitar y deshabilitar gestos controlados por el usuario a través de métodos en StreetViewPanorama. Es posible, no obstante, realizar cambios programáticos cuando los gestos están deshabilitados.

setPanningGesturesEnabled()
Determina si el usuario podrá reorientar la cámara aplicando arrastre.
      mSvp.setPanningGesturesEnabled(false);
setUserNavigationEnabled()
Determina si el usuario podrá acceder a un panorama diferente. Los usuarios pueden usar un solo toque en vínculos de navegación, o dos en la vista, para pasar a un panorama nuevo.
      mSvp.setUserNavigationEnabled(false);
setZoomGesturesEnabled()
Determina si el usuario podrá usar dos dedos para aplicar zoom.
      mSvp.setZoomGesturesEnabled(false);

A su vez, puedes determinar si los usuarios verán nombres de calles:

setStreetNamesEnabled()
Determina su el usuario puede ver nombres de calles en el suelo.
      mSvp.setStreetNamesEnabled(false);

Configurar la ubicación del panorama

Para configurar la ubicación del panorama de Street View, llama a StreetViewPanorama.setPosition() y pasa un objeto LatLng. También puedes pasar radius como parámetro opcional. Los parámetros “radius” resultan útiles si deseas ensanchar o estrechar el área en la cual Street View buscará un panorama coincidente. Un elemento “radius” de valor 0 implica que el panorama debe vincularse con exactitud al LatLng especificado. El valor predeterminado es 50. Si hay más de un panorama en el área coincidente, la API devolverá la mejor coincidencia.

private static final LatLng SAN_FRAN = new LatLng(37.765927, -122.449972);
mSvp.setPosition(SAN_FRAN);

De manera alternativa, puedes configurar la ubicación conforme a un id. de panorama pasando un objeto panoId a StreetViewPanorama.setPosition().

A fin de recuperar el id. de panorama para panoramas adyacentes, primero usa getLocation() para recuperar un objeto StreetViewPanoramaLocation. Este objeto contiene el id. del panorama actual y un arreglo de objetos StreetViewPanoramaLink, cada uno de los cuales contiene el id. de un panorama conectado al panorama actual.

StreetViewPanoramaLocation location = mSvp.getLocation();
if (location != null && location.links != null) {
    mSvp.setPosition(location.links[0].panoId);
}

Zoom de acercamiento y alejamiento

Puedes modificar el nivel de zoom de manera programática configurando StreetViewPanoramaCamera.zoom. La configuración del zoom en 1.0 duplicará la imagen.

En el fragmento de código siguiente se usa StreetViewPanoramaCamera.Builder() para construir una nueva cámara con la inclinación y el rumbo de la existente y, al mismo tiempo, se aumenta el zoom en un cincuenta por ciento.

private static final float ZOOM_BY = 0.5f;
StreetViewPanoramaCamera camera = new StreetViewPanoramaCamera.Builder()
    .zoom(mSvp.getPanoramaCamera().zoom + ZOOM_BY)
    .tilt(mSvp.getPanoramaCamera().tilt)
    .bearing(mSvp.getPanoramaCamera().bearing)
    .build();

Configurar la orientación (punto de vista) de la cámara

Puedes determinar la orientación de la cámara de Street View configurando el rumbo y la inclinación en StreetViewPanoramaCamera.

bearing
Dirección hacia la cual apunta la cámara. Se especifica en grados en sentido horario a partir del este verdadero, alrededor del sitio de la cámara. El norte geográfico es el grado 0, el este el 90, el sur el 180 y el oeste el 270.
tilt
Inclinación hacia arriba o abajo sobre el eje Y. El rango es de -90 a 0 y 90; -90 representa la posición extrema inferior, 0 la posición centrada en el horizonte y 90 la posición extrema superior. La variación se mide a partir de la inclinación inicial predeterminada de la cámara, que a menudo (no siempre) es horizontal y plana. Por ejemplo, una imagen tomada en una colina posiblemente exhiba una inclinación predeterminada que no es horizontal.

En el fragmento de código siguiente se usa StreetViewPanoramaCamera.Builder() para construir una nueva cámara con el zoom y la inclinación de la existente y, al mismo tiempo, se modifica el rumbo 30 grados hacia la izquierda.

private static final int PAN_BY = 30;
StreetViewPanoramaCamera camera = new StreetViewPanoramaCamera.Builder()
    .zoom(mSvp.getPanoramaCamera().zoom)
    .tilt(mSvp.getPanoramaCamera().tilt)
    .bearing(mSvp.getPanoramaCamera().bearing - PAN_BY)
    .build();

En el fragmento de código siguiente se inclina la cámara 30 grados hacia arriba.

float tilt = mSvp.getPanoramaCamera().tilt + 30;
tilt = (tilt > 90) ? 90 : tilt;

StreetViewPanoramaCamera previous = mSvp.getPanoramaCamera();

StreetViewPanoramaCamera camera = new StreetViewPanoramaCamera.Builder(previous)
    .tilt(tilt)
    .build();

Animar los movimientos de la cámara

Para animar los movimientos de la cámara, llama a StreetViewPanorama.animateTo(). En la animación se interpolan los atributos actuales y los nuevos de la cámara. Si deseas ir directamente a la cámara sin animación, puedes configurar la duración en 0.

// Set the tilt to zero, keeping the zoom and bearing at current values.
// Animate over a duration of 500 milliseconds.
long duration = 500;
float tilt = 0;
StreetViewPanoramaCamera camera = new StreetViewPanoramaCamera.Builder()
    .zoom(mSvp.getPanoramaCamera().zoom)
    .bearing(mSvp.getPanoramaCamera().bearing)
    .tilt(tilt)
    .build();

mSvp.animateTo(camera, duration);

Enviar comentarios sobre...

Google Maps Android API
Google Maps Android API
Si necesitas ayuda, visita nuestra página de asistencia.