Konfigurowanie mapy

Wybierz platformę: Android iOS

Ten przegląd opisuje, jak skonfigurować mapę dodaną do aplikacji na iOS za pomocą pakietu Maps SDK na iOS.

Przegląd

Po dodaniu mapy do aplikacji możesz skonfigurować jej opcje początkowe i ustawienia czasu działania. Więcej informacji o dodawaniu kontenera mapy znajdziesz w artykule Dodawanie mapy.

Początkowe ustawienia mapy obejmują:

W czasie działania 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ą GMSMapViewOptions. Właściwości opcji obejmują frame, camera, mapID lub backgroundColor.

Opcje mapy
frame
Wartość: CGRect
Ramka mapy. Domyślna wartość to CGRectZero.
camera
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ć utworzony obiekt 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 GMSMapViewOptionsz 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

Podczas pracy w trybie ciemnym lub przełączania się między widokami mapy może być przydatne zastąpienie domyślnego koloru tła mapy. Możesz 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ć, używając jednego z kilku typów map. Typ mapy określa ogólny sposób jej wyświetlania. Na przykład atlas zwykle zawiera mapy polityczne , które skupiają się na pokazywaniu granic, oraz mapy drogowe , które pokazują wszystkie drogi w mieście lub regionie. Maps SDK na iOS oferuje te typy map:

Typ mapy
Normalna
Wartość: kGMSTypeNormal
Typowa mapa drogowa. Pokazuje drogi, niektóre obiekty stworzone przez człowieka oraz ważne obiekty naturalne, takie jak rzeki. Widoczne są też etykiety dróg i obiektów. Umożliwia ustawienie ciemnego lub jasnego schematu kolorów mapy, możesz też użyć ustawień systemowych.
Hybrydowa
Wartość: kGMSTypeHybrid
Dane ze zdjęć satelitarnych z dodanymi mapami drogowymi. Widoczne są też etykiety dróg i obiektów.
Satelita
Wartość: kGMSTypeSatellite
Dane ze zdjęć satelitarnych. Etykiety dróg i obiektów nie są widoczne.
Teren
Wartość: kGMSTypeTerrain
Dane topograficzne. Mapa zawiera kolory, warstwice i etykiety, oraz cieniowanie perspektywiczne. Widoczne są też niektóre drogi i etykiety. Umożliwia ustawienie ciemnego lub jasnego schematu kolorów mapy, możesz też użyć ustawień systemowych.
Brak
Wartość: kGMSTypeNone
Brak kafelków mapy. Kafelki mapy podstawowej nie będą renderowane. Ten tryb jest przydatny w połączeniu z warstwami kafelków. Gdy typ mapy jest ustawiony na brak, 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. 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;

Poniższy selektor pokazuje porównanie map terenu, normalnych i hybrydowych dla tej samej lokalizacji:

Mapy obiektów

Przy dużym powiększeniu Maps SDK na iOS będzie wyświetlać plany pięter w pomieszczeniach, takich jak lotniska, centra handlowe, duże sklepy i stacje transportu publicznego. Plany pięter w pomieszczeniach są zintegrowane z domyślnymi kafelkami mapy dla typu „normalna” (kGMSTypeNormal) i są automatycznie włączane, gdy użytkownik powiększa mapę, oraz znikają, gdy ją pomniejsza.

Mapy obiektów możesz wyłączyć, ustawiając właściwość indoorEnabled obiektu 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ęter nie są dostępne w przypadku budynku, który chcesz wyróżnić w aplikacji, możesz:

  • dodać plany pięter bezpośrednio w Mapach Google. Dzięki temu Twoje plany będą dostępne dla wszystkich użytkowników Map Google.
  • wyświetlić plan pięter jako nakładkę na mapę. Dzięki temu tylko użytkownicy Twojej aplikacji będą mogli wyświetlać plany pięter.

Warstwa natężenia ruchu

Możesz umożliwić użytkownikom wyświetlanie mapy z nałożonymi na nią informacjami o natężeniu ruchu. Dzięki temu uzyskają wizualne podsumowanie sytuacji na drogach w swojej okolicy. Warstwę natężenia ruchu możesz 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 z warstwą ruchu

Warstwa transportu publicznego

