Street View di Google Maps ti consente di esplorare luoghi di tutto il mondo tramite immagini a 360 gradi a livello del suolo. Puoi esplorare punti di riferimento internazionali, osservare meraviglie della natura, pianificare un viaggio o mostrare l'esterno della tua attività.
Panoramica
Google Street View fornisce viste panoramiche a 360 gradi da strade designate
in tutta la sua area di copertura. La copertura disponibile tramite l'SDK è la stessa dell'app Google Maps per iOS o di https://maps.google.com/
. Per scoprire di più su
Street View e visualizzare le aree supportate su una mappa interattiva, consulta
Informazioni su Street View.
Maps SDK for iOS fornisce un servizio di Street View per ottenere e manipolare le immagini utilizzate in Google Maps Street View.
Le immagini di Street View vengono restituite come panorami e visualizzate dal visualizzatore di Street View, un oggetto di tipo GMSPanoramaView
.
Panoramiche di Street View
Ogni panorama di Street View è un'immagine o un insieme di immagini che fornisce una vista completa a 360 gradi da un'unica posizione. Le immagini sono conformi alla proiezione equirettangolare (piastra quadrata), che contiene una visuale orizzontale a 360 gradi (completa) e una verticale a 180 gradi (dall'alto verso il basso). Il panorama a 360 gradi risultante definisce una proiezione su una sfera con l'immagine avvolta sulla superficie bidimensionale della sfera.
Le panoramiche di Street View sono visualizzabili con l'oggettoGMSPanoramaView
. Questo oggetto fornisce un visualizzatore che eseguirà il rendering del panorama come una sfera con una fotocamera al centro. Puoi controllare in modo programmatico
l'orientamento della videocamera, nonché diverse proprietà per personalizzare
lo spettatore.
Accesso ai dati di Street View
I panorami di Street View sono identificati da uno dei due metadati:
panoramaID
- L'ID univoco di una panoramica di Street View. Questo valore
panoramaID
può cambiare nel tempo e non è adatto come riferimento a lungo termine o hardcoded.panoramaID
è ideale per fornire accesso programmatico a diverse immagini di Street View. coordinate
- La posizione esatta di questa immagine, espressa come
CLLocationCoordinate2D
. Utilizza uncoordinate
per memorizzare in modo permanente la posizione di una panoramica o per tradurre le azioni dell'utente sulla mappa in un'immagine di Street View.
Sia panoramaID
che coordinate
vengono memorizzati come proprietà dell'oggetto
GMSPanorama
. Puoi richiedere un GMSPanorama
dal
GMSPanoramaService
utilizzando coordinate
o panoramaID
. L'oggetto risultante includerà entrambi i metadati, nonché un array di link ai panorami nelle vicinanze.
Impostazione della posizione del panorama
La posizione della panoramica di Street View può essere impostata in base alle coordinate.
Il metodo
moveNearCoordinate
richiede un panorama vicino alla coordinate.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 a cercare solo panorami esterni. Per impostazione predefinita, i panorami delle località sono all'interno o all'esterno. Tieni presente che per la località specificata potrebbero non essere disponibili panoramiche all'aperto.Il metodo
moveNearCoordinate:radius:source
consente di specificare sia un raggio che una sorgente.
Visualizzazione delle immagini di Street View
Aggiungere un visualizzatore di Street View
I passaggi di base per aggiungere uno spettatore sono:
- (Una volta) Segui i passaggi descritti in Introduzione per scaricare l'SDK, ottenere una chiave e aggiungere i framework richiesti.
- Crea o aggiorna un
ViewController
. Se il panorama verrà visualizzato quando questo controller della vista diventa visibile, assicurati di crearlo all'interno del metodoloadView
. - Crea e crea un'istanza di una classe
GMSPanoramaView
utilizzando il metodoGMSPanoramaView
initWithFrame:
. Se deve essere utilizzata come única vista del visualizzatore,CGRectZero
può essere utilizzato come frame della mappa, che verrà ridimensionata automaticamente. - Imposta l'oggetto
GMSPanoramaView
come vista del view controller, 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
Personalizzare il visualizzatore
Puoi personalizzare il visualizzatore limitando i gesti disponibili. Per impostazione predefinita, la panoramica, lo zoom e il passaggio ai panorami adiacenti sono attivati.
I singoli gesti vengono controllati tramite le proprietà di GMSPanoramaView
.
Queste proprietà attivano o disattivano i gesti controllati dall'utente. Le modifiche programmatiche sono comunque possibili quando il gesto è disattivato.
orientationGestures
- Indica se l'utente potrà ruotare la fotocamera toccando o trascinando. Imposta su
NO
per disattivare le modifiche dell'orientamento della fotocamera. zoomGestures
- Indica se l'utente potrà eseguire lo zoom con un pizzico. Imposta su
NO
per disattivare 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 visualizzazione per cambiare i panorami. Imposta su
NO
per disattivare le modifiche di navigazione.
Puoi attivare o disattivare tutti i gesti contemporaneamente con il metodosetAllGesturesEnabled:
.
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'app 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 saperne di più, consulta la documentazione relativa allo schema URL.
comgooglemaps://?center=46.414382,10.013988&mapmode=streetview
Località e punto di vista (POV) di Street View
GMSPanoramaCamera
ti consente di impostare il punto di vista della fotocamera
Street View come combinazione di orientamento, inclinazione e zoom.
Gli snippet di seguito orienteranno 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 il posizionamento del fuoco della fotocamera per un'immagine, ma non definisce l'orientamento della fotocamera per quell'immagine.
A questo scopo, l'oggetto GMSOrientation
definisce due proprietà:
heading
definisce l'angolo di rotazione intorno al luogo della fotocamera in gradi rispetto al vero nord. Le tracce vengono misurate in senso orario: il nord vero è 0, l'est è 90, il sud è 180 e l'ovest è 270.pitch
(valore predefinito0
) definisce la varianza dell'angolo "su" o "giù" rispetto all'inclinazione predefinita iniziale della videocamera, che spesso (ma non sempre) è orizzontale. Ad esempio, un'immagine scattata su una collina avrà probabilmente un'inclinazione predefinita non orizzontale. Gli angoli di inclinazione vengono misurati con valori positivi verso l'alto (fino a +90 gradi verso l'alto e ortogonali all'inclinazione predefinita) e valori negativi verso il basso (fino a -90 gradi in verticale e ortogonali all'inclinazione predefinita).
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 per aumentare lo zoom.
Movimento della fotocamera
Una volta creato il GMSPanoramaView
e configurata o impostata come predefinita una videocamera, puoi modificarlo in diversi modi. Quando cambi la
videocamera, hai la possibilità di animare il movimento risultante della videocamera. L'animazione esegue l'interpolazione tra gli attributi attuali della fotocamera e quelli della nuova fotocamera.
Puoi modificare l'oggetto GMSPanoramaCamera
e impostarlo sulla proprietà camera
di GMSPanoramaView
. La fotocamera verrà impostata sul 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 Core Animation. Questa funzionalità è disponibile tramite CALayer
personalizzato su GMSPanoramaView
,GMSPanoramaLayer
.
Indicatori in Street View
L'oggetto GMSPanoramaView
è in grado di visualizzare gli indicatori della mappa. Puoi utilizzare lo stesso oggetto GMSMarker
in un oggetto GMSMapView
o GMSPanoramaView
impostando le relative 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 variano in base alla distanza tra la posizione dell'indicatore e la posizione di GMSCameraView
. Se questa distanza diventa troppo grande, l'indicatore diventa troppo piccolo per essere visualizzato e viene nascosto.
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 tocca il panorama. Per ascoltare gli eventi, è necessario implementare il protocollo GMSPanoramaViewDelegate
. Consulta la guida generale agli eventi e l'elenco dei metodi su GMSPanoramaViewDelegate
.