Z tego artykułu dowiesz się, jak skonfigurować mapę, która została dodana do aplikacji na iOS za pomocą pakietu SDK Map Google na iOS.
Przegląd
Po dodaniu mapy do aplikacji możesz skonfigurować opcje początkowe i ustawienia środowiska wykonawczego mapy. Więcej informacji o dodawaniu kontenera mapy znajdziesz w sekcji Dodawanie mapy.
Początkowe ustawienia mapy obejmują:
- Pozycja kamery, w tym: lokalizacja, powiększenie, kierunek i pochylenie kamery. Więcej informacji o pozycjonowaniu kamery znajdziesz w sekcji Kamera i widok.
- Kolor tła mapy.
- Typ mapy.
- Komponenty interfejsu, które mają być wyświetlane, np. przyciski powiększenia i kompas.
- Gesty, które mają zostać włączone.
Te ustawienia i niektóre dodatkowe ustawienia możesz skonfigurować w środowisku wykonawczym, aktualizując obiekt GMSMapView
.
Opcje mapy
Podczas inicjowania widoku mapy opcje konfiguracji są ustawiane za pomocą opcji GMSMapViewOptions
. Właściwości opcji to frame
, camera
, mapID
lub backgroundColor
.
Opcje mapy | |
---|---|
ramka | Wartość:
CGRect Ramka mapy. Wartość domyślna to CGRectZero.
|
kamera | Wartość:
GMSCameraPosition Domyślne położenie kamery mapy.
|
mapID | Wartość:
GMSMapID Identyfikator mapy Google. Parametr opcjonalny.
|
backgroundColor | Wartość:
UIColor Wartość domyślna to UIColor.lightGray
|
Skonfiguruj opcje mapy
Możesz ustawić własne właściwości opcji lub przekazać utworzony element GMSMapViewOptions
z wartościami domyślnymi bezpośrednio do elementu 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 przekazania 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 warto zastąpić domyślny kolor tła mapy. W tym celu skonfiguruj 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ę, wybierając jeden z kilku typów. Typ mapy określa jej ogólną reprezentację. Na przykład atlas zazwyczaj zawiera mapy polityczne, które wskazują granice, oraz mapy drogowe pokazujące wszystkie drogi w mieście lub regionie. Pakiet Maps SDK na iOS udostępnia następujące rodzaje map:
Typ mapy | |
---|---|
Normalnie | Wartość:
kGMSTypeNormal Typowa mapa drogowa. Przedstawia drogi, niektóre obiekty wybudowane przez ludzi oraz ważne obiekty naturalne, takie jak rzeki. Widoczne są też etykiety dróg i obiektów.
|
Ruch hybrydowy | Wartość:
kGMSTypeHybrid Dane zdjęć satelitarnych z dodanymi mapami dróg. Widoczne są również etykiety dróg i obiektów. |
Satelita | Wartość:
kGMSTypeSatellite satelitarne dane zdjęć. Etykiety drogi i obiektów są niewidoczne.
|
Teren | Wartość:
kGMSTypeTerrain Dane topograficzne. Mapa zawiera kolory, linie konturów i etykiety oraz cieniowanie perspektywy. Widoczne są również niektóre drogi i etykiety.
|
Brak | Wartość:
kGMSTypeNone Brak fragmentów mapy. Fragmenty mapy podstawowej nie zostaną wyrenderowane. Ten tryb jest przydatny w połączeniu z warstwami kafelków. Gdy ustawiony jest typ mapy, wyświetlanie danych o natężeniu ruchu jest wyłączone. |
Zmienianie typu mapy
Aby ustawić typ mapy, przypisz nową wartość do właściwości GMSMapView.mapType
. Na przykład, aby 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;
Poniżej znajduje się porównanie map terenu, map normalnych i hybrydowych tej samej lokalizacji:
Mapy obiektów
Przy dużym powiększeniu pakiet SDK Map Google na iOS pokazuje plany pięter budynków 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
). Są automatycznie włączane, gdy użytkownik powiększa widok, i znikają, gdy mapa jest pomniejszona.
Mapy obiektów możesz wyłączyć, ustawiając właściwość indoorEnabled
GMSMapView
na NO
.
Swift
mapView.isIndoorEnabled = false
Objective-C
mapView.indoorEnabled = NO;
Możesz też wyłączyć tylko element sterujący selektora pięter.
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 swojej 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ętra jako Nakładkę naziemną. Dzięki temu tylko użytkownicy aplikacji będą mogli wyświetlać Twoje plany pięter.
Warstwa natężenia ruchu
Możesz dać użytkownikom możliwość wyświetlenia mapy z nałożonymi na nią informacjami o gęstości ruchu. W ten sposób uzyskujesz wizualne podsumowanie
jego sytuacji na drogach w okolicy. Warstwa ruchu możesz włączać i wyłączać, wywołując metodę trafficEnabled
. W przykładzie poniżej możesz zobaczyć, 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. Ułatwienia dostępu możesz włączyć, ustawiając właściwość accessibilityElementsHidden
elementu GMSMapView
na NO
. Powoduje to generowanie elementów ułatwień dostępu dla obiektów nakładek (takich jak GMSMarker
, okna informacyjne, GMSPolyline
itp.).
Swift
mapView.accessibilityElementsHidden = false
Objective-C
mapView.accessibilityElementsHidden = NO;
Ta właściwość jest zgodna z nieformalnym protokołem UIAccessibility
. Jedyna wartość domyślna w pakiecie SDK Map Google na iOS to YES
.
Moja lokalizacja
Domyślnie na mapie nie wyświetlają się żadne dane o lokalizacji. Możesz włączyć niebieski punkt „Moja lokalizacja” i kierunek kompasu, ustawiając myLocationEnabled
na pozycji GMSMapView
.
Swift
mapView.isMyLocationEnabled = true
Objective-C
mapView.myLocationEnabled = YES;
Włączenie tej funkcji pozwala uzyskać informacje o bieżącej lokalizacji użytkownika za pomocą właściwości myLocation
. Ta usługa może nie być od razu dostępna, np. jeśli system iOS poprosi użytkownika o zezwolenie na dostęp do 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 z bliska widać budynki 3D, jak na zdjęciu Seattle w stanie Waszyngton.
Możesz wyłączyć budynki 3D, ustawiając odpowiednią właściwość GMSMapView
w komponencie Swift lub Objective-C, jak pokazano 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
.
Wymiary widoku określają kilka aspektów wyglądu i działania mapy:
- Cel kamery odbija środek wyściełanego obszaru.
- Elementy sterujące mapy są ustawiane względem krawędzi mapy.
- Informacje prawne, takie jak deklaracje dotyczące praw autorskich lub logo Google, wyświetlają się przy dolnej krawędzi mapy.
Możesz dodać dopełnienie wokół krawędzi mapy za pomocą komponentu GMSMapView
.padding
. Mapa nadal wypełnia cały kontener, ale tekst i elementy sterujące, gesty mapy i ruchy kamery działają tak, jakby została umieszczona na mniejszym obszarze. Powoduje to te zmiany:
- Ruch kamery za pomocą wywołań interfejsu API lub naciśnięć przycisku (np. kompas, moja lokalizacja) odbywa się względem obszaru wyściełanego.
GMSMapView
.projection
zwraca rzut, który obejmuje tylko region z dopełnieniem.- Elementy sterujące interfejsu są odsunięte od krawędzi kontenera o podaną liczbę punktów.
Dopełnienie może być przydatne przy projektowaniu interfejsów, które nakładają się na pewien fragment mapy. Na przykład na tym obrazie mapa jest dopełniona wzdłuż górnej i prawej krawędzi. Widoczne na mapie elementy sterujące i tekst prawny są wyświetlane wzdłuż krawędzi dopełnianego regionu (kolor zielony), a mapa nadal wypełnia cały kontener (kolor niebieski). W tym przykładzie możesz pływać menu po prawej stronie mapy, nie zasłaniając jej elementów sterujących.
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;