W tym ogólnym omówieniu znajdziesz informacje o konfigurowaniu mapy dodanej do aplikacji na iOS za pomocą pakietu SDK Map 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 UI do wyświetlenia, takie jak przyciski powiększania i kompas.
- Gesty do włączenia.
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ą funkcji GMSMapViewOptions
.
Właściwości opcji to frame
, camera
, mapID
lub backgroundColor
.
Opcje mapy | |
---|---|
ramka | Wartość:
CGRect Ramka mapy. Domyślnie jest to CGRectZero.
|
aparat | Wartość:
GMSCameraPosition Domyślna pozycja kamery na mapie.
|
mapID | Wartość:
GMSMapID Identyfikator mapy Google. Parametr opcjonalny.
|
backgroundColor | Wartość:
UIColor Domyślnie 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ść 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
Mapę możesz dostosować, wybierając jeden z kilku typów map. Typ mapy określa jej ogólne odwzorowanie. 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 obiekty 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. Widoczne 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, linie konturowe, 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 zostaną wyrenderowane. Ten tryb jest przydatny w połączeniu z warstwami płytek. Wyświetlanie danych o korkach 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 terenu, normalnych i hybrydowych tej samej lokalizacji:
Mapy obiektów
Przy dużym powiększeniu pakiet SDK Map na iOS będzie 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 w przypadku „normalnego” typu mapy (kGMSTypeNormal
). Są one automatycznie włączane, gdy użytkownik powiększa mapę, i znikają, gdy mapę się oddala.
Możesz wyłączyć mapy wewnątrz budynków, ustawiając właściwość indoorEnabled
w usługach 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 będą dostępne dla wszystkich użytkowników Map Google.
- Wyświetl plan piętra jako nakładkę naziemną. Dzięki temu tylko użytkownicy aplikacji będą mogli wyświetlać plany pięter.
Warstwa 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ą wizualnie ocenić sytuację na lokalnych drogach. Warstwę ruchu możesz włączać i wyłączać, wywołując metodę trafficEnabled
. Na przykładzie poniżej widać, 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 SDK Maps 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ć dostępna od razu, np. jeśli użytkownik otrzyma od iOS prośbę o dostęp 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, gdy spojrzysz na nie z bliska, zobaczysz budynki w 3D, jak na przykład na zdjęciu Seattle w stanie Waszyngton poniżej.
![Mapa 3D budynków w Seattle, stan Waszyngton.](https://developers.google.cn/static/maps/documentation/ios-sdk/images/ios-3d-buildings.png?authuser=002&hl=pl)
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
.
Wybrane 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 zostały umieszczone w mniejszym obszarze. W efekcie:
- Ruchy kamery przy użyciu 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 interfejsem 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. Widoczne elementy sterujące mapą i tekst prawny są wyświetlane wzdłuż krawędzi obszaru wypełnienia, który jest zaznaczony na zielono, a mapa wypełnia cały kontener, który jest zaznaczony na niebiesko. W tym przykładzie menu może się wyświetlać 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 mapy terenu 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 na podstawie pory dnia lub używania urządzenia w pomieszczeniu lub na zewnątrz.
Użyj GMSMapView
overrideUserInterfaceStyle:
, aby ustawić i zaktualizować schemat kolorów mapy.
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;