Street View

Plattform auswählen: Android iOS JavaScript

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 ein coordinate 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:

  1. (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.
  2. ViewController erstellen oder aktualisieren. Wenn das Panorama angezeigt wird, sobald dieser Ansichts-Controller sichtbar wird, erstellen Sie ihn unbedingt innerhalb der Methode loadView.
  3. Erstellen und instanziieren Sie eine GMSPanoramaView-Klasse mit der Methode GMSPanoramaView initWithFrame:. Wenn dies als einzige Ansicht des Ansichts-Controllers verwendet werden soll, kann CGRectZero als Kartenrahmen verwendet werden. Die Größe der Karte wird dann automatisch angepasst.
  4. Legen Sie das GMSPanoramaView-Objekt als Ansicht des Ansichts-Controllers fest, z.B. self.view = panoView;.
  5. 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 (Standard 0) 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.