Konfigurowanie mapy

Wybierz platformę: Android iOS

Z tego artykułu dowiesz się, jak skonfigurować mapę, która została dodana do aplikacji na iOS za pomocą pakietu SDK Map Google na iOS.

Przegląd

Po dodaniu mapy do aplikacji możesz skonfigurować opcje początkowe i ustawienia środowiska wykonawczego mapy. Więcej informacji o dodawaniu kontenera mapy znajdziesz w sekcji Dodawanie mapy.

Początkowe ustawienia mapy obejmują:

  • Pozycja kamery, w tym: lokalizacja, powiększenie, kierunek i pochylenie kamery. Więcej informacji o pozycjonowaniu kamery znajdziesz w sekcji Kamera i widok.
  • Kolor tła mapy.
  • Typ mapy.
  • Komponenty interfejsu, które mają być wyświetlane, np. przyciski powiększenia i kompas.
  • Gesty, które mają zostać włączone.

Te ustawienia i niektóre dodatkowe ustawienia możesz skonfigurować w środowisku wykonawczym, aktualizując obiekt GMSMapView.

Opcje mapy

Podczas inicjowania widoku mapy opcje konfiguracji są ustawiane za pomocą opcji GMSMapViewOptions. Właściwości opcji to frame, camera, mapID lub backgroundColor.

Opcje mapy
ramka
Wartość: CGRect
Ramka mapy. Wartość domyślna to CGRectZero.
kamera
Wartość: GMSCameraPosition
Domyślne położenie kamery mapy.
mapID
Wartość: GMSMapID
Identyfikator mapy Google. Parametr opcjonalny.
backgroundColor
Wartość: UIColor
Wartość domyślna to UIColor.lightGray

Skonfiguruj opcje mapy

Możesz ustawić własne właściwości opcji lub przekazać utworzony element GMSMapViewOptions z wartościami domyślnymi bezpośrednio do elementu GMSMapView.

Swift

let options = GMSMapViewOptions()
options.camera = GMSCameraPosition.camera(withLatitude: -33.8683, longitude: 151.2086, zoom: 6)
let mapView = GMSMapView(options:options)

Objective-C

GMSMapViewOptions *options = [[GMSMapViewOptions alloc] init];
options.camera = [GMSCameraPosition cameraWithLatitude:-33.8683
                                                        longitude:151.2086
                                                             zoom:6];
GMSMapView *mapView = [[GMSMapView alloc] initWithOptions:options];

Oto przykład przekazania obiektu GMSMapViewOptions z wartościami domyślnymi bezpośrednio do GMSMapView.

Swift

let options = GMSMapViewOptions()
let mapView = GMSMapView(options:options) //initialized with default values

Objective-C

GMSMapViewOptions *options = [[GMSMapViewOptions alloc] init];
GMSMapView *mapView = [[GMSMapView alloc] initWithOptions:options]; //initialized with default values

Skonfiguruj kolor tła

Podczas pracy w trybie ciemnym lub przełączania się między widokami mapy warto zastąpić domyślny kolor tła mapy. W tym celu skonfiguruj właściwość backgroundColor opcji mapy.

Swift

let options = GMSMapViewOptions()
options.backgroundColor = UIColor.yellowColor
let mapView = GMSMapView(options:options)

Objective-C

GMSMapViewOptions *options = [[GMSMapViewOptions alloc] init];
options.backgroundColor = UIColor.yellowColor;
GMSMapView *mapView = [[GMSMapView alloc] initWithOptions:options];

Typy map

Możesz dostosować swoją mapę, wybierając jeden z kilku typów. Typ mapy określa jej ogólną reprezentację. Na przykład atlas zazwyczaj zawiera mapy polityczne, które wskazują granice, oraz mapy drogowe pokazujące wszystkie drogi w mieście lub regionie. Pakiet Maps SDK na iOS udostępnia następujące rodzaje map:

