Konfigurowanie mapy

Wybierz platformę: Android iOS

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.

Mapa Google pokazująca
warstwę natężenia ruchu

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.

Mapa 3D budynków w 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.

Dopełnienie 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;