Street View di Google Maps ti consente di esplorare luoghi di tutto il mondo tramite immagini a 360 gradi a livello stradale. Puoi esplorare i punti di riferimento di tutto il mondo, vedere le cose che ti circondano in modo naturale, esplorare un viaggio o mostrare l'esterno della tua attività.
Panoramica
Google Street View offre viste panoramiche a 360 gradi delle strade indicate nella copertura dell'area. La copertura disponibile tramite l'SDK è la stessa dell'app Google Maps per iOS o https://maps.google.com/
. Per saperne di più su Street View e visualizzare le aree supportate su una mappa interattiva, consulta Informazioni su Street View.
L'SDK Maps per iOS fornisce un servizio Street View per ottenere e modificare le immagini utilizzate in Street View di Google Maps.
Le immagini di Street View vengono restituite come panoramiche e vengono
visualizzate nel visualizzatore Street View, un
oggetto di tipo GMSPanoramaView
.
Panoramiche in Street View
Ogni panorama di Street View è costituito da un'immagine o da un insieme di immagini che offre una vista completa a 360 gradi da un'unica posizione. Le immagini sono conformi alla proiezione equirettangolare (Plate Carrée), che contiene una visione orizzontale a 360° (tuttavia avvolgente) e una vista verticale a 180° (da dritta verso l'alto fino a dritta). Il conseguente panorama a 360° definisce una proiezione su una sfera con l'immagine aggregata sulla superficie bidimensionale della sfera.
I panorami di Street View sono visualizzabili con l'oggetto GMSPanoramaView
. Questo oggetto fornisce un visualizzatore che esegue il rendering del panorama come a sfera, con una fotocamera al centro. Puoi controllare l'orientamento della videocamera in modo programmatico, nonché diverse proprietà che personalizzano il visualizzatore.
Accedere ai dati di Street View
I panorami di Street View sono identificati da uno dei due tipi di meta-dati:
panoramaID
- L'ID univoco di una panoramica di Street View.
panoramaID
potrebbe cambiare nel tempo e non è adatto per un riferimento a lungo termine o hardcoded.panoramaID
è la soluzione migliore per fornire l'accesso programmatico a diverse immagini di Street View. coordinate
- La posizione esatta di questa immagine, espressa come
CLLocationCoordinate2D
. Utilizza un elementocoordinate
per l'archiviazione permanente di una posizione del panorama o per tradurre le azioni dell'utente sulla mappa in un'immagine di Street View.
panoramaID
e coordinate
vengono entrambi archiviati come proprietà dell'oggetto GMSPanorama
. Puoi richiedere un GMSPanorama
da GMSPanoramaService
utilizzando coordinate
o panoramaID
. L'oggetto risultante includerà entrambe le porzioni di meta-data, nonché un array di link ai panorami nelle vicinanze.
Impostazione della posizione del panorama
La posizione del panorama di Street View può essere impostata in base alla coordinata.
Il metodo
moveNearCoordinate
richiede un panorama vicino alla coordinata.Il metodo
moveNearCoordinate:radius
è simile, ma consente di specificare un raggio di ricerca, in metri, intorno alla coordinata.Il metodo
moveNearCoordinate:source
consente di specificare un'origine. Un'origine è utile se vuoi limitare Street View in modo da cercare solo i panorami che si trovano all'esterno. Per impostazione predefinita, le foto panoramiche sono all'interno o all'esterno. Tieni presente che potrebbero non esistere panorami esterni per la località specificata.Il metodo
moveNearCoordinate:radius:source
consente di specificare sia un raggio sia un'origine.
Visualizzazione di immagini Street View
Aggiungere un visualizzatore di Street View
Per aggiungere uno spettatore, procedi nel seguente modo:
- (Una volta) Segui i passaggi descritti nella Guida introduttiva per ottenere l'SDK, ottenere una chiave e aggiungere i framework richiesti.
- Crea o aggiorna
ViewController
. Se la panoramica viene visualizzata quando questo controller di visualizzazione diventa visibile, assicurati di crearla con il metodoloadView
. - Crea e crea un'istanza di una classe
GMSPanoramaView
utilizzando il metodoGMSPanoramaView
initWithFrame:
. Se questo deve essere utilizzato come unica visualizzazione del controller di visualizzazione,CGRectZero
potrebbe essere utilizzato come frame della mappa, la mappa verrà ridimensionata automaticamente. - Imposta l'oggetto
GMSPanoramaView
come vista del controller di visualizzazione, ad esempioself.view = panoView;
. - Imposta la posizione dell'immagine di Street View utilizzando un metodo come
moveNearCoordinate:
.
Nell'esempio riportato di seguito, viene aggiunto un visualizzatore di Street View a un'app.
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
Personalizzazione del visualizzatore
Puoi personalizzare il visualizzatore limitando la scelta dei gesti. Per impostazione predefinita, sono attive le panoramiche, lo zoom e il viaggio verso le panoramiche adiacenti.
I singoli gesti sono controllati attraverso le proprietà di GMSPanoramaView
.
Queste proprietà consentono di attivare o disattivare i gesti controllati dall'utente; le modifiche programmatiche sono ancora possibili quando il gesto è disattivato.
orientationGestures
- Indica se l'utente potrà riorientare la fotocamera toccando o trascinando. Imposta su
NO
per disattivare le modifiche all'orientamento della fotocamera. zoomGestures
- Consente all'utente di pizzicare per eseguire lo zoom. Imposta su
NO
per disabilitare lo zoom. navigationGestures
- Indica se l'utente potrà modificare il panorama visibile. Gli utenti
possono usare un singolo tocco sui link di navigazione o toccare due volte la vista per modificare
le foto panoramiche Impostate su
NO
per disattivare le modifiche alla navigazione.
Puoi attivare o disattivare tutti i gesti contemporaneamente con il metodo setAllGesturesEnabled:
.
Swift
panoView.setAllGesturesEnabled(false)
Objective-C
[panoView setAllGesturesEnabled:NO];
Lancio di Street View con lo schema URL
Le immagini di Google Street View sono visualizzabili dall'applicazione
Google Maps per iOS. Puoi avviare l'applicazione Google Maps per iOS in modalità Street View con lo schema URL di comgooglemaps
impostando il parametro mapmode
su streetview
. Di seguito è riportato un esempio di URL che lancerà Street View. Per ulteriori informazioni, consulta la documentazione dello schema degli URL.
comgooglemaps://?center=46.414382,10.013988&mapmode=streetview
Località e punto di vista Street View (POV)
GMSPanoramaCamera
consente di impostare il punto di vista della fotocamera Street View come una combinazione di intestazione, tonalità e zoom.
I seguenti snippet snippet orientano la fotocamera verso sud e leggermente verso il basso.
Swift
panoView.camera = GMSPanoramaCamera(heading: 180, pitch: -10, zoom: 1)
Objective-C
panoView.camera = [GMSPanoramaCamera cameraWithHeading:180 pitch:-10 zoom:1];
Orientamento
La posizione Street View definisce la posizione della messa a fuoco della fotocamera per un'immagine, ma non definisce l'orientamento della fotocamera per quell'immagine.
A tale scopo, l'oggetto GMSOrientation
definisce due proprietà:
heading
definisce l'angolo di rotazione attorno al locus della fotocamera in gradi rispetto al nord nord. Le intestazioni vengono misurate in senso orario: il nord è 0, l'est è 90, il sud è 180, l'ovest è 270.pitch
(valore predefinito:0
) definisce la varianza angolare "su" o "giù" rispetto alla tonalità predefinita iniziale della videocamera, che spesso è (ma non sempre) orizzontale piatto. Ad esempio, un'immagine scattata in collina probabilmente mostra un tono predefinito non orizzontale. Gli angoli di inclinazione sono misurati con valori positivi verso l'alto (fino a +90 gradi verso l'alto e ortogonali alla tonalità predefinita) e valori negativi verso il basso (fino a -90 gradi dritti verso il basso e ortogonali alla tonalità predefinita).
Assumi una prospettiva
Street View supporta livelli di dettaglio delle immagini diversi tramite l'uso dello zoom. Puoi impostare il livello di zoom in modo programmatico oppure gli utenti possono modificare il livello nel visualizzatore pizzicando per eseguire lo zoom.
Spostamento della videocamera in corso...
Dopo aver creato l'oggetto GMSPanoramaView
e dotato di una videocamera configurata o predefinita, puoi modificarla in diversi modi. Quando cambi fotocamera, hai la possibilità di animare il movimento della videocamera risultante. L'animazione si interpola tra gli attributi della videocamera attuali e quelli nuovi.
Puoi modificare l'oggetto GMSPanoramaCamera
e impostarlo nella proprietà camera
di GMSPanoramaView
. La fotocamera verrà allineata al nuovo punto di vista senza animazioni. È possibile creare un GMSCameraPosition
per configurare qualsiasi combinazione di orientamento e zoom.
Swift
panoView.camera = GMSPanoramaCamera(heading: 180, pitch: -10, zoom: 1)
Objective-C
panoView.camera = [GMSPanoramaCamera cameraWithHeading:180 pitch:-10 zoom:1];
Puoi animare una transizione chiamando il metodo animateToCamera:animationDuration:
di GMSPanoramaView
.
Inoltre, puoi controllare la videocamera utilizzando Animazioni principali. Questo viene reso disponibile tramite il CALayer
personalizzato su GMSPanoramaView
, GMSPanoramaLayer
.
Indicatori in Street View
L'oggetto GMSPanoramaView
è in grado di visualizzare indicatori di mappa. Puoi utilizzare lo stesso oggetto GMSMarker
su un oggetto GMSMapView
o GMSPanoramaView
impostando le proprietà corrispondenti:
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;
Le dimensioni degli indicatori verranno ridimensionate in funzione della distanza tra la posizione dell'indicatore e la posizione di GMSCameraView
. Se questa distanza diventa troppo grande, l'indicatore diventerà troppo piccolo per essere visualizzato e non sarà visibile.
Imposta la proprietà panoramaView
su nil
per rimuoverla da GMSPanoramaView
.
Swift
marker.panoramaView = nil
Objective-C
marker.panoramaView = nil;
Eventi
Puoi ascoltare gli eventi che si verificano nel panorama di Street View, ad esempio quando un utente lo tocca. Per ascoltare gli eventi, devi implementare il protocollo GMSPanoramaViewDelegate
. Consulta la guida agli eventi generale e l'elenco dei metodi disponibili in GMSPanoramaViewDelegate
.