Konfigurowanie mapy

Wybierz platformę: Android iOS

Z tego artykułu dowiesz się, jak skonfigurować mapę dodaną do aplikacji na iOS za pomocą pakietu SDK Map Google na iOS.

Opis

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

Początkowe ustawienia mapy obejmują:

  • Pozycja kamery, w tym: lokalizacja, powiększenie, kierunek i pochylenie kamery. Szczegółowe informacje o pozycjonowaniu kamery znajdziesz w sekcji Kamera i widok.
  • Typ mapy.
  • Komponenty interfejsu, które mają być wyświetlane, np. przyciski powiększenia i kompas.
  • Gesty do włączenia.

Te ustawienia i niektóre ustawienia dodatkowe możesz skonfigurować w środowisku wykonawczym, aktualizując obiekt GMSMapView.

Typy map

Możesz dostosować mapę, korzystając z jednego z kilku typów mapy. Typ mapy określa jej ogólną reprezentację. Na przykład atlas zwykle zawiera mapy polityczne, które pokazują granice, oraz mapy drogowe, które pokazują wszystkie drogi w danym mieście lub regionie. Pakiet SDK Map Google na iOS udostępnia te typy 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ą też etykiety dróg i obiektów.
Satelita
Wartość: kGMSTypeSatellite
Dane zdjęć satelitarnych. 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ą też 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. Wyświetlanie danych o natężeniu ruchu zostanie wyłączone, gdy typ mapy będzie 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 camera = GMSCameraPosition.camera(withLatitude: -33.8683, longitude: 151.2086, zoom: 6)
let mapView = GMSMapView.map(withFrame: .zero, camera: camera)
mapView.mapType = .satellite
      

Objective-C

GMSCameraPosition *camera = [GMSCameraPosition cameraWithLatitude:-33.8683
                                                        longitude:151.2086
                                                             zoom:6];
GMSMapView *mapView = [GMSMapView mapWithFrame:CGRectZero camera:camera];
mapView.mapType = kGMSTypeSatellite;
      

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

Mapy obiektów

Przy dużym powiększeniu pakiet SDK Map Google na iOS będzie wyświetlał plany pięter budynków wewnętrznych, takich jak lotniska, centra handlowe, duże sklepy i stacje przesiadkowe. Plany pięter budynków są zintegrowane z domyślnymi kafelkami mapy w trybie „normalnym” (kGMSTypeNormal) i są automatycznie włączane, gdy użytkownik powiększa widok, i zanikają, gdy mapa jest pomniejszona.

Możesz wyłączyć mapy obiektów, 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 dotyczące planu piętra są niedostępne dla budynku, który chcesz wyróżnić w aplikacji, możesz:

  • Dodawać 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ą. W ten sposób tylko użytkownicy 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. Można w niej zobaczyć wizualne podsumowanie lokalnego ruchu drogowego w okolicy. Warstwa ruchu możesz włączać i wyłączać, wywołując metodę trafficEnabled. W poniższym przykładzie pokazano, jak warstwa natężenia ruchu może wyglądać na mapie.

Mapa Google z warstwą natężenia ruchu

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 GMSMapView na NO. Spowoduje to generowanie elementów ułatwień dostępu dla obiektów w nakładkach (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 różnica jest taka, że domyślna wartość w pakiecie SDK Map Google 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 opcji GMSMapView.

Swift

mapView.isMyLocationEnabled = true
      

Objective-C

mapView.myLocationEnabled = YES;
      

Włączenie tej funkcji umożliwi też przekazanie informacji o bieżącej lokalizacji 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 przez system iOS o zezwolenie na dostęp do danych. W tym przypadku będzie to zero.

Swift

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

Objective-C

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

Budynki 3D

W wielu miastach oglądanych z bliska widać budynki 3D, np. na zdjęciu Seattle w stanie Waszyngton.

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

Aby wyłączyć budynki 3D, ustaw 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 wypełnia cały region zdefiniowany w polu GMSMapView. Kilka aspektów wyglądu i działania mapy zależy od wymiarów widoku:

  • Cel kamery będzie odbijał się w środku wyściełanego obszaru.
  • Elementy sterujące mapy są umieszczane względem krawędzi mapy.
  • Informacje prawne, takie jak oświadczenia o prawach autorskich lub logo Google, wyświetlają się przy dolnej krawędzi mapy.

Dopełnienie krawędzi mapy możesz dodać za pomocą polecenia GMSMapView.padding. Mapa nadal wypełnia cały kontener, ale tekst i kontrola pozycji, gesty mapowania i ruchy kamery będą się zachowywać tak, jakby została umieszczona w mniejszym miejscu. Powoduje to następujące zmiany:

  • Ruch kamery przez wywołania interfejsu API lub naciśnięcia przycisków (np. kompas lub moja lokalizacja) będzie odnosił się do obszaru z wypełnieniem.
  • GMSMapView.projection zwróci prognozę obejmującą tylko region z dopełnieniem.
  • Elementy sterujące interfejsu zostaną odsunięte od krawędzi kontenera o podaną liczbę punktów.

Dopełnienie może być przydatne przy projektowaniu interfejsów użytkownika, które nakładają się na pewien fragment mapy. Na przykład na obrazie poniżej mapa jest dopełniona wzdłuż górnej i prawej krawędzi. Wzdłuż krawędzi dopełnionego obszaru widoczne będą widoczne elementy sterujące mapą i tekst prawny, oznaczony kolorem zielonym, a mapa będzie nadal wypełniać cały kontener (kolor niebieski). W tym przykładzie możesz przesunąć menu po prawej stronie mapy, nie zasłaniając elementów sterujących.

Dopełnienie mapy

Aby dodać dopełnienie do mapy, utwórz obiekt UIEdgeInsets i przekaż go do obiektu 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;