Street View de Google Maps te permite explorar lugares de todo el mundo a través de imágenes de 360 grados a nivel de la calle. Puedes explorar lugares de interés mundiales, ver maravillas naturales, navegar por un viaje o mostrar el exterior de tu empresa.
Descripción general
Google Street View proporciona vistas panorámicas de 360 grados de rutas designadas en su área de cobertura. La cobertura disponible a través del SDK es la misma que la de la app de Google Maps para iOS o https://maps.google.com/
. Puedes obtener más información sobre Street View y ver las áreas compatibles en un mapa interactivo en Acerca de Street View.
El SDK de Maps para iOS proporciona un servicio de Street View para obtener y manipular las imágenes que se usan en Google Maps Street View.
Las imágenes de Street View se muestran como panorámicas y se pueden ver desde el visor de Street View, un objeto de tipo GMSPanoramaView
.
Panorámicas de Street View
Cada panorámica de Street View es una imagen, o un conjunto de imágenes, que proporciona una vista de 360 grados desde una ubicación. Las imágenes se ajustan a la proyección equirectangular (Plate Carrée), que contiene 360 grados de vista horizontal (un giro completo) y 180 grados de vista vertical (de arriba abajo). El panorama de 360 grados resultante define una proyección en una esfera con la imagen unida a la superficie bidimensional de esa esfera.
Las panorámicas de Street View se pueden ver con el objeto GMSPanoramaView
. Este objeto proporciona un visor que renderizará el panorama como una esfera, con una cámara en su centro. Puedes controlar de forma programática la orientación de la cámara, así como varias propiedades que personalizan el visor.
Cómo acceder a los datos de Street View
Los panoramas de Street View se identifican con dos metadatos:
panoramaID
- El ID único de una panorámica de Street View. Este
panoramaID
puede cambiar con el tiempo y no es adecuado como referencia a largo plazo o fija. Lo mejor es usarpanoramaID
para proporcionar acceso programático a diferentes imágenes de Street View. coordinate
- La ubicación precisa de esta imagen, expresada como un
CLLocationCoordinate2D
. Usa uncoordinate
para el almacenamiento continuo de una ubicación panorámica o para traducir las acciones del usuario en el mapa en una imagen de Street View.
Tanto panoramaID
como coordinate
se almacenan como propiedades del objeto GMSPanorama
. Puedes solicitar un GMSPanorama
desde GMSPanoramaService
con coordinate
o panoramaID
. El objeto resultante incluirá ambos metadatos, así como un array de vínculos a panoramas cercanos.
Cómo configurar la ubicación del panorama
La ubicación de la panorámica de Street View se puede establecer en función de la coordenada.
El método
moveNearCoordinate
solicita una panorámica cerca de la coordenadas.El método
moveNearCoordinate:radius
es similar, pero te permite especificar un radio de búsqueda, en metros, alrededor de la coordenada.El método
moveNearCoordinate:source
te permite especificar una fuente. Una fuente es útil si quieres restringir Street View para que solo busque panoramas que estén al aire libre. De forma predeterminada, los panoramas de las ubicaciones se toman dentro o fuera. Ten en cuenta que es posible que no existan panorámicas al aire libre para la ubicación especificada.El método
moveNearCoordinate:radius:source
te permite especificar un radio y una fuente.
Cómo ver imágenes de Street View
Cómo agregar un visor de Street View
Los pasos básicos para agregar un visor son los siguientes:
- (Una vez) Sigue los pasos que se indican en Cómo comenzar para obtener el SDK, obtener una clave y agregar los frameworks necesarios.
- Crea o actualiza un
ViewController
. Si el panorama se mostrará cuando este controlador de vista se haga visible, asegúrate de crearlo dentro del métodoloadView
. - Crea una instancia de una clase
GMSPanoramaView
con el métodoinitWithFrame:
deGMSPanoramaView
. Si se usará como la única vista del controlador de vistas, se puede usarCGRectZero
como el marco del mapa, y el tamaño del mapa se cambiará automáticamente. - Configura el objeto
GMSPanoramaView
como la vista del controlador de vista, p.ej.,self.view = panoView;
. - Establece la ubicación de la imagen de Street View con un método como
moveNearCoordinate:
.
En el ejemplo siguiente, se agrega un visor de Street View a una aplicación.
Swift
import GoogleMaps class StreetView: UIViewController { override func loadView() { let panoView = GMSPanoramaView(frame: .zero) self.view = panoView panoView.moveNearCoordinate(CLLocationCoordinate2D(latitude: -33.732, longitude: 150.312)) } }
Objective-C
#import "StreetView.h" @import GoogleMaps; @interface StreetView () @end @implementation StreetView - (void)loadView { GMSPanoramaView *panoView = [[GMSPanoramaView alloc] initWithFrame:CGRectZero]; self.view = panoView; [panoView moveNearCoordinate:CLLocationCoordinate2DMake(-33.732, 150.312)]; } @end
Personaliza el visor
Puedes personalizar el visor restringiendo los gestos disponibles. De forma predeterminada, se habilitan el desplazamiento panorámico, el zoom y el desplazamiento a panorámicas adyacentes.
Los gestos individuales se controlan a través de las propiedades de GMSPanoramaView
.
Estas propiedades habilitan o inhabilitan los gestos controlados por el usuario. Los cambios programáticos siguen siendo posibles cuando el gesto está inhabilitado.
orientationGestures
- Determina si el usuario podrá volver a orientar la cámara presionando o arrastrando. Establece en
NO
para inhabilitar los cambios de orientación de la cámara. zoomGestures
- Determina si el usuario podrá pellizcar para acercar o alejar. Establece en
NO
para inhabilitar el zoom. navigationGestures
- Determina si el usuario podrá cambiar qué panorama es visible. Los usuarios pueden presionar una vez los vínculos de navegación o presionar dos veces la vista para cambiar los panoramas. Establece el valor en
NO
para inhabilitar los cambios de navegación.
Puedes habilitar o inhabilitar todos los gestos a la vez con el método setAllGesturesEnabled:
.
Swift
panoView.setAllGesturesEnabled(false)
Objective-C
[panoView setAllGesturesEnabled:NO];
Cómo iniciar Street View con el esquema de URL
Las imágenes de Google Street View se pueden ver desde la aplicación de Google Maps para iOS. Puedes iniciar la aplicación de Google Maps para iOS en modo Street View con el esquema de URL comgooglemaps
configurando el parámetro mapmode
como streetview
. A continuación, se muestra un ejemplo de una URL que iniciará Street View. Para obtener más información, consulta la documentación del esquema de URL.
comgooglemaps://?center=46.414382,10.013988&mapmode=streetview
Ubicaciones y punto de vista (POV) de Street View
GMSPanoramaCamera
te permite establecer el punto de vista de la cámara de Street View
como una combinación de rumbo, inclinación y zoom.
Con el fragmento de código siguiente se orientará la cámara hacia el sur y levemente hacia abajo.
Swift
panoView.camera = GMSPanoramaCamera(heading: 180, pitch: -10, zoom: 1)
Objective-C
panoView.camera = [GMSPanoramaCamera cameraWithHeading:180 pitch:-10 zoom:1];
Orientación
La ubicación de Street View define la posición del enfoque de la cámara para una imagen, pero no establece su orientación.
Para ello, el objeto GMSOrientation
define dos propiedades:
heading
define el ángulo de rotación alrededor del lugar de la cámara en grados en relación con el norte verdadero. Los rumbos se miden en el sentido de las manecillas del reloj: el norte verdadero es 0, el este es 90, el sur es 180 y el oeste es 270.pitch
(0
predeterminado) define la variación del ángulo "arriba" o "abajo" desde el tono predeterminado inicial de la cámara, que a menudo (pero no siempre) es horizontal y plano. (por ejemplo, es probable que una imagen tomada en una colina tenga un tono predeterminado que no sea horizontal). Los ángulos de inclinación se miden con valores positivos hacia arriba (hasta 90 grados hacia arriba y ortogonales al tono predeterminado) y valores negativos hacia abajo (hasta 90 grados hacia abajo y ortogonales al tono predeterminado).
Zoom
Street View admite diferentes niveles de detalle de imágenes a través del zoom. Puedes establecer el nivel de zoom de forma programática, o bien los usuarios pueden cambiar el nivel en el visor pellizcando para acercar o alejar.
Cómo mover la cámara
Una vez que hayas creado el GMSPanoramaView
y tenga una cámara configurada o predeterminada, puedes cambiarla de varias maneras. Cuando cambias la cámara, tienes la opción de animar el movimiento resultante. La animación interpola entre los atributos de la cámara actual y los nuevos.
Puedes modificar el objeto GMSPanoramaCamera
y configurarlo en la propiedad camera
de GMSPanoramaView
. Esto ajustará la cámara al nuevo punto de vista sin animación. Se puede crear un GMSCameraPosition
para configurar cualquier combinación de orientación y zoom.
Swift
panoView.camera = GMSPanoramaCamera(heading: 180, pitch: -10, zoom: 1)
Objective-C
panoView.camera = [GMSPanoramaCamera cameraWithHeading:180 pitch:-10 zoom:1];
Para animar una transición, llama al método animateToCamera:animationDuration:
de GMSPanoramaView
.
A su vez, puedes controlar la cámara usando Core Animation. Esto se pone a disposición a través del CALayer
personalizado en GMSPanoramaView
, GMSPanoramaLayer
.
Marcadores en Street View
El objeto GMSPanoramaView
puede mostrar marcadores de mapa. Puedes usar el mismo objeto GMSMarker
en un objeto GMSMapView
o GMSPanoramaView
si configuras sus propiedades correspondientes:
Swift
// Create a marker at the Eiffel Tower let position = CLLocationCoordinate2D(latitude: 48.858, longitude: 2.294) let marker = GMSMarker(position: position) // Add the marker to a GMSPanoramaView object named panoView marker.panoramaView = panoView // Add the marker to a GMSMapView object named mapView marker.map = mapView
Objective-C
// Create a marker at the Eiffel Tower CLLocationCoordinate2D position = CLLocationCoordinate2DMake(48.858,2.294); GMSMarker *marker = [GMSMarker markerWithPosition:position]; // Add the marker to a GMSPanoramaView object named panoView marker.panoramaView = panoView; // Add the marker to a GMSMapView object named mapView marker.map = mapView;
El tamaño de los marcadores se ajustará en función de la distancia entre la posición del marcador y la ubicación de GMSCameraView
. Si esta distancia es demasiado grande, el marcador se volverá demasiado pequeño para mostrarse y se ocultará de la vista.
Establece la propiedad panoramaView
en nil
para quitarla de GMSPanoramaView
.
Swift
marker.panoramaView = nil
Objective-C
marker.panoramaView = nil;
Eventos
Puedes escuchar los eventos que ocurren en la panorámica de Street View, como cuando un usuario presiona la panorámica. Para escuchar eventos, debes implementar el protocolo GMSPanoramaViewDelegate
. Consulta la guía general de eventos y la lista de métodos en GMSPanoramaViewDelegate
.