Typ mapy
Normalnie
Wartość: kGMSTypeNormal
Typowa mapa drogowa. Przedstawia drogi, niektóre obiekty wybudowane przez ludzi oraz ważne obiekty naturalne, takie jak rzeki. Widoczne są też etykiety dróg i obiektów.
Ruch hybrydowy
Wartość: kGMSTypeHybrid
Dane zdjęć satelitarnych z dodanymi mapami dróg. Widoczne są również etykiety dróg i obiektów.
Satelita
Wartość: kGMSTypeSatellite
satelitarne dane zdjęć. Etykiety drogi i obiektów są niewidoczne.
Teren
Wartość: kGMSTypeTerrain
Dane topograficzne. Mapa zawiera kolory, linie konturów i etykiety oraz cieniowanie perspektywy. Widoczne są również niektóre drogi i etykiety.
Brak
Wartość: kGMSTypeNone
Brak fragmentów mapy. Fragmenty mapy podstawowej nie zostaną wyrenderowane. Ten tryb jest przydatny w połączeniu z warstwami kafelków. Gdy ustawiony jest typ mapy, wyświetlanie danych o natężeniu ruchu jest wyłączone.

Zmienianie typu mapy

Aby ustawić typ mapy, przypisz nową wartość do właściwości GMSMapView.mapType. Na przykład, aby wyświetlić typ mapy satelitarnej:

Swift

let options = GMSMapViewOptions()
options.camera = GMSCameraPosition.camera(withLatitude: -33.8683, longitude: 151.2086, zoom: 6)
let mapView = GMSMapView(options:options)
mapView.mapType = .satellite

Objective-C

GMSMapViewOptions *options = [[GMSMapViewOptions alloc] init];
options.camera = [GMSCameraPosition cameraWithLatitude:-33.8683
                                                  longitude:151.2086
                                                        zoom:6];
GMSMapView *mapView = [[GMSMapView alloc] initWithOptions:options];
mapView.mapType = kGMSTypeSatellite;

Poniżej znajduje się porównanie map terenu, map normalnych i hybrydowych tej samej lokalizacji:

Mapy obiektów

Przy dużym powiększeniu pakiet SDK Map Google na iOS pokazuje plany pięter budynków wewnątrz budynków, takich jak lotniska, centra handlowe, duże sklepy i stacje transportu publicznego. Plany pięter obiektów są zintegrowane z domyślnymi kafelkami mapy dla „normalnego” typu mapy (kGMSTypeNormal). Są automatycznie włączane, gdy użytkownik powiększa widok, i znikają, gdy mapa jest pomniejszona.

Mapy obiektów możesz wyłączyć, ustawiając właściwość indoorEnabled GMSMapView na NO.

Swift

mapView.isIndoorEnabled = false
      

Objective-C

mapView.indoorEnabled = NO;
      

Możesz też wyłączyć tylko element sterujący selektora pięter.

Dodawanie planów pięter

Plany pięter są dostępne w wybranych lokalizacjach. Jeśli dane planu piętra są niedostępne dla budynku, który chcesz wyróżnić w swojej aplikacji, możesz:

  • Dodaj plany pięter bezpośrednio do Map Google. Dzięki temu Twoje plany będą dostępne dla wszystkich użytkowników Map Google.
  • Wyświetlać plan piętra jako Nakładkę naziemną. Dzięki temu tylko użytkownicy aplikacji będą mogli wyświetlać Twoje plany pięter.

Warstwa natężenia ruchu

Możesz dać użytkownikom możliwość wyświetlenia mapy z nałożonymi na nią informacjami o gęstości ruchu. W ten sposób uzyskujesz wizualne podsumowanie jego sytuacji na drogach w okolicy. Warstwa ruchu możesz włączać i wyłączać, wywołując metodę trafficEnabled. W przykładzie poniżej możesz zobaczyć, jak warstwa natężenia ruchu może wyglądać na mapie.

Mapa Google pokazująca
warstwę natężenia ruchu

Ułatwienia dostępu

Domyślnie elementy ułatwień dostępu na mapie są ukryte. Ułatwienia dostępu możesz włączyć, ustawiając właściwość accessibilityElementsHidden elementu GMSMapView na NO. Powoduje to generowanie elementów ułatwień dostępu dla obiektów nakładek (takich jak GMSMarker, okna informacyjne, GMSPolyline itp.).

