Street View

Plattform auswählen: Android iOS JavaScript

Mit Google Maps Street View können Sie Orte auf der ganzen Welt in 360-Grad-Bildern auf Straßenebene erkunden. Du kannst beispielsweise Sehenswürdigkeiten und Naturwunder erkunden, eine Reise planen oder dein Unternehmen von außen 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 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 Was ist Street View?.

Das Maps SDK for iOS bietet einen Street View-Dienst zum Abrufen und Bearbeiten der Bilder an, die in Google Maps Street View verwendet werden. Street View-Bilder werden als Panorama zurückgegeben und vom 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 bilden. Die Bilder entsprechen der Equirektangularprojektion (Plate Carrée), die eine 360-Grad-Horizontalsicht (eine volle Drehung) und eine 180-Grad-Vertikalsicht (von ganz oben bis ganz unten) bietet. Das sich ergebende 360°-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. Mit diesem Objekt wird ein Betrachter bereitgestellt, der das Panorama als Kugel rendert, wobei sich eine Kamera in der Mitte befindet. Die Ausrichtung der Kamera sowie einige Eigenschaften, mit denen die Anzeige angepasst werden kann, lassen sich programmatisch steuern.

Street View-Daten aufrufen

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
Die genaue Position dieses Bildes als CLLocationCoordinate2D. Verwenden Sie coordinate, 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 ein GMSPanorama aus dem GMSPanoramaService mit coordinate oder panoramaID anfordern. Das resultierende Objekt enthält sowohl Metadaten als auch ein Array von Links zu Panoramen in der Nähe.

Standort des Panoramas festlegen

Der Standort des Street View-Panoramas kann basierend auf der Koordinate festgelegt werden.

  • Mit der Methode moveNearCoordinate wird ein Panorama in der Nähe der Koordinate angefordert.

  • Die Methode moveNearCoordinate:radius ist ähnlich, aber Sie können 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 nur auf Außenansichten beschränken möchten. Standardmäßig sind Panoramabilder von Orten entweder drinnen oder draußen. 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-Betrachter hinzufügen

Um ein Anzeigeprogramm hinzuzufügen, sind folgende grundlegende Schritte auszuführen:

  1. (einmal) Folgen Sie der Anleitung unter Erste Schritte, um das SDK abzurufen, einen Schlüssel zu erhalten und die erforderlichen Frameworks hinzuzufügen.
  2. Erstellen oder aktualisieren Sie eine ViewController. Wenn das Panorama angezeigt wird, wenn der Ansichts-Controller sichtbar wird, müssen Sie ihn mit der Methode loadView erstellen.
  3. Erstellen und instanziieren Sie eine GMSPanoramaView-Klasse mit der Methode GMSPanoramaView initWithFrame:. Wenn dies die einzige Ansicht des Ansichts-Controllers sein soll, kann CGRectZero als Frame der Karte verwendet werden. Die Größe der Karte wird automatisch geändert.
  4. Legen Sie das Objekt GMSPanoramaView als Ansicht des Controllers fest, z.B. self.view = panoView;.
  5. Legen Sie den Speicherort 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 Panoramabildern aktiviert. Einzelne Gesten werden über die Eigenschaften von GMSPanoramaView gesteuert. Mit diesen Eigenschaften werden nutzergesteuerte Gesten aktiviert oder deaktiviert. Programmatische Änderungen sind auch nach dem Deaktivieren der Geste möglich.

orientationGestures
Ob der Nutzer in der Lage sein wird, die Kamera durch Tippen oder Ziehen neu auszurichten. Legen Sie NO fest, um Änderungen der Ausrichtung an der Kamera zu deaktivieren.
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 sichtbar ist. Nutzer können durch einfaches Tippen auf Navigationslinks oder durch Doppeltippen auf die Ansicht Panoramen ändern. Legen Sie dazu 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 URL-Schema comgooglemaps 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-Position und -Perspektive

Mit GMSPanoramaCamera können Sie die Perspektive der Street View-Kamera als Kombination aus Ausrichtung, Neigung und Zoomstufe 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

Die Street View-Position definiert die Position des Kamerafokus für ein Bild, 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. Überschriften werden im Uhrzeigersinn gemessen: Der tatsächliche Norden ist 0, Osten 90, Süden 180 und Westen 270.
  • pitch ist der 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) horizontal ist. So ist beispielsweise bei Bildern, die auf einem Hügel aufgenommen wurden, die Standardneigung wahrscheinlich nicht horizontal. Die Neigungswinkel werden mit positiven, nach oben gerichteten Werten (bis zu 90 Grad bei senkrechter Neigung und orthogonal zur Standardneigung) und mit negativen Werten nach unten (bis -90 Grad bei senkrechter und orthogonaler Richtung) berechnet.

Zoom

Street View unterstützt verschiedene Bilddetailebenen mithilfe der Vergrößerung. Sie können die Zoomstufe programmatisch festlegen oder die Nutzer in der Anzeige durch Auseinander- und Zusammenziehen der Finger zoomen.

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. Beim Ändern der Kameraposition können Sie die resultierende Kamerabewegung animiert darstellen. Die Animation wird zwischen den aktuellen und den neuen Kameraattributen interpoliert.

Sie können das Objekt GMSPanoramaCamera ändern und auf dem Attribut camera der GMSPanoramaView festlegen. Dadurch wird die Kamera ohne Animation in die neue Perspektive aufgenommen. 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 animateToCamera:animationDuration:-Methode von GMSPanoramaView aufrufen. Zusätzlich können Sie die Kamera mit Core Animation steuern. Diese 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 auf ein GMSMapView- oder ein GMSPanoramaView-Objekt anwenden. 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 wird in Abhängigkeit von der Entfernung zwischen der Position der Markierung und dem Standort von GMSCameraView skaliert. Wenn die Entfernung zu groß wird, wird die Markierung zu klein zum Anzeigen und wird ausgeblendet.

Setzen Sie die Eigenschaft panoramaView auf nil, um sie aus der GMSPanoramaView zu entfernen.

Swift

marker.panoramaView = nil
      

Objective-C

marker.panoramaView = nil;
      

Veranstaltungen

Sie können Ereignisse beobachten, die im Street View-Panorama auftreten, z. B. wenn ein Nutzer auf das Panorama tippt. Wenn Sie Ereignisse beobachten möchten, müssen Sie das Protokoll GMSPanoramaViewDelegate implementieren. Der Gesamtleitfaden für Ereignisse und die Liste der Methoden in GMSPanoramaViewDelegate finden Sie hier.