Street View

Wybierz platformę: Android iOS JavaScript

Street View w Mapach Google pozwala odkrywać miejsca na całym świecie za pomocą zdjęć sferycznych z poziomu ulicy. Możesz zwiedzać zabytki, podziwiać cuda natury, nawigować podczas podróży lub pokazać zewnątrz swojej firmy.

Omówienie

Google Street View udostępnia panoramiczne widoki 360° z wyznaczonych dróg w całym obszarze objętym usługą. Zakres dostępności w pakiecie SDK jest taki sam jak w aplikacji Mapy Google na iOS lub https://maps.google.com/. Więcej informacji o Street View oraz interaktywną mapę z obsługiwanymi obszarami znajdziesz w artykule Informacje o Street View.

Pakiet SDK Map na iOS udostępnia usługę Street View do pobierania i edytowania zdjęć używanych w Google Street View. Obrazy Street View są zwracane jako panoramy i mogą być wyświetlane w przeglądarce Street View – obiekcie typu GMSPanoramaView.

panoramy Street View,

Każda panorama Street View to zdjęcie lub zestaw zdjęć, które zapewniają pełny widok sferyczny 360° z jednego miejsca. Obrazy muszą być zgodne z projekcją równokątną (Plate Carrée), która zawiera widok poziomy 360° (pełny obrót) i widok pionowy 180° (od góry do dołu). Uzyskana panorama 360° definiuje projekcję na sferze, a obraz jest na niej zwiniętych na dwuwymiarową powierzchnię.

Panorama Street View jest widoczna dzięki obiektowi GMSPanoramaView. Ten obiekt udostępnia odtwarzacz, który renderuje panoramę jako kulę z kamerą w środku. Możesz sterować orientacją kamery oraz kilkoma właściwościami, które dostosowują odtwarzacz.

Dostęp do danych Street View

Panorama Street View jest identyfikowana za pomocą jednego z tych metadanych:

panoramaID
Unikalny identyfikator panoramy Street View. Wartość panoramaIDmoże się zmienić w czasie i nie nadaje się do długoterminowego stosowania ani do zakodowania na stałe. Atrybutu panoramaID najlepiej używać do zapewniania dostępu programowego do różnych zdjęć Street View.
coordinate
Dokładna lokalizacja tego obrazu wyrażona jako CLLocationCoordinate2D. Użyj coordinate do trwałego przechowywania lokalizacji panoramy lub przekształcania działań użytkownika na mapie w obraz Street View.

Zarówno panoramaID, jak i coordinate są przechowywane jako właściwości obiektu GMSPanorama. Możesz poprosić o GMSPanorama z GMSPanoramaService, używając coordinate lub panoramaID. Wygenerowany obiekt będzie zawierać zarówno metadane, jak i tablicę linków do pobliskich panoram.

Ustawianie lokalizacji panoramy

Lokalizacja panoramy Street View może być ustawiona na podstawie współrzędnych.

  • Metoda moveNearCoordinate wysyła żądanie panoramy w pobliżu współrzędnych.

  • Metoda moveNearCoordinate:radius działa podobnie, ale pozwala określić promień wyszukiwania w metrach wokół współrzędnych.

  • Metoda moveNearCoordinate:source pozwala określić źródło. Źródło jest przydatne, jeśli chcesz ograniczyć wyszukiwanie w Street View tylko do panoram na zewnątrz. Domyślnie panoramy lokalizacji są albo wewnątrz, albo na zewnątrz. Pamiętaj, że w przypadku wybranej lokalizacji panoramy zewnętrzne mogą nie istnieć.

  • Metoda moveNearCoordinate:radius:source pozwala określić zarówno promień, jak i źródło.

Wyświetlanie zdjęć Street View

Dodawanie widoku Street View

Podstawowe czynności związane z dodaniem widza:

  1. (Tylko raz) wykonaj czynności opisane w artykule Pierwsze kroki, aby pobrać pakiet SDK, uzyskać klucz i dodać wymagane frameworki.
  2. Utwórz lub zaktualizuj ViewController. Jeśli panorama ma być wyświetlana, gdy kontroler widoku stanie się widoczny, utwórz ją w ramach metody loadView.
  3. Utwórz instancję klasy GMSPanoramaView za pomocą metody GMSPanoramaView initWithFrame:. Jeśli ma to być jedyny widok kontrolera widoku, jako ramka mapy można użyć CGRectZero – rozmiar mapy zostanie dostosowany automatycznie.
  4. Ustaw obiekt GMSPanoramaView jako widok kontrolera widoku, np. self.view = panoView;.
  5. Ustaw lokalizację zdjęcia Street View za pomocą metody takiej jak moveNearCoordinate:.

W tym przykładzie do aplikacji dodawany jest widok Street View.

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
      

Dostosowywanie podglądu

Możesz dostosować odtwarzacz, ograniczając dostępne gesty. Domyślnie przesuwanie, powiększanie i przechodzenie do sąsiednich panoram są włączone. Poszczególne gesty są kontrolowane za pomocą właściwości GMSPanoramaView. Te właściwości włączają lub wyłączają gesty sterowane przez użytkownika. Programowe zmiany są nadal możliwe, gdy gest jest wyłączony.

