Dzięki Street View w Mapach Google możesz odkrywać miejsca na całym świecie, korzystając ze zdjęć sferycznych na poziomie ulicy. Możesz zwiedzać światowe punkty orientacyjne, oglądać cuda natury, podróżować lub prezentować swoją firmę z zewnątrz.
Omówienie
Google Street View rozciąga się z wyznaczonych ulic w panoramicznym widoku 360°. Pokrycie dostępne w pakiecie SDK jest takie samo jak w aplikacji Mapy Google na iOS lub https://maps.google.com/
. Aby dowiedzieć się więcej o widoku Street View i zobaczyć obsługiwane obszary na interaktywnej mapie, zapoznaj się z sekcją Informacje o Street View.
Pakiet SDK Map na iOS oferuje usługę Street View do pobierania zdjęć i manipulowania nimi w Street View.
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 zbiór zdjęć, które zapewniają pełny widok 360 stopni z jednego miejsca. Obrazy są zgodne z odwzorowaniem walcowym równoodległościowym (Plate Carrée), który obejmuje 360 stopni w poziomie (pełny, obrócony) oraz 180 stopni w pionie (od prawej do najniższej). Otrzymana panorama 360° definiuje odwzorowanie kuli złożoną z obrazu opakowanego do dwuwymiarowej powierzchni tej kuli.
Panoramy w Street View można zobaczyć w obiekcie GMSPanoramaView
. Ten obiekt dostarcza widza, który renderuje panoramę jako sferę, a w jej środku widać kamerę. Możesz automatycznie zmieniać orientację kamery i kilka właściwości dostosowujących przeglądarkę.
Dostęp do danych Street View
Panoramy w Street View są identyfikowane przez jeden z dwóch rodzajów metadanych:
panoramaID
- Unikalny identyfikator panoramy Street View. Ten atrybut
panoramaID
może się z czasem zmienić i nie może być długoterminowy ani zakodowany na stałe. ParametrpanoramaID
najlepiej nadaje się do automatycznego udostępniania różnych zdjęć Street View. coordinate
- Dokładna lokalizacja tego obrazu wyrażona jako
CLLocationCoordinate2D
. Używajcoordinate
do trwałego przechowywania lokalizacji panoramy lub do przekształcania działań użytkowników na mapie w zdjęcie Street View.
Zarówno panoramaID
, jak i coordinate
są przechowywane jako właściwości obiektu GMSPanorama
. Możesz zażądać GMSPanorama
od GMSPanoramaService
za pomocą coordinate
lub panoramaID
. Powstały w ten sposób obiekt będzie zawierał zarówno metadane, jak i szereg linków do pobliskich widoków panoramicznych.
Ustawianie lokalizacji panoramy
Lokalizacja panoramy Street View można ustawić na podstawie współrzędnych.
Metoda
moveNearCoordinate
żąda wykonania panoramy w pobliżu współrzędnej.Metoda
moveNearCoordinate:radius
jest podobna, ale umożliwia określenie promienia wyszukiwania w metrach wokół współrzędnej.Metoda
moveNearCoordinate:source
pozwala określić źródło. Źródło jest przydatne, jeśli chcesz ograniczyć widok Street View tylko do zdjęć pochodzących z zewnątrz. Domyślnie zdjęcia lokalizacji znajdują się wewnątrz lub na zewnątrz. Należy pamiętać, że w przypadku podanej lokalizacji panoramy zewnętrzne mogą nie być dostępne.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 przy dodawaniu widza:
- (Raz) Wykonaj czynności opisane w artykule Pierwsze kroki, by pobrać pakiet SDK, uzyskaj klucz i dodaj wymagane platformy.
- Utwórz lub zaktualizuj element
ViewController
. Jeśli panorama pojawi się, gdy kontroler widoku stanie się widoczny, pamiętaj, aby utworzyć go w metodzieloadView
. - Utwórz i utwórz instancję klasy
GMSPanoramaView
przy użyciu metodyGMSPanoramaView
initWithFrame:
. Jeśli ma być używany jako jedyny widok kontrolera, jako ramkę mapy można użyćCGRectZero
– rozmiar mapy zmieni się automatycznie. - Ustaw obiekt
GMSPanoramaView
jako widok kontrolera danych, np.self.view = panoView;
. - Ustaw lokalizację zdjęcia w Street View, korzystając z metody takiej jak
moveNearCoordinate:
.
Poniższy przykład dodaje 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 w przeglądarce
Możesz dostosować przeglądarkę przez ograniczenie dostępnych gestów. Domyślnie włączone są przesuwanie, powiększanie i przybliżanie do sąsiednich.
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. Po wyłączeniu gestu nadal można wprowadzać zmiany automatyczne.
orientationGestures
- Określ, czy użytkownik będzie mógł zmienić orientację kamery przez kliknięcie lub przeciągnięcie. Aby wyłączyć zmianę orientacji kamery, ustaw tę wartość na
NO
. zoomGestures
- Użytkownik może powiększyć widok, aby go powiększyć. Aby wyłączyć powiększenie, ustaw
NO
. navigationGestures
- czy użytkownik może zmienić widoczną panoramę. Użytkownicy
mogą kliknąć jeden link na linkach nawigacyjnych lub kliknąć dwukrotnie widok, żeby zmienić panoramę.
Aby wyłączyć zmiany, kliknij
NO
.
Możesz włączyć lub wyłączyć wszystkie gesty za pomocą metody setAllGesturesEnabled:
.
Swift
panoView.setAllGesturesEnabled(false)
Objective-C
[panoView setAllGesturesEnabled:NO];
Uruchamianie Street View z użyciem schematu adresów URL
Zdjęcia Google Street View można wyświetlać w aplikacji Mapy Google na iOS. Możesz uruchomić aplikację Mapy Google na iOS w trybie Street View ze schematem comgooglemaps
adresu URL, ustawiając parametr mapmode
na streetview
. Poniżej znajduje się 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 Street View
GMSPanoramaCamera
umożliwia ustawienie punktu widzenia kamery w Street View jako połączenie nagłówka, kąta oraz powiększenia.
Poniższe zestawy fragmentów kodu pozwolą ustawić aparat na południe i lekko na 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 ostrości kamery w przypadku danego zdjęcia, ale nie określa orientacji aparatu.
W tym celu obiekt GMSOrientation
definiuje 2 właściwości:
heading
określa kąt obrotu kamery w 3 stopniach względem względem prawdziwej północy. Nagłówki są mierzone w prawo: północ to 0, wschód to 90, południe to 180, a zachód to 270.pitch
(domyślna0
) określa wariancję kąta w górę lub w dół względem początkowego nachylenia domyślnego, który często (ale nie zawsze) jest płaski. (Na przykład zdjęcie zrobione na wzgórzu prawdopodobnie pokazuje domyślny kąt, który nie jest poziomy). Kąt nachylenia można zmierzyć przy zastosowaniu dodatnich wartości (do +90 stopni w górę i w poziomie pionowym) oraz wartości ujemnych (do -90 stopni od dołu do góry i do wysokości domyślnej).
Szersza
Street View obsługuje różne poziomy szczegółów zdjęcia dzięki powiększeniu. Możesz ustawić poziom powiększenia automatycznie, a użytkownicy mogą zmienić poziom w przeglądarce, ściągając i powiększając widok.
Przenoszenie kamery
Gdy utworzysz GMSPanoramaView
i będziesz mieć skonfigurowaną lub domyślną kamerę, możesz ją zmienić na jeden z kilku sposobów. Po zmianie kamery możesz włączyć animację ruchu kamery. Animacja łączy się między bieżącymi atrybutami kamery i nowymi atrybutami.
Możesz zmienić obiekt GMSPanoramaCamera
i ustawić go na właściwości camera
w GMSPanoramaView
. Spowoduje to przyciąganie aparatu do nowego punktu widzenia bez animacji. GMSCameraPosition
można utworzyć, 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:
metody GMSPanoramaView
.
Możesz też sterować kamerą za pomocą animacji Core. Ta opcja jest dostępna w niestandardowym narzędziu CALayer
w dniu GMSPanoramaView
, GMSPanoramaLayer
.
Znaczniki w Street View
Obiekt GMSPanoramaView
może wyświetlać znaczniki mapy. Aby użyć tego samego obiektu GMSMarker
w obiekcie GMSMapView
lub GMSPanoramaView
, ustaw jego 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;
Znaczniki będą skalowane na podstawie rozmiaru odległości między położeniem znacznika a miejscem GMSCameraView
. Jeśli odległość będzie zbyt duża, znacznik stanie się za mały i nie będzie go widać.
Ustaw właściwość panoramaView
na nil
, aby usunąć ją z: GMSPanoramaView
.
Swift
marker.panoramaView = nil
Objective-C
marker.panoramaView = nil;
Zdarzenia
Możesz odsłuchiwać zdarzenia, które występują w ramach widoku Street View, np. kliknięcie przez użytkownika panoramy. Aby nasłuchiwać zdarzeń, musisz wdrożyć protokół GMSPanoramaViewDelegate
. Zobacz ogólny przewodnik po zdarzeniach oraz listę metod na GMSPanoramaViewDelegate
.