Dzięki Street View w Mapach Google poznasz miejsca z całego świata na zdjęciach panoramicznych 360 stopni wykonanych z poziomu ulicy. Możesz zwiedzać charakterystyczne miejsca z całego świata, podziwiać cuda natury, sprawnie poruszać się po okolicy, a także pokazać wnętrze firmy.
Opis
Google Street View oferuje panoramiczne widoki 360-stopni z wyznaczonymi drogami
na całym swoim obszarze. Zasięg w pakiecie SDK jest taki sam jak w przypadku aplikacji Mapy Google na iOS lub https://maps.google.com/
. Aby dowiedzieć się więcej o Street View i zobaczyć obsługiwane obszary na interaktywnej mapie, przeczytaj artykuł Street View – informacje.
Pakiet Maps SDK na iOS obejmuje usługę Street View, która umożliwia pobieranie zdjęć używanych w Street View w Mapach Google i ich manipulowanie.
Zdjęcia Street View są zwracane jako panoramy i oglądane w przeglądarce Street View, czyli w obiekcie typu GMSPanoramaView
.
Panoramy Street View
Każda panorama Street View to zdjęcie lub zbiór zdjęć obejmujących pełny widok 360 stopni z jednego miejsca. Obrazy są zgodne z odwzorowaniem walcowym równoodległościowym (Plate Carrée), które obejmuje 360 stopni widoku w poziomie (pełne zawinięcie) i 180 stopni widoku pionowego (od pozycji pionowej do poziomej). Powstała panorama 360 stopni definiuje rzutowanie na sferę, w której obraz jest nawinięty na dwuwymiarową powierzchnię tej kuli.
Panoramy Street View można wyświetlać przy użyciu obiektu GMSPanoramaView
. Ten obiekt wyświetla się w przeglądarce, która renderuje panoramę jako sferę, a na środku znajduje się aparat. Możesz programowo sterować orientacją kamery, a także dostosowywać kilka właściwości.
Dostęp do danych Street View
Panoramy Street View są identyfikowane przez jeden z dwóch rodzajów metadanych:
panoramaID
- Unikalny identyfikator panoramy Street View. Ten plik
panoramaID
może się z czasem zmienić i nie jest odpowiedni jako długoterminowy lub zakodowany na stałe plik referencyjny.panoramaID
najlepiej nadaje się do automatycznego dostępu do różnych zdjęć Street View. coordinate
- Dokładna lokalizacja tego obrazu wyrażona w postaci
CLLocationCoordinate2D
.coordinate
umożliwia trwałe zapisywanie lokalizacji panoramy lub tłumaczenie działań użytkowników na mapie na zdjęcia Street View.
panoramaID
i coordinate
są przechowywane jako właściwości obiektu GMSPanorama
. Możesz zażądać GMSPanorama
z GMSPanoramaService
za pomocą coordinate
lub panoramaID
. Otrzymany obiekt będzie zawierał zarówno fragmenty metadanych, jak i tablicę linków do pobliskich panoram.
Ustawianie lokalizacji panoramy
Lokalizacja panoramy Street View można ustawić na podstawie współrzędnych.
Metoda
moveNearCoordinate
żąda panoramy w pobliżu współrzędnych.Metoda
moveNearCoordinate:radius
jest podobna, ale umożliwia określenie promienia wyszukiwania w metrach wokół współrzędnych.Metoda
moveNearCoordinate:source
pozwala określić źródło. Źródło przydaje się wtedy, gdy chcesz ograniczyć widok Street View tak, by szukał tylko panoramicznych zdjęć znajdujących się na zewnątrz. Domyślnie panoramy lokalizacji są wewnątrz lub na zewnątrz. Pamiętaj, że w przypadku określonej lokalizacji panoramy zewnętrzne mogą nie być dostępne.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
Oto podstawowe czynności, które należy wykonać, aby dodać użytkownika:
- (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 pojawi się, gdy ten kontroler widoku stanie się widoczny, utwórz ją w metodzieloadView
. - Utwórz i utwórz instancję klasy
GMSPanoramaView
przy użyciu metodyGMSPanoramaView
initWithFrame:
. Jeśli ten widok ma być używany jako jedyny widok kontrolera widoku, jako ramka mapy można użyć elementuCGRectZero
– rozmiar mapy zostanie automatycznie zmieniony. - Ustaw obiekt
GMSPanoramaView
jako widok kontrolera widoku, np.self.view = panoView;
. - Ustaw lokalizację zdjęcia Street View, korzystając z jednej z tych metod:
moveNearCoordinate:
.
Poniższy przykład pokazuje dodanie do aplikacji gogli 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 przeglądarki
Możesz dostosować przeglądarkę, określając, które gesty mają być dostępne. Domyślnie włączone jest przesuwanie, powiększanie i podróżowanie do sąsiednich panoram.
Poszczególne gesty steruje się za pomocą właściwości GMSPanoramaView
.
Te właściwości włączają i wyłączają gesty kontrolowane przez użytkownika. Gdy dany gest jest wyłączony, nadal można wprowadzać zmiany zautomatyzowane.
orientationGestures
- Czy użytkownik będzie mógł zmienić orientację kamery przez kliknięcie lub przeciągnięcie. Aby wyłączyć możliwość zmiany orientacji kamery, ustaw
NO
. zoomGestures
- Czy użytkownik może ściągnąć palce, aby powiększyć. Aby wyłączyć powiększenie, ustaw
NO
. navigationGestures
- Czy użytkownik będzie mógł zmienić widoczną panoramę. Użytkownicy mogą kliknąć linki nawigacyjne jednym kliknięciem lub kliknąć dwukrotnie widok, aby zmienić panoramy. Ustaw
NO
i wyłącz możliwość wprowadzania zmian w nawigacji.
Za pomocą metody setAllGesturesEnabled:
możesz włączać i wyłączać wszystkie gesty jednocześnie.
Swift
panoView.setAllGesturesEnabled(false)
Objective-C
[panoView setAllGesturesEnabled:NO];
Uruchamianie widoku Street View za pomocą schematu URL
Zdjęcia Google Street View można oglądać w aplikacji Mapy Google na iOS. Możesz uruchomić aplikację Mapy Google na iOS w trybie Street View za pomocą schematu URL comgooglemaps
, ustawiając parametr mapmode
na streetview
. Poniżej znajdziesz przykład URL-a,
który pozwoli uruchomić Street View. Więcej informacji znajdziesz w dokumentacji schematu adresów URL.
comgooglemaps://?center=46.414382,10.013988&mapmode=streetview
Lokalizacje Street View i punkt widzenia
GMSPanoramaCamera
umożliwia ustawienie punktu widzenia kamery Street View za pomocą kombinacji kierunku, kąta nachylenia i powiększenia.
Poniższe fragmenty kodu będą kierowały kamerę lekko w dół i na południe.
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 miejsce, w którym będzie ustawiona ostrość, ale nie określa orientacji aparatu podczas tego zdjęcia.
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. Tempo jest mierzone w prawo: północ to 0, wschód to 90, południe to 180, zachód – 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 w poziomie. (Na przykład zdjęcie zrobione na wzgórzu prawdopodobnie będzie miało domyślny nachylenie, które nie jest poziome). Kąty nachylenia są mierzone za pomocą wartości dodatnich patrzących w górę (do +90 stopni pionowo w górę i ortogonalnych względem domyślnego nachylenia) oraz wartości ujemnych, patrzących w dół (do -90 stopni w dół i w prawo do domyślnego nachylenia).
Zoom
Street View obsługuje różne poziomy szczegółowości zdjęć dzięki wykorzystaniu powiększenia. Powiększenie można ustawić automatycznie lub użytkownicy mogą zmienić poziom powiększenia w przeglądarce, rozsuwając palce, aby powiększyć obraz.
Poruszanie aparatem
Gdy utworzysz GMSPanoramaView
, który ma skonfigurowaną lub domyślną kamerę, możesz to zmienić na kilka sposobów. Zmieniając kamerę, możesz animować wynikowy ruch kamery. Animacja interpoluje się między bieżącymi atrybutami kamery i nowymi atrybutami kamery.
Możesz zmodyfikować obiekt GMSPanoramaCamera
i ustawić go we właściwości camera
obiektu GMSPanoramaView
. Spowoduje to przyciągnięcie kamery do nowego
punktu widzenia bez animacji. Aby skonfigurować dowolną kombinację orientacji i powiększenia, można 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
.
Możesz też sterować kamerą przy użyciu Core Animation. Możesz to zrobić za pomocą niestandardowego elementu CALayer
w aplikacji GMSPanoramaView
GMSPanoramaLayer
.
Znaczniki w Street View
Obiekt GMSPanoramaView
może wyświetlać znaczniki mapy. Tego samego obiektu GMSMarker
możesz użyć 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 skalowany na podstawie odległości między położeniem znacznika a lokalizacją obiektu GMSCameraView
. Jeśli odległość stanie się zbyt duża, znacznik stanie się zbyt mały do wyświetlenia 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;
Wydarzenia
Możesz nasłuchiwać zdarzeń występujących na panoramie Street View, np. po jej kliknięciu przez użytkownika. Aby nasłuchiwać zdarzeń, musisz wdrożyć protokół GMSPanoramaViewDelegate
. Zobacz ogólny przewodnik po zdarzeniach i listę metod w GMSPanoramaViewDelegate
.