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ść
panoramaID
może się zmienić w czasie i nie nadaje się do długoterminowego stosowania ani do zakodowania na stałe. AtrybutupanoramaID
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żyjcoordinate
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:
- (Tylko raz) wykonaj czynności opisane w artykule Pierwsze kroki, aby pobrać pakiet SDK, uzyskać klucz i dodać wymagane frameworki.
- Utwórz lub zaktualizuj
ViewController
. Jeśli panorama ma być wyświetlana, gdy kontroler widoku stanie się widoczny, utwórz ją w ramach metodyloadView
. - Utwórz instancję klasy
GMSPanoramaView
za pomocą metodyGMSPanoramaView
initWithFrame:
. Jeśli ma to być jedyny widok kontrolera widoku, jako ramka mapy można użyćCGRectZero
– rozmiar mapy zostanie dostosowany automatycznie. - Ustaw obiekt
GMSPanoramaView
jako widok kontrolera widoku, np.self.view = panoView;
. - 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ślnie0
) 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 CALayer
w 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 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
.