Street View

Seleziona la 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 del suolo. Puoi esplorare i monumenti più famosi del mondo, ammirare le meraviglie della natura, seguire un itinerario 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 saperne 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 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 una singola posizione. Le immagini sono conformi alla proiezione equirettangolare (piastra quadrata), che contiene una vista orizzontale a 360 gradi (completa) e una vista 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.

I panorami 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 di due metadati:

panoramaID
L'ID univoco di un panorama 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 un coordinate per lo stoccaggio permanente della posizione di un panorama o per tradurre le azioni degli utenti 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 del panorama 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 i panorami 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

Aggiunta di un visualizzatore di Street View

I passaggi di base per aggiungere un visualizzatore sono:

  1. (Una volta) Segui i passaggi descritti nella sezione Inizia per scaricare l'SDK, ottenere una chiave e aggiungere i framework richiesti.
  2. Crea o aggiorna un ViewController. Se il panorama verrà visualizzato quando questo controller della vista diventa visibile, assicurati di crearlo all'interno del metodo loadView.
  3. Crea e crea un'istanza di una classe GMSPanoramaView utilizzando il metodo GMSPanoramaView initWithFrame:. Se deve essere utilizzata come única visualizzazione del visualizzatore, CGRectZero può essere utilizzato come frame della mappa, che verrà ridimensionata automaticamente.
  4. Imposta l'oggetto GMSPanoramaView come visualizzazione del controller della vista, ad esempio self.view = panoView;.
  5. Imposta la posizione dell'immagine di Street View utilizzando un metodo come moveNearCoordinate:.

L'esempio seguente 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
      

Personalizzazione del 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
Se l'utente potrà riorientare la fotocamera toccando o trascinando. Imposta su NO per disattivare le modifiche dell'orientamento della fotocamera.
zoomGestures
Indica se l'utente potrà aumentare lo zoom pizzicando. Imposta su NO per disattivare lo zoom.
navigationGestures
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'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

Località e punto di vista (POV) di Street View

GMSPanoramaCamera ti consente di impostare il punto di vista della videocamera di Street View come combinazione di rotta, inclinazione e zoom.

Gli snippet di seguito orienteranno 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 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 attorno al luogo della fotocamera in gradi rispetto al nord vero. Le direzioni vengono misurate in senso orario: nord vero è 0, est è 90, sud è 180 e ovest è 270.
  • pitch (valore predefinito 0) 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 verso il basso 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 tramite programmazione oppure gli utenti possono modificarlo nel visualizzatore pizzicando per aumentare lo zoom.

Spostare la fotocamera

Dopo aver creato il GMSPanoramaView e aver configurato o impostato una videocamera predefinita, puoi modificarlo in diversi modi. Quando cambi la camera, hai la possibilità di animare il movimento risultante della videocamera. L'animazione esegue l'interpolazione tra gli attributi attuali della videocamera e quelli della nuova videocamera.

Puoi modificare l'oggetto GMSPanoramaCamera e impostarlo sulla proprietà camera di GMSPanoramaView. La videocamera 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 loro posizione 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, devi implementare il protocollo GMSPanoramaViewDelegate. Consulta la guida generale agli eventi e l'elenco dei metodi su GMSPanoramaViewDelegate.