Maps SDK na iOS umożliwia wyświetlanie sieci transportu publicznego w mieście na mapie za pomocą transitEnabled metody. Gdy warstwa natężenia ruchu jest włączona, a mapa jest wyśrodkowana na mieście, które obsługuje informacje o transporcie publicznym, na mapie będą wyświetlane główne linie transportu publicznego jako grube, kolorowe linie. Kolor linii jest ustawiany na podstawie informacji od operatora linii transportu publicznego. Włączenie warstwy transportu publicznego zmieni styl mapy podstawowej, aby lepiej podkreślić trasy transportu publicznego.

Jeśli jesteś przedstawicielem instytucji publicznej, która nadzoruje transport publiczny w Twoim mieście i chcesz, aby Twoje dane były uwzględniane, odwiedź witrynę programu Program partnerski Transportu publicznego Google, aby dowiedzieć się więcej.

Poniższy przykład pokazuje, jak warstwa transportu publicznego może wyglądać na mapie.

Mapa Google z warstwą transportu publicznego

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 obiektu GMSMapView na NO. Spowoduje to wygenerowanie elementów 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 wyjątkiem, że wartość domyślna w Maps SDK 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 w 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 – na przykład jeśli iOS wyświetli użytkownikowi prośbę o zezwolenie na dostęp do tych danych. W takim przypadku ma wartość nil.

Swift

print("User's location: \(String(describing: mapView.myLocation))")
      

Objective-C

NSLog(@"User's location: %@", mapView.myLocation);
      

Budynki 3D

Wiele miast, gdy są oglądane z bliska, ma widoczne budynki 3D, jak widać na obrazie Seattle w stanie Waszyngton poniżej.

Mapa 3D budynków w Seattle w stanie Waszyngton.

Budynki 3D możesz wyłączyć, ustawiając odpowiednią GMSMapView właściwość w Swift lub Objective-C, jak pokazano poniżej:

Swift

mapView.isBuildingsEnabled = false
      

Objective-C

[mapView setBuildingsEnabled:NO];
      

Dopełnienie mapy

Mapa Google jest zaprojektowana tak, aby wypełniać cały obszar zdefiniowany przez GMSMapView. Wymiary widoku określają kilka aspektów wyglądu i działania mapy:

  • Cel kamery odzwierciedla środek obszaru z dopełnieniem.
  • Elementy sterujące mapą są umieszczone względem krawędzi mapy.
  • Informacje prawne, takie jak oświadczenia o prawach autorskich lub logo Google, pojawiają się wzdłuż dolnej krawędzi mapy.

Możesz dodać dopełnienie wokół krawędzi mapy za pomocą właściwości GMSMapView.padding. Mapa nadal wypełnia cały kontener, ale tekst i położenie elementów sterujących, gesty na mapie i ruchy kamery zachowują się tak, jakby mapa była umieszczona w mniejszej przestrzeni. Powoduje to następujące zmiany:

  • Ruchy kamery za pomocą wywołań interfejsu API lub naciśnięć przycisków (np. kompasu, mojej lokalizacji) są względne w stosunku do obszaru z dopełnieniem.
  • GMSMapView.projection zwraca projekcję, która obejmuje tylko obszar z dopełnieniem.
  • Elementy sterujące interfejsu są przesunięte od krawędzi kontenera o określoną liczbę punktów.

Dopełnienie może być przydatne podczas projektowania interfejsów, które nakładają się na część mapy. Na przykład na obrazie mapa ma dopełnienie wzdłuż górnej i prawej krawędzi. Widoczne elementy sterujące mapą i tekst prawny są wyświetlane wzdłuż krawędzi obszaru z dopełnieniem (na zielono), a mapa nadal wypełnia cały kontener (na niebiesko). W tym przykładzie możesz umieścić menu po prawej stronie mapy bez zasłaniania elementów sterujących mapą.

Dopełnienie mapy

Aby dodać dopełnienie do mapy, utwórz obiekt UIEdgeInsets i przekaż go do właściwości 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 normalna i teren możesz ustawić ciemny lub jasny schemat kolorów mapy, możesz też użyć ustawień systemowych. Możesz na przykład przyciemnić lub rozjaśnić schemat kolorów mapy w zależności od pory dnia lub tego, czy urządzenie jest używane w pomieszczeniu czy na zewnątrz.

Aby ustawić i zaktualizować schemat kolorów mapy, użyj GMSMapView overrideUserInterfaceStyle:.

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;

Aby utworzyć niestandardowe style jasne i ciemne dla map, użyj definiowania stylów map w Google Cloud.