Konfigurowanie mapy

Wybierz platformę: Android iOS

W tym omówieniu opisaliśmy, jak skonfigurować mapę dodaną do aplikacji na iOS za pomocą pakietu Maps SDK na iOS.

Omówienie

Po dodaniu mapy do aplikacji możesz skonfigurować jej opcje początkowe i ustawienia czasu wykonywania. Szczegółowe informacje o dodawaniu kontenera mapy znajdziesz w artykule Dodawanie mapy.

Do wstępnych ustawień mapy należą:

  • Pozycja kamery, w tym lokalizacja, zoom, kierunek i pochylenie. Szczegółowe informacje o pozycji kamery znajdziesz w sekcji Kamera i widok.
  • Kolor tła mapy.
  • Typ mapy.
  • Elementy interfejsu do wyświetlenia, takie jak przyciski powiększania i kompas.
  • Gesty, które chcesz włączyć.

W czasie wykonywania możesz skonfigurować te ustawienia i niektóre dodatkowe ustawienia, aktualizując obiekt GMSMapView.

Opcje mapy

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

Opcje mapy
ramka
Wartość: CGRect
Ramka mapy. Wartość domyślna to CGRectZero.
aparat
Wartość: GMSCameraPosition
Domyślna pozycja kamery na mapie.
mapID
Wartość: GMSMapID
Identyfikator mapy Google. Parametr opcjonalny.
backgroundColor
Wartość: UIColor
Wartość domyślna to UIColor.lightGray

Konfigurowanie opcji mapy

Możesz ustawić własne właściwości opcji lub przekazać instancję GMSMapViewOptions z wartościami domyślnymi bezpośrednio do 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 przekazywania 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

Konfigurowanie koloru tła

Gdy pracujesz w trybie ciemnym lub przełączasz się między widokami mapy, możesz zastąpić domyślny kolor tła mapy. Można to zrobić, ustawiając właściwość map options backgroundColor.

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

Mapę możesz dostosować, wybierając jeden z kilku typów map. Typ mapy określa jej ogólny wygląd. Na przykład atlas zwykle zawiera mapy polityczne, które pokazują granice, oraz mapy drogowe, które pokazują wszystkie drogi w danym mieście lub regionie. Pakiet SDK Map na iOS oferuje te typy map:

Typ mapy
Normalny
Wartość: kGMSTypeNormal
Typowa mapa drogowa. Pokazuje drogi, niektóre obiekty stworzone przez ludzi i ważne elementy naturalne, takie jak rzeki. widoczne są też etykiety dróg i elementów. Obsługuje ustawienie schematu kolorów mapy na ciemny, jasny lub zgodny z ustawieniami systemu.
Ruch hybrydowy
Wartość: kGMSTypeHybrid
dane z zdjęć satelitarnych z dodanymi mapami dróg. Widne są też etykiety dróg i elementów.
Satelita
Wartość: kGMSTypeSatellite
Dane z zdjęć satelitarnych. Etykiety dróg i elementów są niewidoczne.
Teren
Wartość: kGMSTypeTerrain
Dane topograficzne. Mapa zawiera kolory, poziomice, etykiety i cieniowanie perspektywiczne. widoczne są też niektóre drogi i etykiety; Obsługuje ustawienie schematu kolorów mapy na ciemny, jasny lub zgodny z ustawieniami systemu.
Brak
Wartość: kGMSTypeNone
Brak kafelków mapy. Płytki mapy podstawowej nie będą renderowane. Ten tryb jest przydatny w połączeniu z warstwami płytek. Wyświetlanie danych o ruchu jest wyłączone, gdy typ mapy jest ustawiony na „Brak”.

Zmiana typu mapy

Aby ustawić typ mapy, przypisz nową wartość właściwości GMSMapView.mapType. Aby na przykład wyświetlić mapę satelitarną:

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;

Wybór poniżej pokazuje porównanie map terenowych, normalnych i hybrydowych tej samej lokalizacji:

Mapy obiektów

Przy dużym powiększeniu Maps SDK na iOS wyświetla plany pięter pomieszczeń wewnętrznych, takich jak lotniska, centra handlowe, duże sklepy detaliczne i stacje transportu publicznego. Plany pięter w pomieszczeniach są zintegrowane z domyślnymi kafelkami mapy dla „normalnego” typu mapy (kGMSTypeNormal) i są automatycznie włączane, gdy użytkownik przybliża mapę, oraz znikają, gdy mapa jest oddalona.

Możesz wyłączyć mapy wewnątrz budynków, ustawiając właściwość indoorEnabled elementu GMSMapView na NO.

Swift

mapView.isIndoorEnabled = false
      

Objective-C

mapView.indoorEnabled = NO;
      

Możesz też wyłączyć tylko element selektora piętra.

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 aplikacji, możesz:

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

Warstwa danych o natężeniu ruchu

Możesz umożliwić użytkownikom wyświetlanie mapy z nałożonymi na nią informacjami o gęstości ruchu. Dzięki temu użytkownicy mogą uzyskać wizualny obraz sytuacji na lokalnych drogach. Warstwę ruchu możesz włączać i wyłączać, wywołując metodę trafficEnabled. Na przykładzie poniżej możesz zobaczyć, jak może wyglądać warstwa ruchu na mapie.

