Street View

Wybierz platformę: Android iOS JavaScript

Street View w Mapach Google umożliwia zwiedzanie świata dzięki zdjęciom sferycznym z poziomu ulicy. Możesz odkrywać zabytki z całego świata, podziwiać cuda natury, planować podróże i pokazywać otoczenie swojej firmy.

Przegląd

Google Street View udostępnia panoramiczne widoki 360 stopni z wyznaczonych dróg w całym obszarze objętym usługą. Zasięg dostępny w pakiecie SDK jest taki sam jak w aplikacji Mapy Google na iOS lub https://maps.google.com/. Więcej informacji o Street View i obsługiwanych obszarach znajdziesz na interaktywnej mapie w artykule Informacje o Street View .

Pakiet Maps SDK na iOS udostępnia usługę Street View, która umożliwia uzyskiwanie i modyfikowanie zdjęć używanych w Street View w Mapach Google. Zdjęcia Street View są zwracane jako panoramy i wyświetlane w przeglądarce Street View – obiekcie typu GMSPanoramaView.

Panoramy Street View

Każda panorama Street View to obraz lub zestaw obrazów, który zapewnia pełny widok 360 stopni z jednej lokalizacji. Obrazy są zgodne z projekcją równoprostokątną (Plate Carrée), która obejmuje 360 stopni widoku poziomego (pełny obrót) i 180 stopni widoku pionowego (od góry do dołu). Wynikowa panorama 360 stopni definiuje projekcję na sferze, w której obraz jest owinięty wokół dwuwymiarowej powierzchni tej sfery.

Panoramy Street View można wyświetlać za pomocą obiektu GMSPanoramaView. Ten obiekt udostępnia przeglądarkę, która renderuje panoramę jako sferę z kamerą w jej środku. Możesz programowo sterować orientacją kamery oraz kilkoma właściwościami dostosowującymi przeglądarkę.

Dostęp do danych Street View

Panoramy Street View są identyfikowane przez jeden z 2 elementów metadanych:

panoramaID
Unikalny identyfikator panoramy Street View. This panoramaID może się z czasem zmieniać i nie nadaje się do długoterminowego ani zakodowanego na stałe odwołania. Element panoramaID najlepiej sprawdza się w przypadku programowego dostępu 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 do 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 za pomocą coordinate lub panoramaID. Wynikowy obiekt będzie zawierać oba elementy metadanych, a także 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 prośbę o panoramę w pobliżu współrzędnych.

  • Metoda moveNearCoordinate:radius jest podobna, ale umożliwia określenie promienia wyszukiwania w metrach wokół współrzędnych.

  • Metoda moveNearCoordinate:source umożliwia określenie źródła. Źródło jest przydatne, jeśli chcesz ograniczyć Street View do wyszukiwania tylko panoram zewnętrznych. Domyślnie panoramy lokalizacji są wewnątrz lub na zewnątrz. Pamiętaj, że w określonej lokalizacji mogą nie istnieć panoramy zewnętrzne.

  • Metoda moveNearCoordinate:radius:source umożliwia określenie zarówno promienia, jak i źródła.

Wyświetlanie zdjęć Street View

Dodawanie przeglądarki Street View

Podstawowe kroki dodawania przeglądarki:

  1. (Tylko raz) wykonaj czynności opisane w przewodniku 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 ten kontroler widoku stanie się widoczny, utwórz ją w metodzie loadView.
  3. Utwórz i zainicjuj klasę GMSPanoramaView za pomocą metody GMSPanoramaView initWithFrame:. Jeśli ma to być jedyny widok kontrolera widoku, jako ramkę mapy można użyć CGRectZero – rozmiar mapy zostanie automatycznie zmieniony.
  4. Ustaw obiekt GMSPanoramaView jako widok kontrolera widoku. Na przykład self.view = panoView;.
  5. Ustaw lokalizację zdjęcia Street View za pomocą metody takiej jak moveNearCoordinate:.

Poniższy przykład pokazuje, jak dodać przeglądarkę Street View do aplikacji.

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 przeglądarki

Możesz dostosować przeglądarkę, ograniczając dostępne gesty. Domyślnie włączone są przesuwanie, powiększanie i przechodzenie do sąsiednich panoram. 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. Gdy gest jest wyłączony, nadal można wprowadzać zmiany programowo.