orientationGestures
Czy użytkownik będzie mógł zmienić orientację kamery przez jej dotknięcie lub przeciągnięcie. Ustaw na NO, aby wyłączyć zmiany orientacji kamery.
zoomGestures
Czy użytkownik będzie mógł powiększać obraz przez zbliżanie palców. Ustaw na NO, aby wyłączyć powiększenie.
navigationGestures
Czy użytkownik może zmienić widoczną panoramę. Użytkownicy mogą jednym kliknięciem otworzyć linki nawigacyjne lub dwukrotnie kliknąć widok, aby zmienić panoramy. Ustaw opcję na NO, aby wyłączyć zmiany nawigacji.

Możesz włączyć lub wyłączyć wszystkie gesty jednocześnie, korzystając z metody setAllGesturesEnabled:.

Swift

panoView.setAllGesturesEnabled(false)
      

Objective-C

[panoView setAllGesturesEnabled:NO];
      

Uruchamianie Street View za pomocą schematu URL

Zdjęcia Google Street View można wyświetlić w aplikacji Mapy Google na iOS. Aplikację Mapy Google na iOS możesz uruchomić w trybie Street View, korzystając z schematu URL comgooglemaps. Aby to zrobić, ustaw parametr mapmode na streetview. Poniżej znajdziesz przykład adresu URL, który uruchamia Street View. Więcej informacji znajdziesz w dokumentacji Schematu URL.

comgooglemaps://?center=46.414382,10.013988&mapmode=streetview

Lokalizacje i punkty widzenia w Street View

GMSPanoramaCamera umożliwia ustawienie punktu widzenia aparatu Street View jako kombinacji kierunku, pochylenia i przybliżenia.

Podane niżej zestawy fragmentów kodu ustawiają kamerę na kierunek południowy i nieco w dół.

Swift

panoView.camera = GMSPanoramaCamera(heading: 180, pitch: -10, zoom: 1)
      

Objective-C

panoView.camera = [GMSPanoramaCamera cameraWithHeading:180
                                                 pitch:-10
                                                  zoom:1];
      

Orientacja

Lokalizacja w Street View określa położenie punktu ostrości aparatu na zdjęciu, ale nie określa orientacji aparatu na tym zdjęciu. W tym celu obiekt GMSOrientation definiuje 2 właściwości:

  • heading określa kąt obrotu wokół punktu styczności kamery w stopniach względem prawdziwego północy. Kierunki są mierzone zgodnie z ruchem wskazówek zegara: północ geograficzna to 0, wschód to 90, południe to 180, zachód to 270.
  • pitch (domyślnie 0) określa odchylenie kąta „w górę” lub „w dół” od początkowego domyślnego pochylenia kamery, które jest często (ale nie zawsze) poziome. (np. zdjęcie zrobione na wzgórzu będzie prawdopodobnie zawierać niepoziomą domyślną płaszczyznę). Kąty pochylenia są mierzone z wartościami dodatnimi w górę (do +90° w górę i prostopadle do domyślnego pochylenia) oraz ujemnymi w dół (do -90° w dół i prostopadle do domyślnego pochylenia).

Zoom

Street View obsługuje różne poziomy szczegółowości obrazu dzięki funkcji powiększenia. Poziom powiększenia możesz ustawić programowo, a użytkownicy mogą go zmienić w odtwarzaczu, używając gestów.

Przesuwanie kamery

Po utworzeniu GMSPanoramaView i skonfigurowaniu lub domyślnej kamery możesz ją zmienić na kilka sposobów. Po zmianie kamery możesz animować wynikający z tego ruch kamery. Animacja interpoluje między bieżącymi atrybutami kamery a nowymi atrybutami kamery.

Możesz zmodyfikować obiekt GMSPanoramaCamera i ustawić go w właściwości camera obiektu GMSPanoramaView. Spowoduje to przełączenie kamery na nowy punkt widzenia bez animacji. Aby skonfigurować dowolną kombinację orientacji i powiększenia, możesz utworzyć GMSCameraPosition.

Swift

panoView.camera = GMSPanoramaCamera(heading: 180, pitch: -10, zoom: 1)
      

Objective-C

panoView.camera = [GMSPanoramaCamera cameraWithHeading:180
                                                 pitch:-10
                                                  zoom:1];
      

Aby animować przejście, wywołaj metodę animateToCamera:animationDuration: obiektu GMSPanoramaView. Dodatkowo możesz sterować kamerą za pomocą Core Animation. Jest on dostępny w ramach niestandardowego CALayerGMSPanoramaView, GMSPanoramaLayer.

znaczniki w Street View,

Obiekt GMSPanoramaView może wyświetlać znaczniki mapy. Tego samego obiektu GMSMarker możesz używać w obiekcie GMSMapView lub GMSPanoramaView, ustawiając odpowiednie właściwości:

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;
      

Rozmiar znaczników będzie się zmieniać w zależności od odległości między pozycją znacznika a lokalizacją GMSCameraView. Jeśli ta odległość będzie zbyt duża, znacznik będzie zbyt mały, aby go wyświetlić, i stanie się niewidoczny.

Aby usunąć krok z grupy GMSPanoramaView, ustaw właściwość panoramaView na nil.

Swift

marker.panoramaView = nil
      

Objective-C

marker.panoramaView = nil;
      

Wydarzenia

Możesz nasłuchiwać zdarzeń, które mają miejsce w panoramie Street View, np. gdy użytkownik klika panoramę. Aby nasłuchiwać zdarzeń, musisz zaimplementować protokół GMSPanoramaViewDelegate. Zapoznaj się z ogólnym przewodnikiem po zdarzeniach i listą metod GMSPanoramaViewDelegate.