Street View

Plattform auswählen: Android iOS JavaScript

Mit Google Maps Street View können Sie Orte auf der ganzen Welt in einer 360-Grad-Straßenansicht erkunden. Sie können Sehenswürdigkeiten und Naturwunder auf der ganzen Welt erkunden, eine Reise planen oder Ihr Unternehmen von außen zeigen.

Überblick

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 entspricht der der Google Maps App für iOS oder https://maps.google.com/. Weitere Informationen zu Street View und die unterstützten Gebiete auf einer interaktiven Karte finden Sie unter Street View.

Das Maps SDK for iOS bietet einen Street View-Dienst, mit dem Sie die in Google Maps Street View verwendeten Bilder abrufen und bearbeiten können. Street View-Bilder werden als Panoramen 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 von einem gemeinsamen Punkt aus aufgenommen wurden und eine 360-Grad-Ansicht eines einzelnen Orts ergeben. Die Bilder entsprechen der Rektangularprojektion (Plattkarte), die eine 360-Grad-Horizontalsicht (vollständige Rundumsicht) und eine 180-Grad-Vertikalsicht (von senkrecht nach oben bis senkrecht nach unten) bietet. Das sich ergebende 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 bietet einen Viewer, mit dem das Panorama als Kugel mit einer Kamera im Mittelpunkt gerendert wird. Sie können programmatisch die Ausrichtung der Kamera und verschiedene Eigenschaften zum Anpassen der Kamera festlegen.

Auf Street View-Daten zugreifen

Street View-Panoramen werden durch eines von zwei Metadatenelementen bestimmt:

panoramaID
Die eindeutige ID eines Street View-Panoramas. panoramaID kann sich im Laufe der Zeit ändern und ist nicht als langfristige oder hartcodierte Referenz geeignet. Die panoramaID eignet sich am besten, um programmatischen Zugriff auf verschiedene Street View-Bilder zu gewähren.
coordinate
Der genaue Standort des Bilds, ausgedrückt als CLLocationCoordinate2D. Sie können coordinate verwenden, um einen Panoramastandort dauerhaft zu speichern oder Nutzeraktionen auf der Karte in ein Street View-Bild umzuwandeln.

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 beide Metadatenelemente sowie ein Array von Links zu Panoramen in der Nähe.

Standort des Panoramas festlegen

Der Standort des Street View-Panoramas kann anhand der Koordinaten festgelegt werden.

  • Die Methode moveNearCoordinate fordert ein Panorama in der Nähe der Koordinate an.

  • 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 Panoramen gesucht werden, die sich außerhalb befinden. Standardmäßig befinden sich Panoramen von Standorten entweder im Innen- oder Außenbereich. Unter Umständen 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) Folge der Anleitung unter Erste Schritte, um das SDK herunterzuladen, einen Schlüssel abzurufen und die erforderlichen Frameworks hinzuzufügen.
  2. ViewController erstellen oder aktualisieren. Wenn das Panorama angezeigt wird, sobald dieser Ansichts-Controller sichtbar wird, müssen Sie ihn innerhalb der Methode loadView erstellen.
  3. Erstellen und instanziieren Sie eine GMSPanoramaView-Klasse mit der Methode GMSPanoramaView initWithFrame:. Wenn diese Ansicht des Ansichts-Controllers als einzige Ansicht verwendet werden soll, kann CGRectZero als Kartenframe 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 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
      

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. Mit diesen Eigenschaften werden vom Nutzer gesteuerte Touch-Gesten aktiviert oder deaktiviert. Programmatische Änderungen sind auch dann möglich, wenn die Touch-Geste deaktiviert ist.

orientationGestures
Gibt an, ob der Nutzer die Kamera durch Tippen oder Ziehen neu ausrichten kann. Legen Sie NO fest, damit keine Ausrichtungsänderungen an der Kamera vorgenommen werden.
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 sichtbar ist. Nutzer können das Panorama ändern, indem sie einmal auf einen Navigationslink oder doppelt auf die Ansicht tippen. Legen Sie NO fest, um Änderungen an der Navigation zu deaktivieren.

Mit der Methode setAllGesturesEnabled: kannst du 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 URL-Schema comgooglemaps starten. Dazu setzen Sie den Parameter mapmode auf streetview. 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, 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 beträgt 0, Osten 90, Süden 180 und Westen 270.
  • pitch hat den Standardwert 0 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) flach horizontal ist. (Beispiel: Ein Bild, das auf einem Hügel aufgenommen wurde, hat wahrscheinlich einen Standardneigungswinkel, der nicht horizontal ist.) Neigungswinkel werden mit positiven Werten nach oben gemessen (bis +90 Grad bei senkrechter Neigung nach oben und im rechten Winkel zur Standardneigung) und mit negativen Werten nach unten (bis -90 Grad senkrecht 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 die GMSPanoramaView erstellt haben und für diese entweder eine konfigurierte oder eine Standardkamera vorhanden ist, haben Sie mehrere Möglichkeiten, sie zu ändern. Wenn Sie die Kamerabewegung ändern, können Sie die resultierende Kamerabewegung animieren. Die Animation interpoliert zwischen den aktuellen und den neuen Kameraattributen.

Sie können das GMSPanoramaCamera-Objekt ändern und auf das Attribut camera der GMSPanoramaView festlegen. Dadurch wird die Kamera ohne Animation auf den neuen Blickwinkel gesetzt. Eine 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 die benutzerdefinierte 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 ein GMSPanoramaView-Objekt verwenden. Dazu legen Sie die entsprechenden Attribute fest:

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. Wenn die Entfernung zu groß wird, 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 allgemeinen Leitfaden zu Ereignissen und in der Liste der Methoden in der GMSPanoramaViewDelegate.