Street View

Wybierz platformę: Android iOS JavaScript

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:

  1. (Raz) Wykonaj czynności opisane w artykule Pierwsze kroki, aby pobrać pakiet SDK, uzyskać klucz i dodać wymagane platformy.
  2. Utwórz lub zaktualizuj ViewController. Jeśli panorama pojawi się, gdy ten kontroler widoku stanie się widoczny, utwórz ją w metodzie loadView.
  3. Utwórz i utwórz instancję klasy GMSPanoramaView przy użyciu metody GMSPanoramaView initWithFrame:. Jeśli ten widok ma być używany jako jedyny widok kontrolera widoku, jako ramka mapy można użyć elementu CGRectZero – rozmiar mapy zostanie automatycznie zmieniony.
  4. Ustaw obiekt GMSPanoramaView jako widok kontrolera widoku, np. self.view = panoView;.
  5. 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ślnie 0) 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.