Street View

Seleziona la piattaforma: Android iOS JavaScript

Street View di Google Maps ti consente di esplorare luoghi di tutto il mondo con immagini a livello stradale a 360 gradi. Esplora i punti di riferimento del mondo, vedi meraviglie naturali, segui un viaggio o mostra l'esterno della tua attività.

Panoramica

Google Street View offre viste panoramiche a 360° delle strade designate in tutta l'area di copertura. La copertura disponibile tramite l'SDK è la stessa di quella per l'app Google Maps per iOS o 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 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 vengono visualizzate all'interno del visualizzatore di Street View, un oggetto di tipo GMSPanoramaView.

Panorami di Street View

Ogni panorama di Street View è un'immagine, o un insieme di immagini, che offre una visione completa a 360 gradi da un'unica posizione. Le immagini si conformano alla proiezione equirettangolare (Plate Carrée), che contiene una visione orizzontale a 360 gradi (un bordo completo) e una visuale verticale di 180 gradi (dall'alto verso il basso). La panoramica a 360 gradi risultante definisce una proiezione su una sfera con l'immagine avvolta sulla superficie bidimensionale di quella sfera.

I panorami di Street View sono visualizzabili con l'oggetto GMSPanoramaView. Questo oggetto fornisce a un visualizzatore che mostra il panorama come una sfera, con una fotocamera al centro. Puoi controllare in modo programmatico l'orientamento della videocamera, nonché diverse proprietà personalizzando il visualizzatore.

Accesso ai dati di Street View

Le panoramiche in Street View sono identificate da due metadati:

panoramaID
L'ID univoco di una panoramica di Street View. Questo panoramaID può cambiare nel tempo e non è adatto come riferimento a lungo termine o hardcoded. panoramaID è utilizzato al meglio per fornire accesso programmatico a immagini di Street View diverse.
coordinate
La posizione esatta di questa immagine, espressa come CLLocationCoordinate2D. Utilizza un coordinate per l'archiviazione permanente della posizione di una panoramica o per tradurre le azioni degli utenti sulla mappa in un'immagine di Street View.

Sia panoramaID che coordinate vengono archiviati come proprietà dell'oggetto GMSPanorama. Puoi richiedere un GMSPanorama all'GMSPanoramaService utilizzando coordinate o panoramaID. L'oggetto risultante includerà entrambe le parti di metadati, nonché un array di link a panoramiche vicine.

Impostazione della posizione del panorama

La posizione di una panoramica in Street View può essere impostata in base alla coordinata.

  • Il metodo moveNearCoordinate richiede una panoramica accanto 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. Una sorgente è utile se vuoi limitare Street View alla ricerca solo dei panorami esterni. Per impostazione predefinita, le panoramiche dei luoghi sono all'interno o all'esterno. Tieni presente che le panoramiche di esterni potrebbero non esistere per la località specificata.

  • Il metodo moveNearCoordinate:radius:source consente di specificare sia un raggio sia un'origine.

Visualizzazione delle immagini di Street View

Aggiungere un visualizzatore di Street View

I passaggi di base per l'aggiunta di un visualizzatore sono:

  1. (Una volta) Segui i passaggi descritti nella Guida introduttiva per scaricare l'SDK, ottenere una chiave e aggiungere i framework richiesti.
  2. Crea o aggiorna un ViewController. Se la panoramica verrà mostrata quando questo controller di visualizzazione diventa visibile, assicurati di crearlo con il metodo loadView.
  3. Crea e crea un'istanza per una classe GMSPanoramaView utilizzando il metodo initWithFrame: GMSPanoramaView. Se deve essere utilizzato come unica vista del controller di visualizzazione, puoi usare CGRectZero come frame della mappa: la mappa verrà ridimensionata automaticamente.
  4. Imposta l'oggetto GMSPanoramaView come vista del controller della vista, ad esempio self.view = panoView;.
  5. Imposta la posizione dell'immagine di Street View con un metodo come moveNearCoordinate:.

L'esempio riportato di seguito consente di aggiungere 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. Panoramica, zoom e spostamento verso panoramiche adiacenti sono tutti abilitati. I singoli gesti vengono controllati tramite le proprietà di GMSPanoramaView. Queste proprietà attivano o disattivano i gesti controllati dall'utente; modifiche programmatiche sono comunque possibili anche se i gesti vengono disattivati.

orientationGestures
Indica se l'utente sarà in grado di riorientare la fotocamera toccando o trascinando. Imposta NO per disattivare le modifiche dell'orientamento della fotocamera.
zoomGestures
Indica se l'utente può pizzicare per eseguire lo zoom. Imposta NO per disattivare lo zoom.
navigationGestures
Se l'utente può modificare la panoramica visibile. Gli utenti possono toccare una volta i link di navigazione o toccare due volte la vista per cambiare i panorami. Impostato 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];
      

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 avvierà Street View. Per ulteriori informazioni, consulta la documentazione sullo schema URL.

comgooglemaps://?center=46.414382,10.013988&mapmode=streetview

Luoghi di Street View e punto di vista (POV)

L'GMSPanoramaCamera ti consente di impostare il punto di vista della fotocamera di Street View come combinazione di intestazione, distanza e zoom.

I gruppi di snippet riportati di seguito 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 messa a fuoco della fotocamera per un'immagine, ma non definisce l'orientamento della fotocamera per l'immagine in questione. A questo scopo, l'oggetto GMSOrientation definisce due proprietà:

  • heading definisce l'angolo di rotazione intorno al locus della fotocamera in gradi rispetto al nord reale. Le intestazioni sono misurate in senso orario: il nord reale è 0, l'est è 90, il sud è 180, l'ovest è 270.
  • pitch (0) definisce la varianza dell'angolo "su" o "giù" rispetto all'inclinazione predefinita iniziale della videocamera, che spesso (ma non sempre) è piatta in orizzontale. Ad esempio, un'immagine scattata su una collina probabilmente mostrerà 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 ortogonale rispetto all'inclinazione predefinita) e valori negativi verso il basso (a -90 gradi in verticale e ortogonale rispetto al tono predefinito).

Zoom

Street View supporta diversi livelli di dettaglio dell'immagine attraverso 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

Dopo aver creato GMSPanoramaView e aver selezionato una videocamera configurata o predefinita, puoi modificarla in diversi modi. Quando cambi la videocamera, hai la possibilità di animare il movimento risultante della videocamera. L'animazione interpola tra gli attributi correnti della fotocamera e i nuovi attributi.

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 tramite Core Animation. Questa diventa disponibile tramite la CALayer personalizzata su GMSPanoramaView, GMSPanoramaLayer.

Indicatori in Street View

L'oggetto GMSPanoramaView è in grado di visualizzare gli indicatori sulla mappa. Puoi utilizzare lo stesso oggetto GMSMarker su 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 verranno ridimensionate in funzione della distanza tra la posizione dell'indicatore e la posizione di GMSCameraView. Se questa distanza diventa eccessiva, l'indicatore diventerà troppo piccolo per essere visualizzato e verrà 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 nella panoramica Street View, ad esempio quando un utente tocca la panoramica. Per ascoltare gli eventi, devi implementare il protocollo GMSPanoramaViewDelegate. Consulta la guida generale agli eventi e l'elenco dei metodi nella GMSPanoramaViewDelegate.