Street View

Seleziona piattaforma: Android iOS JavaScript

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 elemento coordinate 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:

  1. (Una volta) Segui i passaggi descritti nella Guida introduttiva per ottenere l'SDK, ottenere una chiave e aggiungere i framework richiesti.
  2. Crea o aggiorna ViewController. Se la panoramica viene visualizzata quando questo controller di visualizzazione diventa visibile, assicurati di crearla con il metodo loadView.
  3. Crea e crea un'istanza di una classe GMSPanoramaView utilizzando il metodo GMSPanoramaView 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.
  4. Imposta l'oggetto GMSPanoramaView come vista del controller di visualizzazione, ad esempio self.view = panoView;.
  5. 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.