Mit Google Maps Street View können Sie Orte auf der ganzen Welt in 360-Grad-Straßenansichten erkunden. Sie können Sehenswürdigkeiten erkunden, Naturwunder ansehen, eine Reise planen oder Ihr Unternehmen von außen zeigen.
Übersicht
Auf Google Street View können Nutzer 360°-Aufnahmen bestimmter Straßen ansehen, die über den Dienst in dessen Abdeckungsbereich erfasst wurden. Die über das SDK verfügbare Abdeckung ist dieselbe wie die der Google Maps App für iOS oder https://maps.google.com/
. Weitere Informationen zu Street View und den unterstützten Gebieten finden Sie unter Street View.
Das Maps SDK for iOS bietet einen Street View-Dienst zum Abrufen und Bearbeiten der Bilder, die in Google Maps Street View verwendet werden.
Street View-Bilder werden als Panoramabilder zurückgegeben und im Street View-Viewer betrachtet – einem Objekt vom Typ GMSPanoramaView
.
Street View-Panoramen
Jedes Street View-Panorama besteht aus einem oder mehreren Bildern, die eine 360-Grad-Ansicht eines einzelnen Orts ergeben. Die Bilder entsprechen der Rektangularprojektion (Plattkarte) mit einer 360-Grad-Horizontalsicht (komplette Rundumsicht) und einer 180-Grad-Vertikalsicht (von senkrecht oben bis gerade unten). Das resultierende 360-Grad-Panorama definiert eine Projektion auf einer Kugel, wobei das Bild auf die zweidimensionale Oberfläche dieser Kugel gelegt ist.
Street View-Panoramen können mit dem GMSPanoramaView
-Objekt angesehen werden. Dieses Objekt stellt einen Viewer bereit, mit dem das Panorama als Kugel mit einer Kamera im Mittelpunkt gerendert wird. Sie können die Ausrichtung der Kamera sowie verschiedene Eigenschaften zur individuellen Anpassung des Viewer 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 ist nicht als langfristige oder hartcodierte Referenz geeignet.panoramaID
eignet sich am besten, um programmatischen Zugriff auf verschiedene Street View-Bilder zu gewähren. coordinate
- Der genaue Standort dieses Bildes, ausgedrückt als
CLLocationCoordinate2D
. Sie können eincoordinate
verwenden, um einen Panoramastandort dauerhaft zu speichern oder Nutzeraktionen auf der Karte in ein Street View-Bild zu übersetzen.
Sowohl panoramaID
als auch coordinate
werden als Attribute des GMSPanorama
-Objekts gespeichert. Sie können mit coordinate
oder panoramaID
ein GMSPanorama
aus dem GMSPanoramaService
anfordern. Das resultierende Objekt enthält sowohl Metadaten als auch ein Array mit Links zu nahe gelegenen Panoramen.
Standort 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, Sie können jedoch einen Suchradius in Metern um die Koordinate angeben.Mit der Methode
moveNearCoordinate:source
können Sie eine Quelle angeben. Eine Quelle ist nützlich, wenn Sie Street View so einschränken möchten, dass nur nach Außenaufnahmen gesucht wird. Standardmäßig sind Panoramen von Standorten entweder innen oder außen. Möglicherweise sind für den angegebenen Ort keine Außenansichten vorhanden.Mit der Methode
moveNearCoordinate:radius:source
können Sie sowohl einen Radius als auch eine Quelle angeben.
Street View-Bilder ansehen
Street View-Viewer hinzufügen
Um ein Anzeigeprogramm hinzuzufügen, sind folgende grundlegende Schritte auszuführen:
- (einmalig) Führen Sie die Schritte unter Erste Schritte aus, um das SDK herunterzuladen, rufen Sie einen Schlüssel ab und fügen Sie die erforderlichen Frameworks hinzu.
ViewController
erstellen oder aktualisieren. Wenn das Panorama angezeigt wird, sobald dieser Ansichts-Controller sichtbar wird, erstellen Sie ihn unbedingt innerhalb der MethodeloadView
.- Erstellen und instanziieren Sie eine
GMSPanoramaView
-Klasse mit der MethodeGMSPanoramaView
initWithFrame:
. Wenn dies als einzige Ansicht des Ansichts-Controllers verwendet werden soll, kannCGRectZero
als Kartenrahmen verwendet werden. Die Größe der Karte wird dann automatisch angepasst. - Legen Sie das
GMSPanoramaView
-Objekt als Ansicht des Ansichts-Controllers fest, z.B.self.view = panoView;
. - Legen Sie den Standort des Street View-Bilds mithilfe 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
Viewer anpassen
Sie können das Anzeigeprogramm anpassen, indem Sie die verfügbaren Gesten einschränken. Standardmäßig sind Schwenken, Zoomen und Wechseln zu benachbarten Panoramen aktiviert.
Einzelne Touch-Gesten werden über die Eigenschaften von GMSPanoramaView
gesteuert.
Diese Eigenschaften aktivieren oder deaktivieren benutzergesteuerte Gesten. 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 Änderungen der Kameraausrichtung zu deaktivieren. zoomGestures
- Gibt an, ob der Nutzer durch Auseinander- und Zusammenziehen der Finger zoomen kann. Legen Sie
NO
fest, um das Zoomen zu deaktivieren. navigationGestures
- Gibt an, ob der Nutzer ändern kann, welches Panorama angezeigt wird. Nutzer können durch einmaliges Tippen auf Navigationslinks oder durch Doppeltippen auf die Ansicht zwischen Panoramabildern 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];
Starten von Street View mit dem URL-Schema
Google Street View-Bilder können über die Google Maps App für iOS aufgerufen werden. Wenn Sie die Google Maps App für iOS im Street View-Modus mit dem URL-Schema comgooglemaps
starten möchten, setzen Sie den Parameter mapmode
auf streetview
. Unten sehen Sie ein Beispiel für eine URL, mit der Street View gestartet wird. Weitere Informationen finden Sie in der Dokumentation zum URL-Schema.
comgooglemaps://?center=46.414382,10.013988&mapmode=streetview
Street View-Position und -Perspektive
Mit GMSPanoramaCamera
können Sie den Blickwinkel der Street View-Kamera als Kombination aus Ausrichtung, 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. Richtungen werden im Uhrzeigersinn gemessen: Der geografische Norden liegt bei 0, Osten bei 90, Süden bei 180 und Westen bei 270.pitch
(Standard0
) gibt die Neigung der Kamera nach oben oder unten an, ausgehend von der ursprünglichen Neigungsposition der Kamera, die häufig (aber nicht immer) flach horizontal ist. Ein Bild, das auf einem Hügel aufgenommen wurde, wird beispielsweise einen Standardneigungswinkel haben, der nicht horizontal ist. Neigungswinkel werden mit positiven Werten nach oben gemessen (bis zu +90 Grad bei senkrechter Neigung nach oben und im rechten Winkel zur Standardneigung) und mit negativen Werten für die Neigung nach unten (bis zu -90 Grad bei senkrechter Neigung nach unten und im rechten Winkel zur Standardneigung).
Zoom
Street View unterstützt verschiedene Bilddetailebenen mithilfe der Vergrößerung. Sie können die Zoomstufe programmatisch festlegen oder Nutzer können sie im Viewer durch Auseinander- und Zusammenziehen der Finger ändern.
Kamera bewegen
Nachdem Sie das GMSPanoramaView
erstellt haben und es entweder eine konfigurierte oder eine Standardkamera hat, können Sie es auf verschiedene Arten ändern. Beim Ändern der Kameraposition können Sie die resultierende Kamerabewegung animieren. Die Animation wird zwischen den aktuellen und den neuen Kameraattributen interpoliert.
Sie können das Objekt GMSPanoramaCamera
ändern und für das Attribut camera
der GMSPanoramaView
festlegen. Dadurch wird die Kamera ohne Animation auf den neuen Blickwinkel gesetzt. Ein GMSCameraPosition
kann erstellt werden, um eine beliebige Kombination aus Ausrichtung und Zoom zu konfigurieren.
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. Dies wird über den benutzerdefinierten CALayer
am GMSPanoramaView
, GMSPanoramaLayer
zur Verfügung gestellt.
Markierungen in Street View
Mit dem GMSPanoramaView
-Objekt können Kartenmarkierungen angezeigt werden. Sie können dasselbe GMSMarker
-Objekt entweder für ein GMSMapView
- oder für ein GMSPanoramaView
-Objekt verwenden, indem Sie die entsprechenden Attribute 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 von Markierungen hängt von der Entfernung zwischen der Position der Markierung und der Position der GMSCameraView
ab. Wird dieser Abstand zu groß, wird die Markierung zu klein zum Anzeigen und wird ausgeblendet.
Legen Sie das Attribut panoramaView
auf nil
fest, um es aus GMSPanoramaView
zu entfernen.
Swift
marker.panoramaView = nil
Objective-C
marker.panoramaView = nil;
Veranstaltungen
Sie können auf Ereignisse warten, die im Street View-Panorama auftreten, z. B. wenn ein Nutzer auf das Panorama tippt. Wenn Sie auf Ereignisse warten möchten, müssen Sie das GMSPanoramaViewDelegate
-Protokoll implementieren. Weitere Informationen finden Sie im Leitfaden zu Ereignissen und in der Liste der Methoden in der GMSPanoramaViewDelegate
.