Swift

mapView.accessibilityElementsHidden = false
      

Objective-C

mapView.accessibilityElementsHidden = NO;
      

Ta właściwość jest zgodna z nieformalnym protokołem UIAccessibility. Jedyna wartość domyślna w pakiecie SDK Map Google na iOS to YES.

Moja lokalizacja

Domyślnie na mapie nie wyświetlają się żadne dane o lokalizacji. Możesz włączyć niebieski punkt „Moja lokalizacja” i kierunek kompasu, ustawiając myLocationEnabled na pozycji GMSMapView.

Swift

mapView.isMyLocationEnabled = true
      

Objective-C

mapView.myLocationEnabled = YES;
      

Włączenie tej funkcji pozwala uzyskać informacje o bieżącej lokalizacji użytkownika za pomocą właściwości myLocation. Ta usługa może nie być od razu dostępna, np. jeśli system iOS poprosi użytkownika o zezwolenie na dostęp do danych. W tym przypadku jest to nil.

Swift

print("User's location: \(String(describing: mapView.myLocation))")
      

Objective-C

NSLog(@"User's location: %@", mapView.myLocation);
      

Budynki 3D

W wielu miastach z bliska widać budynki 3D, jak na zdjęciu Seattle w stanie Waszyngton.

Mapa 3D budynków w Seattle w stanie Waszyngton.

Możesz wyłączyć budynki 3D, ustawiając odpowiednią właściwość GMSMapView w komponencie Swift lub Objective-C, jak pokazano poniżej:

Swift

mapView.isBuildingsEnabled = false
      

Objective-C

[mapView setBuildingsEnabled:NO];
      

Dopełnienie mapy

Mapa Google została zaprojektowana tak, aby wypełnić cały region zdefiniowany przez GMSMapView. Wymiary widoku określają kilka aspektów wyglądu i działania mapy:

  • Cel kamery odbija środek wyściełanego obszaru.
  • Elementy sterujące mapy są ustawiane względem krawędzi mapy.
  • Informacje prawne, takie jak deklaracje dotyczące praw autorskich lub logo Google, wyświetlają się przy dolnej krawędzi mapy.

Możesz dodać dopełnienie wokół krawędzi mapy za pomocą komponentu GMSMapView.padding. Mapa nadal wypełnia cały kontener, ale tekst i elementy sterujące, gesty mapy i ruchy kamery działają tak, jakby została umieszczona na mniejszym obszarze. Powoduje to te zmiany:

  • Ruch kamery za pomocą wywołań interfejsu API lub naciśnięć przycisku (np. kompas, moja lokalizacja) odbywa się względem obszaru wyściełanego.
  • GMSMapView.projection zwraca rzut, który obejmuje tylko region z dopełnieniem.
  • Elementy sterujące interfejsu są odsunięte od krawędzi kontenera o podaną liczbę punktów.

Dopełnienie może być przydatne przy projektowaniu interfejsów, które nakładają się na pewien fragment mapy. Na przykład na tym obrazie mapa jest dopełniona wzdłuż górnej i prawej krawędzi. Widoczne na mapie elementy sterujące i tekst prawny są wyświetlane wzdłuż krawędzi dopełnianego regionu (kolor zielony), a mapa nadal wypełnia cały kontener (kolor niebieski). W tym przykładzie możesz pływać menu po prawej stronie mapy, nie zasłaniając jej elementów sterujących.

Dopełnienie mapy

Aby dodać dopełnienie do mapy, utwórz obiekt UIEdgeInsets i przekaż go do GMSMapView.padding.

Swift

// Insets are specified in this order: top, left, bottom, right
let mapInsets = UIEdgeInsets(top: 100.0, left: 0.0, bottom: 0.0, right: 300.0)
mapView.padding = mapInsets
      

Objective-C

// Insets are specified in this order: top, left, bottom, right
UIEdgeInsets mapInsets = UIEdgeInsetsMake(100.0, 0.0, 0.0, 300.0);
mapView.padding = mapInsets;