Mit Google Maps Street View können Sie sich Orte auf der ganzen Welt anhand von 360°-Bildern auf Straßenebene ansehen. Sie können Sehenswürdigkeiten der Welt erkunden, Naturwunder ansehen, eine Reise planen oder die Außenansicht Ihres Unternehmens zeigen.
Übersicht
Google Street View stellt 360°-Panoramen von verschiedenen Straßen des gesamten Street View-Abdeckungsbereichs zur Verfügung. Die Abdeckung, die über das SDK verfügbar ist, entspricht der Abdeckung der Google Maps App für iOS oder https://maps.google.com/
. Weitere Informationen zu Street View und eine interaktive Karte mit den unterstützten Gebieten finden Sie unter Street View.
Das Maps SDK for iOS bietet einen Street View-Dienst zum Abrufen und Bearbeiten der in Google Maps Street View verwendeten Bilder.
Street View-Bilder werden als Panoramen zurückgegeben und können im Street View-Viewer angesehen werden, einem Objekt vom Typ GMSPanoramaView
.
Street View-Panoramen
Jedes Street View-Panorama besteht aus einem oder mehreren Bildern, die von einem gemeinsamen Punkt aus aufgenommen wurden und eine 360-Grad-Ansicht eines einzelnen Orts ergeben. Die Bilder entsprechen der flächengleichen Projektion (Plate Carrée), die eine 360-Grad-Horizontalsicht (vollständige Rundumsicht) und eine 180-Grad-Vertikalsicht (von senkrecht oben bis senkrecht unten) bietet. Das resultierende 360-Grad-Panorama definiert eine Projektion auf einer Kugel, wobei das Bild auf die zweidimensionale Oberfläche dieser Kugel projiziert wird.
Street View-Panoramen können mit dem GMSPanoramaView
-Objekt angesehen werden. Dieses Objekt bietet einen Viewer, der das Panorama als Kugel mit einer Kamera in der Mitte rendert. Sie können die Ausrichtung der Kamera sowie mehrere Eigenschaften des Viewers programmatisch steuern.
Auf Street View-Daten zugreifen
Street View-Panoramen werden durch eines von zwei Metadatenelementen bestimmt:
panoramaID
- Die eindeutige ID eines Street View-Panoramas. Diese
panoramaID
kann sich im Laufe der Zeit ändern und eignet sich nicht als langfristige oder hartcodierte Referenz. DiepanoramaID
eignet sich am besten für den programmatischen Zugriff auf verschiedene Street View-Bilder. coordinate
- Der genaue Standort dieses Bilds, ausgedrückt als
CLLocationCoordinate2D
. Verwenden Siecoordinate
, um einen Panoramastandort dauerhaft zu speichern oder Nutzeraktionen auf der Karte in ein Street View-Bild umzuwandeln.
Sowohl panoramaID
als auch coordinate
werden als Properties des GMSPanorama
-Objekts gespeichert. Sie können eine GMSPanorama
über die GMSPanoramaService
mithilfe von coordinate
oder panoramaID
anfordern. Das resultierende Objekt enthält sowohl die Metadaten als auch eine Reihe von Links zu Panoramabildern in der Nähe.
Ort des Panoramas festlegen
Der Standort des Street View-Panoramas kann anhand der Koordinate festgelegt werden.
Mit der Methode
moveNearCoordinate
wird ein Panorama in der Nähe der Koordinate angefordert.Die Methode
moveNearCoordinate:radius
ist ähnlich, ermöglicht es Ihnen aber, einen Suchradius in Metern um die Koordinate anzugeben.Mit der Methode
moveNearCoordinate:source
können Sie eine Quelle angeben. Eine Quelle ist nützlich, wenn Sie Street View nur auf Panoramas beschränken möchten, die sich draußen befinden. Standardmäßig sind Panoramen von Orten entweder drinnen oder draußen. Für den angegebenen Ort sind möglicherweise keine Außenpanoramen verfügbar.Mit der Methode
moveNearCoordinate:radius:source
können Sie sowohl einen Radius als auch eine Quelle angeben.
Street View-Bilder ansehen
Street View-Betrachter hinzufügen
Um ein Anzeigeprogramm hinzuzufügen, sind folgende grundlegende Schritte auszuführen:
- (Einmal) Folgen Sie der Anleitung unter Einstieg, um das SDK herunterzuladen, einen Schlüssel zu erhalten und die erforderlichen Frameworks hinzuzufügen.
ViewController
erstellen oder aktualisieren Wenn das Panorama angezeigt werden soll, sobald dieser Ansichtscontroller sichtbar wird, müssen Sie es in derloadView
-Methode erstellen.- Erstellen und instanziieren Sie eine
GMSPanoramaView
-Klasse mit der MethodeGMSPanoramaView
initWithFrame:
. Wenn dies die einzige Ansicht des View Controllers sein soll, kannCGRectZero
als Frame der Karte verwendet werden. Die Größe der Karte wird dann automatisch angepasst. - Legen Sie das
GMSPanoramaView
-Objekt als Ansicht des View Controllers fest, z.B.self.view = panoView;
. - Legen Sie den Standort des Street View-Bilds mit einer Methode wie
moveNearCoordinate:
fest.
Im folgenden Beispiel wird ein Street View-Anzeigeprogramm zu einer App hinzugefügt.
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
Wiedergabefenster anpassen
Sie können das Anzeigeprogramm anpassen, indem Sie die verfügbaren Gesten einschränken. Standardmäßig sind Schwenken, Zoomen und der Wechsel zu benachbarten Panoramen aktiviert.
Einzelne Touch-Gesten werden über Eigenschaften von GMSPanoramaView
gesteuert.
Mit diesen Properties lassen sich vom Nutzer gesteuerte Touch-Gesten aktivieren oder deaktivieren. Programmatische Änderungen sind auch dann möglich, wenn die Geste deaktiviert ist.
orientationGestures
- Gibt an, ob der Nutzer die Kamera durch Tippen oder Ziehen neu ausrichten kann. Legen Sie
NO
fest, um die Ausrichtungsänderungen der Kamera zu deaktivieren. zoomGestures
- Ob der Nutzer durch Auseinander- und Zusammenziehen der Finger zoomen kann. Legen Sie
NO
fest, um den Zoom zu deaktivieren. navigationGestures
- Ob der Nutzer das sichtbare Panorama ändern kann. Nutzer können Navigationslinks antippen oder die Ansicht doppelt antippen, um zwischen Panoramen zu wechseln. Legen Sie
NO
fest, um Navigationsänderungen zu deaktivieren.
Mit der Methode setAllGesturesEnabled:
können Sie alle Touch-Gesten gleichzeitig aktivieren oder deaktivieren.
Swift
panoView.setAllGesturesEnabled(false)
Objective-C
[panoView setAllGesturesEnabled:NO];
Street View mit dem URL-Schema starten
Google Street View-Bilder können in der Google Maps App für iOS angesehen werden. Sie können die Google Maps App für iOS im Street View-Modus mit dem comgooglemaps
-URL-Schema starten, indem Sie den Parameter mapmode
auf streetview
festlegen. Unten sehen Sie ein Beispiel für eine URL, über die Street View geöffnet wird. Weitere Informationen finden Sie in der Dokumentation zum URL-Schema.
comgooglemaps://?center=46.414382,10.013988&mapmode=streetview
Street View-Standorte und -Perspektiven
Mit GMSPanoramaCamera
können Sie den Blickwinkel der Street View-Kamera als Kombination aus Peilung, Neigung und Zoom festlegen.
In den folgenden Codeausschnitten wird die Kamera nach Süden ausgerichtet und leicht nach unten geneigt.
Swift
panoView.camera = GMSPanoramaCamera(heading: 180, pitch: -10, zoom: 1)
Objective-C
panoView.camera = [GMSPanoramaCamera cameraWithHeading:180 pitch:-10 zoom:1];
Ausrichtung
Der Street View-Standort definiert die Position des Kamerafokus für ein Bild, aber nicht die Ausrichtung der Kamera für dieses Bild.
Die Ausrichtung wird über zwei Eigenschaften des GMSOrientation
-Objekts definiert:
heading
gibt die Himmelsrichtung der Kamera in Grad an, ausgehend vom geografischen Nordpol. Aufnahmerichtungen werden im Uhrzeigersinn gemessen: 0 Grad entspricht dem geografischen Norden, 90 Grad dem Osten, 180 Grad dem Süden und 270 Grad dem Westen.pitch
hat den Standardwert0
und gibt die Neigung der Kamera nach oben oder unten an, ausgehend von der ursprünglichen Neigungsposition der Kamera, die je nach Straßenlage oft (aber nicht immer) horizontal ist. So ist beispielsweise bei Bildern, die auf einem Hügel aufgenommen wurden, die Standardneigung wahrscheinlich nicht horizontal. Neigungswinkel werden mit positiven Werten nach oben (bis +90 Grad gerade nach oben und senkrecht zum Standardneigungswinkel) und negativen Werten nach unten (bis -90 Grad gerade nach unten und senkrecht zum Standardneigungswinkel) gemessen.
Zoom
Street View unterstützt verschiedene Bilddetailebenen mithilfe der Vergrößerung. Sie können die Zoomstufe programmatisch festlegen oder Nutzer können die Stufe im Viewer ändern, indem sie mit den Fingern zusammen- oder auseinanderziehen.
Kamera bewegen
Nachdem Sie die GMSPanoramaView
erstellt haben und sie entweder eine konfigurierte oder eine Standardkamera hat, können Sie sie auf verschiedene Arten ändern. Wenn Sie die Kamera wechseln, haben Sie die Möglichkeit, die resultierende Kamerabewegung zu animieren. Bei der Animation wird zwischen den aktuellen Kameraattributen und den neuen Kameraattributen interpoliert.
Sie können das GMSPanoramaCamera
-Objekt ändern und es für die camera
-Eigenschaft von GMSPanoramaView
festlegen. Die Kamera wird ohne Animation auf den neuen Blickwinkel ausgerichtet. Mit einem GMSCameraPosition
können beliebige Kombinationen aus Ausrichtung und Zoom konfiguriert werden.
Swift
panoView.camera = GMSPanoramaCamera(heading: 180, pitch: -10, zoom: 1)
Objective-C
panoView.camera = [GMSPanoramaCamera cameraWithHeading:180 pitch:-10 zoom:1];
Sie können einen Übergang animieren, indem Sie die Methode animateToCamera:animationDuration:
von GMSPanoramaView
aufrufen.
Zusätzlich können Sie die Kamera mit Core Animation steuern. Diese Funktion ist über die benutzerdefinierte CALayer
auf GMSPanoramaView
, GMSPanoramaLayer
verfügbar.
Markierungen in Street View
Mit dem Objekt GMSPanoramaView
können Kartenmarkierungen angezeigt werden. Sie können dasselbe GMSMarker
-Objekt für ein GMSMapView
- oder ein GMSPanoramaView
-Objekt verwenden, indem Sie die entsprechenden Properties festlegen:
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;
Die Größe der Markierungen wird in Abhängigkeit von der Entfernung zwischen der Position der Markierung und dem Standort der GMSCameraView
skaliert. Wenn dieser Abstand zu groß wird, wird die Markierung zu klein, um angezeigt zu werden, und ist nicht mehr sichtbar.
Legen Sie das Attribut panoramaView
auf nil
fest, um es aus der GMSPanoramaView
zu entfernen.
Swift
marker.panoramaView = nil
Objective-C
marker.panoramaView = nil;
Ereignisse
Sie können Ereignisse abhören, die im Street View-Panorama auftreten, z. B. wenn ein Nutzer auf das Panorama tippt. Damit auf Ereignisse gewartet werden kann, müssen Sie das Protokoll GMSPanoramaViewDelegate
implementieren. Weitere Informationen finden Sie im Leitfaden zu Ereignissen und in der Liste der Methoden auf der Seite GMSPanoramaViewDelegate
.