Street View

Wybierz platformę: Android iOS JavaScript

Street View w Mapach Google umożliwia odkrywanie miejsc na całym świecie za pomocą zdjęć sferycznych wykonanych z poziomu ulicy. Możesz zwiedzać zabytki z całego świata, podziwiać cuda natury, nawigować podczas podróży lub pokazać z zewnątrz swoją firmę.

Omówienie

Google Street View udostępnia panoramiczne widoki 360° z wybranych dróg na całym obszarze objętym usługą. Zakres dostępnych za pomocą pakietu SDK usług 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 Maps SDK na iOS udostępnia usługę Street View do pobierania i edytowania zdjęć używanych w Street View w Mapach Google. 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 360° z jednego miejsca. Obrazy są zgodne z projekcją równokątną (Plate Carrée), która zawiera widok poziomy o 360 stopniach (pełny obrót) i widok pionowy o 180 stopniach (od góry do dołu). Uzyskana panorama obejmująca 360 stopni definiuje projekcję na sferze, a obraz jest na niej nałożony na dwuwymiarową powierzchnię.

Panorama Street View jest widoczna w obiekcie GMSPanoramaView. Ten obiekt udostępnia odtwarzacz, który wyrenderuje 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ść panoramaID może się zmienić z czasem i nie nadaje się do długoterminowego stosowania ani do zakodowania na stałe. W przypadku interfejsu panoramaID najlepiej jest zapewnić dostęp programowy 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 zdjęcie Street View.

Obiekty panoramaIDcoordinate 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

Lokalizację panoramy Street View można ustawić 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, które należy wykonać, aby dodać 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, korzystając z metody takiej jak moveNearCoordinate:.

W tym przykładzie do aplikacji dodawany jest podgląd 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 odtwarzacza

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 aparatu.
zoomGestures
Czy użytkownik będzie mógł powiększać obraz za pomocą gestów. Aby wyłączyć powiększanie, ustaw tę wartość na NO.
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 adresu URL

Obrazy z 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 ze schematu adresu 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

Opcja GMSPanoramaCamera umożliwia ustawienie punktu widzenia kamery Street View jako kombinacji kierunku, pochylenia i powiększenia.

Poniższe 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 ustawienie punktu ostrości kamery na zdjęciu, ale nie określa orientacji kamery na tym zdjęciu. W tym celu obiekt GMSOrientation definiuje 2 właściwości:

  • heading definiuje kąt obrotu wokół osi kamery w stopniach względem prawdziwego północy. Kierunki są mierzone zgodnie z kierunkiem ruchu wskazówek zegara: północ geograficzna to 0, wschód to 90, południe to 180, a zachód to 270.
  • pitch (domyślnie 0) definiuje 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. (na przykład zdjęcie zrobione na wzgórzu będzie prawdopodobnie zawierać domyślny kąt nachylenia, który nie będzie poziomy). Kąty pochylenia są mierzone z wartościami dodatnimi w górę (do +90 stopni w górę i prostopadle do domyślnego pochylenia) oraz ujemnymi w dół (do -90 stopni 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, rozciągając palce.

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];
      

Możesz animować przejście, wywołując metodę animateToCamera:animationDuration: obiektu GMSPanoramaView. Dodatkowo możesz sterować kamerą za pomocą Core Animation. Jest on dostępny w ramach niestandardowego elementu CALayer w witrynie GMSPanoramaView, 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 odległość będzie zbyt duża, znacznik stanie się za mały, aby można go było wyświetlić, i stanie się niewidoczny.

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

Swift

marker.panoramaView = nil
      

Objective-C

marker.panoramaView = nil;
      

Wydarzenia

Możesz nasłuchiwać zdarzeń, które występują 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 na stronie GMSPanoramaViewDelegate.