Konfigurowanie mapy

Wybierz platformę: Android iOS

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.

Mapa Google pokazująca natężenie ruchu
warstwa

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.

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

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ą GMSMapViewpadding. 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ą.

Dopełnienie mapy

Aby dodać dopełnienie do mapy, utwórz obiekt UIEdgeInsets i przekaż go do GMSMapViewpadding.

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;