Mit Street View in Google Maps können Sie Orte auf der ganzen Welt in 360-Grad-Bildern auf Straßenebene erkunden. Sie können Sehenswürdigkeiten und Naturwunder erkunden, Ausflüge 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 über das SDK verfügbare Abdeckung ist dieselbe wie bei der Google Maps App für iOS oder https://maps.google.com/
. Weitere Informationen zu Street View und den unterstützten Bereichen 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 Panoramen zurückgegeben und im Street View-Viewer betrachtet – einem Objekt des Typs GMSPanoramaView
.
Street View-Panoramen
Jedes Street View-Panorama besteht aus einem oder mehreren Bildern, die eine 360-Grad-Ansicht eines einzelnen Orts bilden. Die Bilder entsprechen der Equirektangularprojektion (Plate Carrée), die 360 Grad horizontale Sicht (eine vollständige Rundumansicht) und 180 Grad vertikale Ansicht (von oben nach unten) umfasst. Das sich ergebende 360-Grad-Panorama definiert eine Projektion auf einer Kugel, wobei das Bild auf der zweidimensionalen Oberfläche dieser Kugel verpackt ist.
Street View-Panoramen können mit dem Objekt GMSPanoramaView
angesehen werden. Dieses Objekt bietet einen Viewer, der das Panorama als Kugel rendert, wobei sich die Kamera in der Mitte befindet. Du kannst die Ausrichtung der Kamera sowie verschiedene Eigenschaften, die den Viewer anpassen, programmatisch steuern.
Street View-Daten aufrufen
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. DaspanoramaID
eignet sich am besten für den programmatischen Zugriff auf verschiedene Street View-Bilder. coordinate
- Der genaue Standort dieses Bildes als
CLLocationCoordinate2D
. Verwendecoordinate
, 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 eine GMSPanorama
aus GMSPanoramaService
mithilfe von coordinate
oder panoramaID
anfordern. Das resultierende Objekt enthält beide Metadaten sowie ein Array mit Links zu Panoramen in der Nähe.
Standort des Panoramas festlegen
Der Standort des Street View-Panoramas kann basierend auf der Koordinate festgelegt werden.
Die Methode
moveNearCoordinate
fordert ein Panorama in der Nähe der Koordinate an.Die Methode
moveNearCoordinate:radius
ist ähnlich, ermöglicht aber die Angabe eines Suchradius in Metern um die Koordinate.Mit der Methode
moveNearCoordinate:source
können Sie eine Quelle angeben. Eine Quelle ist nützlich, wenn Sie Street View auf Panoramen außerhalb von außerhalb beschränken möchten. Standardmäßig sind Panoramen von Innen- oder Außenbereichen verfügbar. Für den angegebenen Ort sind unter Umständen 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) Folgen Sie der Anleitung unter Erste Schritte, um das SDK herunterzuladen, rufen Sie einen Schlüssel ab und fügen Sie die erforderlichen Frameworks hinzu.
- Erstellen oder aktualisieren Sie eine
ViewController
. Wenn das Panorama angezeigt wird, wenn dieser Ansichts-Controller sichtbar wird, müssen Sie ihn innerhalb der MethodeloadView
erstellen. - Erstellen und instanziieren Sie eine
GMSPanoramaView
-Klasse mit der MethodeGMSPanoramaView
initWithFrame:
. Wenn dies die einzige Ansicht des Ansichts-Controllers ist, kannCGRectZero
als Frame der Karte verwendet werden. Die Größe der Karte wird dann automatisch angepasst. - Legen Sie das Objekt
GMSPanoramaView
als Ansicht des 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
Betrachter anpassen
Sie können das Anzeigeprogramm anpassen, indem Sie die verfügbaren Gesten einschränken. Standardmäßig sind Schwenken, Zoomen und Reisen zu benachbarten Panoramen aktiviert.
Einzelne Gesten werden über Properties von GMSPanoramaView
gesteuert.
Mit diesen Properties lassen sich vom Nutzer gesteuerte Touch-Gesten aktivieren oder deaktivieren. Programmatische Änderungen sind auch nach dem Deaktivieren der Touch-Geste möglich.
orientationGestures
- Gibt an, ob der Nutzer die Kamera durch Tippen oder Ziehen neu ausrichten kann. Mit
NO
wird die Ausrichtungsänderung an der Kamera deaktiviert. zoomGestures
- Gibt an, ob der Nutzer durch Auseinander- und Zusammenziehen der Finger zoomen kann. Legen Sie
NO
fest, um den Zoom zu deaktivieren. navigationGestures
- Gibt an, ob der Nutzer ändern kann, welches Panorama angezeigt wird. Nutzer können einmalig auf Navigationslinks tippen oder doppelt auf die Ansicht tippen, um Panoramen zu ändern. 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 über die Google Maps App für iOS aufgerufen 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
setzen. Unten sehen Sie ein Beispiel für eine URL, über die Street View gestartet wird. Weitere Informationen finden Sie in der Dokumentation zum URL-Schema.
comgooglemaps://?center=46.414382,10.013988&mapmode=streetview
Street View-Standorte 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, jedoch 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. Die Richtung wird im Uhrzeigersinn gemessen: Der geografische Norden ist 0, Osten 90, Süden 180 und Westen 270.pitch
(Standard0
) gibt die Neigung der Kamera nach oben oder unten an, ausgehend von der ursprünglichen Neigungsposition der Kamera, die je nach Straßenlage oft horizontal ist, jedoch nicht immer. So ist beispielsweise bei Bildern, die auf einem Hügel aufgenommen wurden, die Standardneigung wahrscheinlich nicht horizontal. Bei einer Neigung nach oben weisen die Neigungswinkel positive Werte auf: bis zu +90 Grad bei senkrechter Neigung nach oben, im rechten Winkel zur Standardneigung. Bei einer Neigung nach unten sind die Werte negativ: bis zu -90 Grad bei senkrechter Neigung nach unten, im rechten Winkel zur Standardneigung.
Zoom
Street View unterstützt verschiedene Bilddetailebenen mithilfe der Vergrößerung. Sie können die Zoomstufe programmatisch festlegen oder sie durch Zusammenziehen der Finger im Viewer ändern.
Kamera bewegen
Nachdem du die GMSPanoramaView
erstellt und entweder eine konfigurierte oder eine Standardkamera eingerichtet hast, kannst du sie auf unterschiedliche Weise ä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 im Attribut camera
von GMSPanoramaView
festlegen. Dadurch wird die Kamera ohne Animation
auf den neuen Blickwinkel ausgerichtet. 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. Sie wird über die benutzerdefinierte CALayer
vom GMSPanoramaView
(GMSPanoramaLayer
) zur Verfügung gestellt.
Markierungen in Street View
Das GMSPanoramaView
-Objekt kann Kartenmarkierungen anzeigen. Sie können dasselbe GMSMarker
-Objekt entweder für ein GMSMapView
- oder 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 Markierungsposition und dem Standort von GMSCameraView
ab. Wenn dieser Abstand zu groß wird, wird die Markierung zu klein zum Anzeigen und wird ausgeblendet.
Setze das Attribut panoramaView
auf nil
, um es aus der GMSPanoramaView
zu entfernen.
Swift
marker.panoramaView = nil
Objective-C
marker.panoramaView = nil;
Ereignisse
Sie können Ereignisse erfassen, die im Street View-Panorama stattfinden, z. B. wenn ein Nutzer auf das Panorama tippt. Zum Überwachen von Ereignissen müssen Sie das Protokoll GMSPanoramaViewDelegate
implementieren. Weitere Informationen finden Sie im Leitfaden zu Ereignissen und in der Liste der Methoden in GMSPanoramaViewDelegate
.