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, powiększenie, 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ą GMSMapViewOptions
.
Dostępne 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 funkcji 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 zgodnie 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 nie są widoczne.
|
Teren | Wartość:
kGMSTypeTerrain Dane topograficzne. Mapa zawiera kolory, poziomice, etykiety i cieniowanie perspektywiczne. widoczne są też niektóre drogi i etykiety; Obsługuje
ustawianie schematu kolorów mapy na ciemny, jasny lub zgodnie 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.
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.
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 dodatkiem.
- 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 dodatkiem, 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ą.
Aby dodać do mapy wypełnienie, 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;