W tym omówieniu dowiesz się, jak skonfigurować mapę, która została dodana do aplikacji na iOS za pomocą pakietu Maps SDK na iOS.
Omówienie
Po dodaniu mapy do aplikacji możesz skonfigurować opcje początkowe i czas działania ustawienia mapy. Szczegółowe informacje o dodawaniu kontenera mapy znajdziesz w sekcji Dodawanie kontenera mapy .
Początkowe ustawienia mapy obejmują następujące elementy:
- 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ć.
Te ustawienia oraz niektóre ustawienia dodatkowe można skonfigurować w czasie działania
aktualizowanie
GMSMapView
obiektu.
Opcje mapy
Podczas inicjowania widoku mapy opcje konfiguracji są ustawiane za pomocą
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 Domyślna wartość 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 na 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ąpi domyślny kolor tła mapy. Aby to zrobić, ustaw parametr
opcje mapy: 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
Możesz dostosować swoją mapę, korzystając z jednego z kilku typów map. Typ mapy określa jej ogólny wygląd. Na przykład atlas zwykle zawiera polityczne, które koncentrują się na wskazywaniu granic, a także mapy drogowe, które pokazują wszystkich dróg w mieście lub regionie. Pakiet Maps SDK na iOS następujące typy map:
Typ mapy | |
---|---|
Normalnie | Wartość:
kGMSTypeNormal Typowa mapa drogowa. Pokazuje drogi, niektóre obiekty wybudowane przez
ludzi i ważne obiekty naturalne, takie jak rzeki. Etykiety dróg i obiektów
również są widoczne. Obsługuje ustawianie schematu kolorów mapy na ciemny, jasny
lub zastosować ustawienia systemowe.
|
Ruch hybrydowy | Wartość:
kGMSTypeHybrid Dane zdjęć satelitarnych z dodanymi mapami. Droga i obiekt
etykiety też są widoczne. |
Satelita | Wartość:
kGMSTypeSatellite Dane zdjęć satelitarnych. Etykiety dróg i obiektów nie są
widoczne.
|
Teren | Wartość:
kGMSTypeTerrain Dane topograficzne. Mapa zawiera kolory, linie konturowe i etykiety,
i cieniowanie perspektywy. Widoczne są też niektóre drogi i etykiety. Obsługiwane
przez ustawienie schematu kolorów mapy na ciemny lub jasny albo zgodnie z ustawieniami systemowymi.
|
Brak | Wartość:
kGMSTypeNone Brak fragmentów mapy. Fragmenty mapy podstawowej nie zostaną wyrenderowane. Ten tryb jest przydatny w połączeniu z warstwami płytek. Wyświetlanie danych o natężeniu ruchu jest wyłączone, gdy typ mapy to
ustaw na brak. |
Zmiana typu mapy
Aby ustawić typ mapy, przypisz nową wartość 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: ta sama lokalizacja:
Mapy obiektów
Przy dużym powiększeniu pakiet SDK Maps na iOS pokazuje plany pięter
w obiektach takich jak lotniska, centra handlowe, duże sklepy i środki transportu publicznego.
kilku stacji. Plany pięter wnętrz są zintegrowane z domyślnymi kafelkami mapy
„normalny” (kGMSTypeNormal
) i są automatycznie włączone, gdy
użytkownik powiększa i znika, gdy mapa jest pomniejszona.
Możesz wyłączyć mapy obiektów, ustawiając właściwość indoorEnabled
dla
GMSMapView
do 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 krajach lokalizacji. Jeśli dane planu piętra są niedostępne dla budynku, który chcesz możesz:
- Dodaj piętro abonamenty bezpośrednio w Mapach Google. Dzięki temu Twoje abonamenty będą dostępne dla wszystkich użytkowników Mapy Google.
- wyświetlać plan pięter jako nałożenie terenu, Włącza to tylko użytkownikom aplikacji, aby zobaczyć plany pięter.
Warstwa natężenia ruchu
Możesz umożliwić użytkownikom wyświetlanie mapy z uwzględnieniem natężenia ruchu
nałożone na nią informacje. W ten sposób uzyskasz wizualne podsumowanie
sytuacji w ruchu lokalnym. Aby włączyć lub wyłączyć warstwę natężenia ruchu, zadzwoń do
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. Możesz włączyć
ułatwienia dostępu przez ustawienie właściwości accessibilityElementsHidden
dla
GMSMapView
do NO
. Powoduje to, że elementy ułatwień dostępu są generowane dla
obiektów nakładanych (takich jak GMSMarker
, okna informacyjne i GMSPolyline
itd.).
Swift
mapView.accessibilityElementsHidden = false
Objective-C
mapView.accessibilityElementsHidden = NO;
Ta usługa 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 wyświetlają się żadne dane o lokalizacji. Możesz włączyć niebieski link
Lokalizacja kierunek kropki i kompasu po włączeniu opcji myLocationEnabled
GMSMapView
Swift
mapView.isMyLocationEnabled = true
Objective-C
mapView.myLocationEnabled = YES;
Po włączeniu tej funkcji użytkownik może sprawdzać bieżącą lokalizację w
myLocation
. Ta usługa może być niedostępna od razu – w okresie
np. gdy iOS poprosi użytkownika o zgodę na dostęp do tych danych. Jest
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.
Możesz wyłączyć budynki 3D, ustawiając odpowiednie
GMSMapView
w środowisku Swift lub Objective-C, jak 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
.
Kilka aspektów wyglądu i zachowania mapy jest zdefiniowanych przez wymiary
widoku:
- Cel aparatu odbija środek wyściełanego obszaru.
- Elementy sterujące mapy znajdują się względem krawędzi mapy.
- Pojawią się informacje prawne, takie jak oświadczenia dotyczące praw autorskich lub logo Google. wzdłuż dolnej krawędzi mapy.
Możesz dodać dopełnienie wokół krawędzi mapy za pomocą
GMSMapView
padding
. Mapa nadal wypełnia się
całego kontenera, ale też tekst i elementy sterujące pozycjonowaniem, gestami na mapie i aparatem
porusza się tak, jakby urządzenie zostało umieszczone w mniejszej przestrzeni. Powoduje to
następujące zmiany:
- Ruchy kamery wymagające wywołań interfejsu API lub naciśnięć przycisku (np. kompas, lokalizacji) są ustalane względem obszaru dopełnionego.
GMSMapView
.projection
zwraca prognozę obejmującą tylko dopełnienie i regionie.- Elementy sterujące interfejsu są przesunię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 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 wypełnienia wyświetlany na zielono, gdy mapa wypełnia cały kontener, zaznaczone 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ć 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, żarówki lub bieżące ustawienia 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.
Użyj formatu 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;