Street View

Seleziona la piattaforma: Android iOS JavaScript

Street View di Google Maps ti consente di esplorare luoghi di tutto il mondo con le immagini a livello stradale a 360 gradi. Puoi esplorare punti di riferimento di tutto il mondo, ammirare meraviglie naturali, fare un viaggio o mostrare l'esterno della tua attività.

Panoramica

Google Street View offre viste panoramiche a 360 gradi 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 scoprire di più su Street View e vedere 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 manipolare le immagini utilizzate in Street View di Google Maps. Le immagini di Street View vengono restituite come panoramiche e visualizzate direttamente nel 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 fornisce una visione completa a 360 gradi da una singola posizione. Le immagini si adattano alla proiezione equirettangolare (Plate Carrée), che contiene 360 gradi di visualizzazione orizzontale (tutto il avvolgimento) e 180 gradi di visualizzazione verticale (da dritta verso il basso). La panoramica a 360° 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'oggetto GMSPanoramaView. Questo oggetto fornisce un visualizzatore che mostrerà la panoramica come una sfera, con una fotocamera al centro. Puoi controllare in modo programmatico l'orientamento della videocamera, nonché diverse proprietà che consentono di personalizzare il visualizzatore.

Accesso ai dati di Street View

Le panoramiche Street View sono identificate da uno di due metadati:

panoramaID
L'ID univoco di un panorama di Street View. Questo 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 un coordinate per l'archiviazione permanente di una posizione 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 risultante includerà entrambi i metadati, nonché un array di link a panoramiche nelle vicinanze.

Impostazione della posizione della panoramica

La posizione della panoramica 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 i panorami esterni potrebbero non esistere 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 Street View

Ecco i passaggi di base per aggiungere un visualizzatore:

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

Nell'esempio seguente viene aggiunto un visualizzatore 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, panoramica, zoom e spostamento verso panoramiche adiacenti sono tutte attive. 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 toccando o trascinando. Imposta su NO per disattivare le modifiche all'orientamento della fotocamera.
zoomGestures
Indica se l'utente è in grado di pizzicare per eseguire lo zoom. Impostalo su NO per disattivare lo zoom.
navigationGestures
Indica se l'utente è in grado di modificare il panorama visibile. Gli utenti possono utilizzare un singolo tocco sui link di navigazione o toccare due volte la visualizzazione per modificare le panoramiche. Imposta 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 nell'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

Località 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, inclinazione e zoom.

Gli insiemi di snippet riportati di seguito 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 località di Street View definisce il posizionamento della messa a fuoco della fotocamera di 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 reale. 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 variazione 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 che guardano verso l'alto (fino a +90 gradi in verticale e ortogonali all'altezza predefinita) e con valori negativi che guardano verso il basso (fino a -90 gradi in verticale e ortogonali all'altezza predefinita).

Assumi una prospettiva

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 modificare il livello nel visualizzatore pizzicando lo schermo per eseguire lo zoom.

Spostare la videocamera

Una volta creato GMSPanoramaView e se dispone di una videocamera configurata o predefinita, puoi modificarla in uno dei seguenti modi. Quando cambi la videocamera, hai la possibilità di animare il movimento della videocamera risultante. L'animazione si interpola tra gli attributi della videocamera correnti e i nuovi attributi della videocamera.

Puoi modificare l'oggetto GMSPanoramaCamera e impostarlo nella proprietà camera di GMSPanoramaView. In questo modo la fotocamera 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. La funzionalità è resa disponibile tramite l'elemento CALayer personalizzato su GMSPanoramaView, GMSPanoramaLayer.

Indicatori in 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 eccessiva, 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 sulla panoramica Street View, ad esempio quando un utente tocca la panoramica. Per ascoltare gli eventi, devi implementare il protocollo GMSPanoramaViewDelegate. Consulta la guida agli eventi generale e l'elenco di metodi su GMSPanoramaViewDelegate.