Street View di Google Maps ti consente di esplorare luoghi di tutto il mondo con immagini a livello stradale a 360 gradi. Puoi esplorare punti di riferimento del mondo, visualizzare meraviglie naturali, seguire un viaggio o mostrare l'esterno della tua attività.
Panoramica
Google Street View offre viste panoramiche a 360° da strade designate
in tutta l'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 vedere le aree supportate su una mappa interattiva, consulta Informazioni su Street View.
L'SDK di Maps per iOS offre un servizio 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 sono
visualizzate dall'interno del visualizzatore di Street View,
un oggetto di tipo GMSPanoramaView
.
Panorami di Street View
Ogni panoramica di Street View è un'immagine o un insieme di immagini che forniscono una visione a 360 gradi da un'unica posizione. Le immagini sono conformi alla proiezione equirettangolare (Plate Carrée), che contiene una vista a 360 gradi orizzontale (tutto completo) e 180 gradi in verticale (da dritta verso il basso). La panoramica a 360° risultante definisce una proiezione su una sfera con l'immagine a capo sulla superficie bidimensionale di quella sfera.
Le panoramiche di Street View sono visualizzabili con l'oggetto GMSPanoramaView
. Questo oggetto fornisce un visualizzatore che mostrerà il panorama come una sfera, con una fotocamera al centro. Puoi controllare in modo programmatico l'orientamento
della videocamera e diverse proprietà per personalizzare il visualizzatore.
Accesso ai dati di Street View
Le panoramiche di Street View sono identificate da uno di due parti di metadati:
panoramaID
- L'ID univoco di un panorama di Street View. Questo
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 in
CLLocationCoordinate2D
. Utilizzacoordinate
per l'archiviazione permanente della posizione di una panoramica o per convertire le azioni dell'utente sulla mappa in un'immagine di Street View.
Sia panoramaID
che coordinate
sono archiviate come proprietà dell'oggetto GMSPanorama
. Puoi richiedere un GMSPanorama
a
GMSPanoramaService
utilizzando coordinate
o panoramaID
. L'oggetto risultante includerà entrambi i metadati, nonché un array di link a 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
ti consente di specificare un'origine. Un'origine è utile se vuoi limitare Street View in modo che cerchi solo i panorami che si trovano all'esterno. Per impostazione predefinita, le panoramiche delle località sono all'interno o all'esterno. Tieni presente che le panoramiche esterne potrebbero non esistere per la località specificata.Il metodo
moveNearCoordinate:radius:source
consente di specificare sia un raggio sia una sorgente.
Visualizzazione delle immagini di Street View
Aggiungere un visualizzatore di Street View
Ecco i passaggi di base per aggiungere un visualizzatore:
- (Una volta) Segui la procedura descritta in Guida introduttiva per scaricare l'SDK, ottenere una chiave e aggiungere i framework richiesti.
- Crea o aggiorna un
ViewController
. Se la panoramica viene mostrata quando il controller di visualizzazione diventa visibile, assicurati di crearla utilizzando il metodoloadView
. - Crea e crea un'istanza di una classe
GMSPanoramaView
utilizzando il metodoinitWithFrame:
GMSPanoramaView
. Se deve essere utilizzata come unica vista del controller di visualizzazione, è possibile usareCGRectZero
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 seguente, un visualizzatore di Street View viene aggiunto 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, sono attivate panoramica, zoom e spostamento verso panoramiche adiacenti.
I singoli gesti vengono controllati tramite le proprietà di GMSPanoramaView
.
Queste proprietà attivano o disattivano i gesti controllati dall'utente; le modifiche alla pubblicità programmatica sono ancora possibili quando il gesto è disattivato.
orientationGestures
- Indica se l'utente sarà in grado di riorientare la fotocamera toccandola o trascinandola. Imposta su
NO
per disattivare le modifiche all'orientamento della fotocamera. zoomGestures
- Indica se l'utente può pizzicare per eseguire lo zoom. Impostala su
NO
per disattivare lo zoom. navigationGestures
- Indica se l'utente sarà in grado di modificare il panorama da rendere visibile. Gli utenti possono toccare una sola volta i link di navigazione o toccare due volte la vista per modificare le panoramiche. Imposta
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];
Avvio 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 comgooglemaps
impostando il parametro mapmode
su streetview
. Di seguito è riportato un esempio di URL che avvia
Street View. Per ulteriori informazioni, consulta la documentazione relativa allo schema URL.
comgooglemaps://?center=46.414382,10.013988&mapmode=streetview
Posizioni e punto di vista (POV) di Street View
GMSPanoramaCamera
ti consente di impostare il punto di vista della fotocamera di Street View
come combinazione di orientamento, altezza 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 località di Street View definisce il posizionamento della messa a fuoco della fotocamera per un'immagine, ma non l'orientamento della fotocamera per quell'immagine.
A questo scopo, l'oggetto GMSOrientation
definisce due proprietà:
heading
definisce l'angolo di rotazione attorno al luogo della fotocamera in gradi relativi al nord vero. Le intestazioni vengono misurate in senso orario: il vero nord è 0, l'est 90, il sud 180, l'ovest 270.pitch
(valore predefinito0
) definisce la varianza dell'angolo in alto o in basso rispetto all'inclinazione predefinita iniziale della videocamera, che spesso è (ma non sempre) piatta in orizzontale. Ad esempio, un'immagine scattata su una collina probabilmente avrà un'inclinazione predefinita non orizzontale. Gli angoli di inclinazione vengono misurati con valori positivi rivolti verso l'alto (fino a +90 gradi in verticale e ortogonali rispetto al picco predefinito) e valori negativi verso il basso (fino a -90 gradi in verticale e ortogonali rispetto al tono predefinito).
Zoom
Street View supporta diversi livelli di dettaglio delle immagini tramite l'uso dello zoom. Puoi impostare il livello di zoom in modo programmatico oppure gli utenti possono modificarlo nel visualizzatore pizzicando lo schermo per eseguire lo zoom.
Spostamento della fotocamera
Dopo aver creato il dispositivo GMSPanoramaView
e avere una videocamera configurata o
predefinita, puoi modificarla in diversi modi. Quando cambi la videocamera, hai la possibilità di animare il conseguente movimento della videocamera. L'animazione si interpola tra gli attributi della fotocamera attuali e i nuovi attributi della fotocamera.
Puoi modificare l'oggetto GMSPanoramaCamera
e impostarlo nella
proprietà camera
di GMSPanoramaView
. In questo modo la videocamera verrà agganciata
al nuovo punto di vista senza animazione. È possibile creare un elemento 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 usando l'animazione di base. Questa funzionalità è resa
disponibile tramite il CALayer
personalizzato su GMSPanoramaView
,
GMSPanoramaLayer
.
Indicatori all'interno di Street View
L'oggetto GMSPanoramaView
può visualizzare gli indicatori sulla 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 vengono ridimensionate in funzione della distanza tra la posizione dell'indicatore e quella di GMSCameraView
. Se questa distanza diventa troppo grande, l'indicatore diventa troppo piccolo per essere visualizzato e non viene visualizzato.
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 rimanere in ascolto degli eventi, devi implementare il protocollo GMSPanoramaViewDelegate
. Consulta la
guida agli eventi generale e l'elenco dei metodi sulla
GMSPanoramaViewDelegate
.