orientationGestures
Określa, czy użytkownik będzie mógł zmienić orientację kamery, klikając lub przeciągając. Ustaw wartość NO, aby wyłączyć zmiany orientacji kamery.
zoomGestures
Określa, czy użytkownik będzie mógł powiększać obraz, uszczypując go. Ustaw wartość NO aby wyłączyć powiększenie.
navigationGestures
Określa, czy użytkownik będzie mógł zmienić widoczną panoramę. Użytkownicy mogą zmieniać panoramy, klikając linki nawigacyjne lub dwukrotnie klikając widok . Ustaw wartość NO, aby wyłączyć zmiany nawigacji.

Możesz włączyć lub wyłączyć wszystkie gesty naraz za pomocą metody setAllGesturesEnabled:.

Swift

panoView.setAllGesturesEnabled(false)
      

Objective-C

[panoView setAllGesturesEnabled:NO];
      

Uruchamianie Street View za pomocą schematu adresu URL

Zdjęcia Street View można wyświetlać w aplikacji Mapy Google na iOS. Możesz uruchomić aplikację Mapy Google na iOS w trybie Street View za pomocą schematu adresu URL comgooglemaps, ustawiając parametr mapmode na streetview. Poniżej znajdziesz przykład adresu URL, który uruchomi Street View. Więcej informacji znajdziesz w dokumentacji schematu adresu URL.

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

Lokalizacje Street View i punkt widzenia

Obiekt GMSPanoramaCamera umożliwia ustawienie punktu widzenia kamery Street View jako połączenia kierunku, nachylenia i powiększenia.

Poniższy fragment kodu ustawi kamerę na południe 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 Street View określa położenie ostrości kamery na obrazie, ale nie określa orientacji kamery dla tego obrazu. W tym celu obiekt GMSOrientation definiuje 2 właściwości:

  • heading określa kąt obrotu wokół środka kamery w stopniach względem północy geograficznej. Kierunki są mierzone zgodnie z ruchem 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) określa odchylenie kąta „w górę” lub „w dół” od początkowego domyślnego nachylenia kamery, które często (ale nie zawsze) jest poziome. (Na przykład obraz zrobiony na wzgórzu będzie prawdopodobnie miał domyślne nachylenie, które nie jest poziome). Kąty nachylenia są mierzone z wartościami dodatnimi skierowanymi w górę (do +90 stopni w pionie i prostopadle do domyślnego nachylenia) oraz wartościami ujemnymi skierowanymi w dół (do -90 stopni w pionie i prostopadle do domyślnego nachylenia).

Zoom

Street View obsługuje różne poziomy szczegółowości obrazu dzięki powiększeniu. Poziom powiększenia możesz ustawić programowo lub użytkownicy mogą go zmienić w przeglądarce, uszczypując obraz.

Przesuwanie kamery

Po utworzeniu GMSPanoramaView i skonfigurowaniu lub domyślnej kamery możesz ją zmienić na kilka sposobów. Gdy zmieniasz kamerę, możesz animować wynikowy ruch kamery. Animacja interpoluje między bieżącymi atrybutami kamery a nowymi atrybutami kamery.

Możesz zmodyfikować obiekt GMSPanoramaCamera i ustawić go we właściwości camera obiektu GMSPanoramaView. Spowoduje to natychmiastowe ustawienie kamery w nowym punkcie widzenia bez animacji. Możesz utworzyć GMSCameraPosition, aby skonfigurować dowolną kombinację orientacji i powiększenia.

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 to możliwe dzięki niestandardowej warstwie CALayer w GMSPanoramaView, GMSPanoramaLayer.

Znaczniki w Street View

Obiekt GMSPanoramaView może wyświetlać znaczniki mapy. Możesz użyć tego samego obiektu GMSMarker w obiekcie GMSMapView lub GMSPanoramaView, ustawiając jego 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 położeniem znacznika a lokalizacją GMSCameraView. Jeśli ta odległość będzie zbyt duża, znacznik stanie się zbyt mały, aby go wyświetlić, i zostanie ukryty.

Aby usunąć go z 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 występują w panoramie Street View, np. gdy użytkownik kliknie panoramę. Aby nasłuchiwać zdarzeń, musisz zaimplementować protokół GMSPanoramaViewDelegate. Zapoznaj się z ogólnym przewodnikiem po zdarzeniach i listą metod w GMSPanoramaViewDelegate.