Z tego artykułu dowiesz się, jak skonfigurować mapę, która została dodana do aplikacji na iOS za pomocą pakietu SDK Maps na iOS.
Przegląd
Po dodaniu mapy do aplikacji możesz skonfigurować opcje początkowe i ustawienia czasu działania mapy. Szczegółowe informacje o dodawaniu kontenera mapy znajdziesz w artykule Dodawanie mapy.
Początkowe ustawienia mapy obejmują następujące elementy:
- Położenie kamery, w tym lokalizacja, powiększenie, położenie i nachylenie. Szczegółowe informacje na temat pozycjonowania kamery znajdziesz w sekcji Aparat i widok.
- Kolor tła mapy.
- Typ mapy.
- Komponenty interfejsu do wyświetlenia, np. przyciski powiększenia i kompas.
- Gesty, które chcesz włączyć.
Te i niektóre ustawienia dodatkowe możesz skonfigurować w czasie działania, aktualizując obiekt GMSMapView
.
Opcje mapy
Gdy inicjujesz widok mapy, opcje konfiguracji ustawiane są za pomocą GMSMapViewOptions
. Właściwości opcji to frame
, camera
, mapID
i backgroundColor
.
Opcje mapy | |
---|---|
ramka | Wartość:
CGRect Ramka mapy. Wartość domyślna to CGRectZero.
|
kamera | Wartość:
GMSCameraPosition Domyślna pozycja kamery do mapy.
|
mapID | Wartość:
GMSMapID Identyfikator mapy Google. Parametr opcjonalny.
|
backgroundColor | Wartość:
UIColor Domyślna wartość to UIColor.lightGray
|
Skonfiguruj opcje mapy
Możesz ustawić własne właściwości opcji lub przekazać utworzoną instancję GMSMapViewOptions
z wartościami domyślnymi bezpośrednio do funkcji 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
Skonfiguruj kolor tła
Podczas pracy w trybie ciemnym lub przełączania się między widokami mapy przydatne może być zastąpienie domyślnego koloru 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
Możesz dostosować swoją mapę, korzystając z jednego z kilku typów map. Typ mapy określa ogólną reprezentację mapy. Na przykład atlas zawiera zazwyczaj mapy polityczne skupiające się na wskazywaniu granic oraz mapy drogowe pokazujące wszystkie drogi w mieście lub regionie. Maps SDK na iOS udostępnia te typy map:
Typ mapy | |
---|---|
Normalnie | Wartość:
kGMSTypeNormal Typowa mapa drogowa. Pokazywane są drogi, niektóre obiekty zbudowane przez ludzi oraz ważne obiekty naturalne, takie jak rzeki. Widoczne są też etykiety dróg i obiektów. Obsługuje ustawienie schematu kolorów mapy na ciemny lub jasny albo zgodny z ustawieniami systemu.
|
Ruch hybrydowy | Wartość:
kGMSTypeHybrid Dane zdjęć satelitarnych z dodanymi mapami. Widoczne są też etykiety dróg i obiektów. |
Satelitarne | Wartość:
kGMSTypeSatellite Dane zdjęć satelitarnych. Etykiety dróg i obiektów nie są widoczne.
|
rodzaj terenu, | Wartość:
kGMSTypeTerrain Dane topograficzne. Mapa obejmuje kolory, linie konturowe i etykiety, a także cieniowanie perspektywy. Widoczne są też niektóre drogi i etykiety. Obsługuje ustawienie schematu kolorów mapy na ciemny lub jasny albo zgodny z ustawieniami systemu.
|
Brak | Wartość:
kGMSTypeNone Brak fragmentów mapy. Fragmenty mapy podstawowej nie zostaną renderowane. Ten tryb jest przydatny w połączeniu z warstwą kafelków. Wyświetlanie danych o natężeniu ruchu jest wyłączone, gdy typ mapy jest ustawiony na „brak”. |
Zmiana typu mapy
Aby ustawić typ mapy, przypisz nową wartość do właściwości GMSMapView.mapType
. Aby na przykład 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;
Selektor poniżej zawiera porównanie terenu, mapy normalnej i hybrydowej dla tej samej lokalizacji:
Mapy obiektów
Przy dużym powiększeniu pakiet Maps SDK na iOS wyświetla plany pięter przestrzeni 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
). Włączają się automatycznie, gdy użytkownik powiększa widok, i znikają, gdy mapa jest pomniejszona.
Możesz wyłączyć mapy obiektów, ustawiając właściwość indoorEnabled
właściwości GMSMapView
na NO
.
Swift
mapView.isIndoorEnabled = false
Objective-C
mapView.indoorEnabled = NO;
Możesz też wyłączyć tylko selektor pięter.
Dodaję plany pięter
Plany pięter są dostępne w wybranych lokalizacjach. Jeśli dane planu piętra są niedostępne w przypadku 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świetlać plan pięter jako nałożenie terenu, Umożliwi to wyświetlanie planów pięter tylko użytkownikom aplikacji.
Warstwa natężenia ruchu
Możesz umożliwić użytkownikom wyświetlanie mapy z nałożonymi na nią informacjami o natężeniu ruchu. Pozwala to uzyskać wizualne podsumowanie sytuacji w ruchu ulicznym. Warstwę ruchu można włączać i wyłączać, wywołując metodę trafficEnabled
. Poniższy przykład pokazuje, jak warstwa natężenia ruchu może wyglądać na mapie.
Ułatwienia dostępu
Domyślnie elementy ułatwień dostępu na mapie są ukryte. Aby włączyć ułatwienia dostępu, ustaw właściwość accessibilityElementsHidden
elementu GMSMapView
na NO
. Powoduje to, że w przypadku obiektów nakładek (takich jak GMSMarker
, okna informacyjne czy GMSPolyline
) generowane są elementy ułatwień dostępu.
Swift
mapView.accessibilityElementsHidden = false
Objective-C
mapView.accessibilityElementsHidden = NO;
Ta właściwość jest zgodna z nieformalnym protokołem UIAccessibility
, z tą różnicą, że wartość domyślna w pakiecie SDK Maps na iOS to YES
.
Moja lokalizacja
Domyślnie na mapie nie wyświetlają się żadne dane o lokalizacji. Możesz włączyć niebieską kropkę „Moja lokalizacja” i kierunek kompasu, włączając myLocationEnabled
GMSMapView
.
Swift
mapView.isMyLocationEnabled = true
Objective-C
mapView.myLocationEnabled = YES;
Włączenie tej funkcji udostępnia bieżącą lokalizację użytkownika za pomocą właściwości myLocation
. Ta właściwość może nie być od razu dostępna, np. jeśli użytkownik zostanie poproszony o zezwolenie na dostęp do danych z systemu iOS. 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, tak jak na zdjęciu poniżej Seattle w stanie Waszyngton.
Możesz wyłączyć budynki 3D, ustawiając odpowiednią właściwość GMSMapView
w języku Swift lub Objective-C w następujący sposób:
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 zależą od kilku aspektów wyglądu i działania mapy:
- Cel aparatu odbija środek wyściełanego obszaru.
- Elementy sterujące mapy znajdują się względem krawędzi mapy.
- Wzdłuż dolnej krawędzi mapy pojawią się informacje prawne, takie jak oświadczenia dotyczące praw autorskich lub logo Google.
Możesz dodać dopełnienie wokół krawędzi mapy za pomocą elementu GMSMapView
.padding
. Mapa nadal wypełnia cały kontener, ale tekst i elementy sterujące pozycjonowaniem, gestami mapy i ruchami aparatu działają tak, jakby umieszczono je w mniejszej przestrzeni. Powoduje to takie zmiany:
- Ruchy kamery związane z wywołaniami interfejsu API lub naciśnięciami przycisków (np. kompas, moja lokalizacja) są określone względem wyściełanego obszaru.
GMSMapView
.projection
zwraca prognozę obejmującą tylko region dopełniony.- Elementy sterujące interfejsu są odsunięte od krawędzi kontenera o określoną liczbę punktów.
Dopełnienie może być pomocne przy projektowaniu interfejsów, które nakładają się na część mapy. Na przykład na zdjęciu mapa jest wyściełana wzdłuż górnej i prawej krawędzi. Widoczne elementy sterujące mapą i tekst prawny są wyświetlane przy krawędziach dopełnionego obszaru i są wyświetlane na zielono, a mapa wypełnia cały kontener (oznaczona na niebiesko). W tym przykładzie możesz unosić menu po prawej stronie mapy bez zasłaniania elementów sterujących 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;
Schemat kolorów mapy
W przypadku map typu normalnego i terenu możesz ustawić schemat kolorów mapy na ciemny lub jasny albo zastosować bieżące ustawienia systemu. Możesz na przykład przyciemnić lub rozjaśnić schemat kolorów mapy w zależności od pory dnia albo sposobu korzystania z urządzenia wewnątrz 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;