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 interfejsupanoramaID
najlepiej jest zapewnić dostęp programowy 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 zdjęcie Street View.
Obiekty panoramaID
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
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:
- (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, 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ślnie0
) 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
.