Mapa Google z warstwą ruchu

Ułatwienia dostępu

Domyślnie elementy ułatwień dostępu na mapie są ukryte. Możesz włączyć ułatwienia dostępu, ustawiając właściwość accessibilityElementsHidden w elementach GMSMapView na NO. W ten sposób generowane są elementy ułatwień dostępu dla obiektów nakładki (takich jak GMSMarker i okna informacyjne, GMSPolyline itp.).

Swift

mapView.accessibilityElementsHidden = false
      

Objective-C

mapView.accessibilityElementsHidden = NO;
      

Ta właściwość jest zgodna z nieformalnym protokołem UIAccessibility, z tym że domyślna wartość w pakiecie Maps SDK na iOS to YES.

Moja lokalizacja

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

Swift

mapView.isMyLocationEnabled = true
      

Objective-C

mapView.myLocationEnabled = YES;
      

Włączenie tej funkcji umożliwia uzyskanie bieżącej lokalizacji użytkownika za pomocą właściwości myLocation. Ta usługa może nie być od razu dostępna, np. gdy użytkownik otrzyma od iOS prośbę o przyznanie dostępu do tych 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 widoczne są budynki 3D, jak na przykład na zdjęciu Seattle w stanie Waszyngton poniżej.

Mapa 3D budynków w Seattle, stan Waszyngton.

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

Swift

mapView.isBuildingsEnabled = false
      

Objective-C

[mapView setBuildingsEnabled:NO];
      

Dopełnienie mapy

Mapa Google ma wypełniać cały region określony przez GMSMapView. Wymiary widoku definiują kilka aspektów wyglądu i działania mapy:

  • Cel kamery odzwierciedla środek obszaru z dodatkowym marginesem.
  • Elementy sterujące mapą są umieszczane względem krawędzi mapy.
  • Informacje prawne, takie jak oświadczenia o prawach autorskich lub logo Google, wyświetlają się na dolnej krawędzi mapy.

Możesz dodać wypełnienie wokół krawędzi mapy za pomocą opcji GMSMapView.Właściwość padding. Mapa nadal wypełnia cały kontener, ale tekst i pozycjonowanie elementów sterujących, gesty mapy oraz ruchy kamery zachowują się tak, jakby były umieszczone w mniejszym obszarze. W ten sposób wprowadzamy następujące zmiany:

  • Ruchy aparatu za pomocą wywołań interfejsu API lub naciśnięć przycisków (np. kompas, moja lokalizacja) są względne do obszaru z dodatkiem.
  • GMSMapView.projection zwraca projekcję, która obejmuje tylko wypełniony region.
  • Elementy sterujące interfejsu są przesunięte od krawędzi kontenera o określoną liczbę punktów.

Odstęp może być przydatny podczas projektowania interfejsów, które zachodzą na część mapy. Na przykład na obrazie mapa jest wypełniona po górze i po prawej stronie. Elementy sterujące widocznej mapy i tekst prawny są wyświetlane wzdłuż krawędzi obszaru z wypełnieniem (zaznaczonego na zielono), podczas gdy mapa nadal wypełnia cały kontener (zaznaczony na niebiesko). W tym przykładzie menu może unosić się po prawej stronie mapy bez zasłaniania elementów sterujących mapą.

Dopełnienie mapy

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

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;
      

Schemat kolorów mapy

W przypadku map typu normalna i rzeźba możesz ustawić schemat kolorów mapy na ciemny, jasny lub użyć bieżących ustawień systemu. Możesz na przykład przyciemnić lub rozjaśnić schemat kolorów mapy w zależności od pory dnia lub od tego, czy korzystasz z urządzenia w pomieszczeniu czy na zewnątrz.

Aby ustawić i zaktualizować schemat kolorów mapy, użyj GMSMapView overrideUserInterfaceStyle:.

Swift

let options = GMSMapViewOptions()
// Map is init to use light mode by default.
let mapView = GMSMapView(options: options)
// Set map to use dark mode.
mapView.overrideUserInterfaceStyle = .dark
// Set map to use light mode.
mapView.overrideUserInterfaceStyle = .light
// Set map to use dark/light mode based on the value of traitCollection.userInterfaceStyle
mapView.overrideUserInterfaceStyle = .unspecified

Objective-C

GMSMapViewOptions *options = [[GMSMapViewOptions alloc] init];
// Map is init to always use light mode.
GMSMapView *mapView = [[GMSMapView alloc] initWithOptions:options];
// Set map to use dark mode.
mapView.overrideUserInterfaceStyle = UIUserInterfaceStyleDark;
// Set map to use light mode.
mapView.overrideUserInterfaceStyle = UIUserInterfaceStyleLight;
// Set map to use dark/light mode based on the value of traitCollection.userInterfaceStyle
mapView.overrideUserInterfaceStyle = UIUserInterfaceStyleUnspecified;