Dzięki Street View w Mapach Google poznasz miejsca z całego świata dzięki zdjęciom z poziomu ulicy w technologii 360 stopni. Możesz poznawać punkty orientacyjne z całego świata, podziwiać naturalne cuda, a także korzystać z nawigacji.
Przegląd
Google Street View zapewnia panoramiczne widoki 360° z wyznaczonych dróg na całym obszarze objętym zasięgiem. Zasięg dostępny w pakiecie SDK jest taki sam jak w przypadku aplikacji Mapy Google na iOS lub https://maps.google.com/
. Więcej informacji o Street View i listę obsługiwanych obszarów na interaktywnej mapie znajdziesz w artykule Street View – informacje.
Maps SDK na iOS udostępnia usługę Street View, która umożliwia uzyskiwanie i manipulowanie zdjęciami używanymi w Street View w Mapach Google.
Zdjęcia Street View są zwracane jako panoramy i wyświetlane w przeglądarce Street View, czyli obiekcie typu GMSPanoramaView
.
Panoramy Street View
Każda panorama Street View jest obrazem albo zestawem zdjęć, które zapewniają pełny widok 360 stopni z jednego miejsca. Obrazy są tworzone zgodnie z odwzorowaniem walcowym równoodległościowym (Plate Carrée), które obejmuje widok w poziomie obejmujący 360 stopni (pełne zawinięcie) i 180 stopni w pionie (od prostej do prostego). Powstała w ten sposób panorama 360 stopni to rzut oka na kulę z obrazem zawiniętym w jej dwuwymiarową powierzchnię.
Panoramy Street View można przeglądać przy użyciu obiektu GMSPanoramaView
. W tym obiekcie możesz wyświetlić panoramę jako sferę z aparatem umieszczonym w jej środku. Możesz automatycznie kontrolować orientację kamery
i kilka właściwości, by dostosować przeglądarkę.
Dostęp do danych Street View
Panoramy Street View są rozpoznawane na podstawie dwóch metadanych:
panoramaID
- Unikalny identyfikator panoramy Street View. Ten obiekt
panoramaID
może się z czasem zmienić, dlatego nie jest odpowiedni jako długoterminowy lub zakodowany na stałe plik referencyjny. UsługapanoramaID
najlepiej sprawdza się do zautomatyzowanego dostępu do różnych zdjęć Street View. coordinate
- Dokładna lokalizacja obrazu wyrażona w postaci
CLLocationCoordinate2D
. Używaj obiektucoordinate
, aby trwale zapisywać lokalizację panoramy lub przekształcać działania użytkownika na mapie na zdjęcie Street View.
Zarówno panoramaID
, jak i coordinate
są przechowywane jako właściwości obiektu GMSPanorama
. Możesz poprosić o GMSPanorama
w GMSPanoramaService
przy użyciu coordinate
lub panoramaID
. Otrzymany obiekt będzie zawierał zarówno fragmenty metadanych, 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
jest podobna, ale pozwala określić promień wyszukiwania w metrach wokół współrzędnych.Metoda
moveNearCoordinate:source
umożliwia podanie źródła. Źródło jest przydatne, gdy chcesz ograniczyć widok Street View tylko do panoram znajdujących się na zewnątrz. Domyślnie panoramiczne lokalizacje są widoczne wewnątrz lub na zewnątrz. We wskazanej lokalizacji mogą nie być dostępne panoramy na zewnątrz.Metoda
moveNearCoordinate:radius:source
umożliwia określenie zarówno promienia, jak i źródła.
Wyświetlanie zdjęć Street View
Dodawanie gogli Street View
Podstawowe czynności, które należy wykonać, aby dodać przeglądającego:
- (Raz) Wykonaj czynności opisane w artykule Pierwsze kroki, aby pobrać pakiet SDK, uzyskać klucz i dodać wymagane platformy.
- Utwórz lub zaktualizuj
ViewController
. Jeśli panorama będzie wyświetlana, gdy ten kontroler widoku danych stanie się widoczny, utwórz ją w metodzieloadView
. - Utwórz i utwórz instancję klasy
GMSPanoramaView
za pomocą metodyGMSPanoramaView
initWithFrame:
. Jeśli ma być on używany jako jedyny widok kontrolera widoku, jako ramka mapy można użyć elementuCGRectZero
, a rozmiar mapy zostanie automatycznie zmieniony. - Ustaw obiekt
GMSPanoramaView
jako widok kontrolera widoku, np.self.view = panoView;
. - Ustaw lokalizację zdjęcia Street View, np.
moveNearCoordinate:
.
Poniższy przykład pokazuje dodanie gogli 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 przesuwanie, powiększanie i podróże do sąsiednich panoram są domyślnie włączone.
Poszczególnymi gestami można sterować za pomocą właściwości GMSPanoramaView
.
Te właściwości pozwalają włączyć lub wyłączyć gesty kontrolowane przez użytkownika. Gdy gesty są wyłączone, można wprowadzać automatyczne zmiany.
orientationGestures
- Określa, czy użytkownik może zmienić orientację kamery, klikając ją lub przeciągając. Ustaw wartość
NO
, aby wyłączyć zmiany orientacji kamery. zoomGestures
- Określa, czy użytkownik może ściągnąć palce, aby powiększyć obraz. Aby wyłączyć powiększenie, ustaw wartość
NO
. navigationGestures
- Czy użytkownik może zmienić widoczną panoramę. Użytkownicy mogą dotykać linków nawigacyjnych jednym kliknięciem lub kliknąć dwukrotnie widok, aby zmienić panoramy Ustaw na
NO
i wyłączyć zmiany w nawigacji.
Możesz włączyć lub wyłączyć wszystkie gesty jednocześnie, używając metody setAllGesturesEnabled:
.
Swift
panoView.setAllGesturesEnabled(false)
Objective-C
[panoView setAllGesturesEnabled:NO];
Uruchamianie funkcji Street View z użyciem schematu URL
Zdjęcia Google Street View są dostępne w aplikacji Mapy Google na iOS. Możesz uruchomić aplikację Mapy Google na iOS w trybie widoku ulicy 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 adresów URL.
comgooglemaps://?center=46.414382,10.013988&mapmode=streetview
Lokalizacje i punkty widzenia w Street View
GMSPanoramaCamera
umożliwia ustawienie punktu widzenia kamery Street View na połączenie kierunku, nachylenia i powiększenia.
Poniższe zestawy fragmentów kodu spowodują ustawienie kamery 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 w Street View określa, gdzie znajduje się ostrość aparatu, ale nie określa orientacji aparatu.
W tym celu obiekt GMSOrientation
definiuje 2 właściwości:
heading
określa kąt obrotu wokół lokalizacji kamery w stopniach względem rzeczywistej północy. Nagłówki są mierzone w prawo: rzeczywista północ 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ół” względem początkowego domyślnego nachylenia kamery, które często (ale nie zawsze) jest płaskie w poziomie. (Na przykład zdjęcie wykonane na wzgórzu prawdopodobnie będzie mieć domyślne odchylenie nie poziome). Kąty tonu są mierzone przy użyciu wartości dodatnich (w górę +90 stopni prosto w górę i ortogonalnie w górę do domyślnego kąta), a ujemnych w dół (do -90 stopni w dół i ortogonalnie do domyślnego tonacji).
Zoom
Street View umożliwia uzyskanie różnych poziomów szczegółowości obrazu dzięki powiększeniu. Poziom powiększenia można ustawić automatycznie lub użytkownicy mogą zmienić go w przeglądarce przez ściągnięcie palców.
Poruszanie aparatem
Gdy utworzysz GMSPanoramaView
i masz już skonfigurowaną lub domyślną kamerę, możesz ją zmienić na kilka sposobów. Po zmianie kamery możesz animować jej ruch. 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
GMSPanoramaView
. Dzięki temu kamera zostanie ustawiona do nowego punktu widzenia
bez animacji. Można 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:
GMSPanoramaView
.
Możesz też sterować kamerą za pomocą Core Animation. Ta funkcja jest dostępna w niestandardowym CALayer
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 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ć zależnie od odległości między pozycją znacznika a lokalizacją elementu GMSCameraView
. Jeśli odległość będzie zbyt duża, znacznik stanie się zbyt mały i nie będzie widoczny.
Ustaw właściwość panoramaView
na nil
, aby usunąć ją z narzędzia GMSPanoramaView
.
Swift
marker.panoramaView = nil
Objective-C
marker.panoramaView = nil;
Wydarzenia
Możesz nasłuchiwać zdarzeń występujących na panoramie Street View, np. kliknięcia jej przez użytkownika. Aby nasłuchiwać zdarzeń, musisz wdrożyć protokół GMSPanoramaViewDelegate
. Zapoznaj się z ogólnym przewodnikiem po zdarzeniach i listą metod w GMSPanoramaViewDelegate
.