
Street View w Mapach Google umożliwia poznawanie miejsc na całym świecie dzięki zdjęciom z poziomu ulicy i widokom sferycznym. 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 sferyczne z wyznaczonych dróg w obsługiwanym obszarze. 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 pobieranie 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óre zapewniają pełny widok sferyczny z jednego miejsca. Obrazy są zgodne z projekcją równoką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 określa projekcję na sferze, na której dwuwymiarowa powierzchnia jest owinięta obrazem.
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 środku. Możesz programowo kontrolować orientację kamery oraz kilka właściwości dostosowujących przeglądarkę.
Dostęp do danych Street View
Panoramy Street View są identyfikowane przez 1 z 2 metadanych:
panoramaID- Unikalny identyfikator panoramy Street View. Ten
panoramaIDmoże się zmieniać, dlatego nie nadaje się do długoterminowego ani zakodowanego na stałe, odwołania. ElementpanoramaIDnajlepiej sprawdza się w przypadku programowego dostępu do różnych zdjęć Street View. coordinate- Dokładna lokalizacja tego obrazu wyrażona jako
CLLocationCoordinate2D. Użyjcoordinatedo 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 używając coordinate lub panoramaID. Wynikowy obiekt będzie zawierać oba metadane oraz tablicę linków do panoram w pobliżu.
Ustawianie lokalizacji panoramy
Lokalizację panoramy Street View można ustawić na podstawie współrzędnych.
Metoda
moveNearCoordinatewysyła prośbę o panoramę w pobliżu współrzędnych.Metoda
moveNearCoordinate:radiusjest podobna, ale umożliwia określenie promienia wyszukiwania w metrach wokół współrzędnych.Metoda
moveNearCoordinate:sourceumoż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ętrzne lub zewnętrzne. Pamiętaj, że w określonej lokalizacji mogą nie istnieć panoramy zewnętrzne.Metoda
moveNearCoordinate:radius:sourceumoż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:
- (Tylko raz) wykonaj czynności opisane w przewodniku 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 ten kontroler widoku stanie się widoczny, utwórz ją w metodzieloadView. - Utwórz i zainicjuj klasę
GMSPanoramaViewza pomocą metodyGMSPanoramaViewinitWithFrame:. Jeśli ma to być jedyny widok kontrolera widoku, jako ramkę mapy można użyćCGRectZero– rozmiar mapy zostanie automatycznie zmieniony. - Ustaw obiekt
GMSPanoramaViewjako widok kontrolera widoku. Na przykładself.view = panoView;. - 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 kontrolowane 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, ściągając palce. Ustaw wartość
NOaby wyłączyć powiększenie. navigationGestures- Określa, czy użytkownik będzie mógł zmienić widoczną panoramę. Użytkownicy
mogą zmienić panoramę, klikając linki nawigacyjne lub klikając dwukrotnie widok, aby zmienić
panoramę. 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 URI 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 URI 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 URI 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 kombinacji 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 na tym obrazie.
W tym celu obiekt GMSOrientation definiuje 2 właściwości:
headingokreś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ślnie0) 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 płaskie i poziome. (Na przykład obraz zrobiony na wzgórzu prawdopodobnie będzie 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 górę i prostopadle do domyślnego nachylenia) oraz wartościami ujemnymi skierowanymi w dół (do -90 stopni w dół 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, ściągając palce.
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 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.
Możesz też 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 pozycją 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ąć znacznik 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ą na 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.