Street View di Google Maps consente di esplorare luoghi in tutto il mondo con immagini a 360 gradi a livello stradale. Puoi esplorare i punti di riferimento del mondo, esplorare le meraviglie della natura, esplorare un viaggio o mostrare l'esterno dell'attività.
Panoramica
Google Street View offre viste panoramiche a 360° di strade designate
sull'intera area di copertura. La copertura disponibile tramite l'SDK è la stessa dell'app Google Maps per iOS o di 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 di Maps per iOS fornisce un servizio di Street View per ottenere e manipolare 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 visualizzazione completa a 360 gradi da una singola posizione. Le immagini sono conformi alla proiezione equirettangolare (Plate Carrée), che contiene 360 gradi di visualizzazione orizzontale (a tutto tondo) e 180 gradi di visuale verticale (dal dritto verso l'alto) La panoramica a 360° risultante definisce una proiezione su una sfera con l'immagine avvolta nella superficie bidimensionale.
Le panoramiche di Street View sono visibili con l'oggetto GMSPanoramaView
. Questo
oggetto offre un visualizzatore che fa apparire il panorama come una sfera, con una fotocamera al centro. Puoi controllare in modo programmatico l'orientamento della videocamera, oltre a diverse proprietà che personalizzano il visualizzatore.
Accedere ai dati di Street View
Le panoramiche di Street View sono identificate da uno di due elementi di metadati:
panoramaID
- L'ID univoco di una panoramica di Street View. Il
panoramaID
potrebbe cambiare nel tempo e non è adatto come riferimento a lungo termine o hardcoded.panoramaID
è la soluzione migliore per fornire accesso programmatico a diverse immagini di Street View. coordinate
- La posizione esatta di questa immagine, espressa come
CLLocationCoordinate2D
. Utilizza uncoordinate
per l'archiviazione permanente di una località panoramica o per tradurre le azioni degli utenti sulla mappa in un'immagine di Street View.
Sia panoramaID
che coordinate
sono archiviati come proprietà dell'oggetto GMSPanorama
. Puoi richiedere un GMSPanorama
da GMSPanoramaService
utilizzando coordinate
o panoramaID
. L'oggetto
risultato includerà entrambi i metadati e un array di
link alle panoramiche nelle vicinanze.
Impostazione della posizione della panoramica
La posizione della panoramica di Street View può essere impostata in base alla coordinata.
Il metodo
moveNearCoordinate
richiede una panoramica 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 l'utilizzo di Street View solo per le panoramiche all'esterno. Per impostazione predefinita, le panoramiche delle località sono all'interno o all'esterno. Tieni presente che potrebbero non esistere panoramiche esterne per la località specificata.Il metodo
moveNearCoordinate:radius:source
consente di specificare sia un raggio che un'origine.
Visualizzazione delle immagini di Street View
Aggiungere un visualizzatore di Street View
Ecco i passaggi di base per aggiungere uno spettatore:
- (Una volta) Segui i passaggi descritti nella Guida introduttiva per ottenere l'SDK, ottenere una chiave e aggiungere i framework richiesti.
- Crea o aggiorna un
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 vista, quest'ultimo potrebbe essere utilizzato come frame della mappa, la mappa verrà ridimensionata automaticamente.CGRectZero
- 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:
.
L'esempio riportato di seguito aggiunge 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 i gesti disponibili. Per impostazione predefinita, le opzioni panoramica, zoom, zoom e per spostarti tra le panoramiche adiacenti sono tutte attive.
I singoli gesti sono controllati tramite le proprietà di GMSPanoramaView
.
Queste proprietà attivano o disattivano i gesti controllati dagli utenti; le modifiche programmatiche sono ancora possibili quando il gesto è disattivato.
orientationGestures
- Se l'utente potrà riorientare la fotocamera toccando o trascinando. Imposta
NO
per disattivare i cambiamenti di orientamento della fotocamera. zoomGestures
- Indica se l'utente potrà pizzicare per eseguire lo zoom. Impostala su
NO
per disabilitare lo zoom. navigationGestures
- Se l'utente può modificare la panoramica visibile. Gli utenti
possono utilizzare un singolo tocco sui link di navigazione oppure toccare due volte la visualizzazione per cambiare
le viste 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 visibili 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 avvierà Street View. Per ulteriori informazioni, consulta la documentazione dello schema URL.
comgooglemaps://?center=46.414382,10.013988&mapmode=streetview
Posizione e punto di vista (POV) di Street View
La GMSPanoramaCamera
consente di impostare il punto di vista della fotocamera Street View
come combinazione di intestazione, tono e zoom.
I seguenti insiemi di snippet orientano la videocamera 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 di Street View definisce la posizione della fotocamera per un'immagine, ma non definisce l'orientamento della fotocamera.
A tale scopo, l'oggetto GMSOrientation
definisce due proprietà:
heading
definisce l'angolo di rotazione attorno al luogo della fotocamera in gradi rispetto al vero nord. Le intestazioni vengono misurate in senso orario: il nord vero è 0, l'est è 90, il sud è 180, l'ovest è 270.pitch
(valore predefinito:0
) definisce la varianza dell'angolo "su" o "giù" dall'intonazione predefinita iniziale della videocamera, che è spesso (ma non sempre) orizzontale. Ad esempio, un'immagine scattata in collina probabilmente mostrerà un tono predefinito non orizzontale. Gli angoli di inclinazione sono misurati con valori positivi verso l'alto (fino a +90 gradi in verticale e ortogonali all'intonazione predefinita) e valori negativi verso il basso (fino a -90 gradi in basso e ortogonali all'intonazione predefinita).
Assumi una prospettiva
Street View supporta diversi livelli di dettaglio delle immagini grazie all'uso dello zoom. Puoi impostare il livello di zoom in modo programmatico oppure gli utenti possono cambiare il livello nel visualizzatore premendo sullo zoom.
Spostamento della videocamera in corso...
Dopo aver creato la videocamera GMSPanoramaView
e che questa ha una videocamera configurata o predefinita, puoi modificarla in diversi modi. Quando cambi la fotocamera, hai la possibilità di animare il movimento della videocamera risultante. L'animazione interpola tra gli attributi attuali della videocamera e quelli nuovi.
Puoi modificare l'oggetto GMSPanoramaCamera
e impostarlo sulla proprietà camera
per la proprietà GMSPanoramaView
. In questo modo la videocamera viene agganciata al nuovo
punto di vista, senza animazione. È 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
in 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 scalate 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 nella panoramica di Street View, ad esempio quando un utente tocca la panoramica. Per ascoltare gli eventi, devi implementare il protocollo GMSPanoramaViewDelegate
. Consultate la guida generale agli eventi e l'elenco dei metodi nella GMSPanoramaViewDelegate
.