Konfigurowanie mapy

Zadbaj o dobrą organizację dzięki kolekcji Zapisuj i kategoryzuj treści zgodnie ze swoimi preferencjami.

Wybierz platformę: Android iOS

W tym artykule opisujemy, jak skonfigurować mapę dodaną do aplikacji na iOS za pomocą pakietu SDK Map na iOS.

Przegląd

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

Wstępne ustawienia mapy obejmują:

  • Położenie kamery, w tym: lokalizacja, powiększenie, obrót i pochylenie. Szczegółowe informacje o pozycjonowaniu aparatu znajdziesz w artykule Aparat i widok.
  • Typ mapy.
  • Komponenty UI do wyświetlenia, np. przyciski powiększenia i kompas.
  • Gesty, które należy włączyć.

W czasie działania możesz skonfigurować te ustawienia i niektóre ustawienia dodatkowe, aktualizując obiekt GMSMapView.

Typy map

Mapę możesz dostosować, używając jednego z kilku typów map. Typ mapy określa ogólny wygląd mapy. Na przykład atlasy zawierają zwykle polityczne mapy, które skupiają się na granicach, i drogi, które pokazują wszystkie drogi do miasta lub regionu. Maps SDK na iOS oferuje te typy map:

Typ mapy
Normalne
Wartość: kGMSTypeNormal
Typowe mapy drogowe. Pokazuje drogi, niektóre utworzone przez ludzi oraz ważne obiekty naturalne, takie jak rzeki. Widoczne są też etykiety drogi i cech.
Ruch hybrydowy
Wartość: kGMSTypeHybrid
Dane zdjęć satelitarnych z dodanymi mapami dróg. Widoczne są też etykiety drogi i cech.
Satelita
Wartość: kGMSTypeSatellite
Dane zdjęć satelitarnych. Etykiety drogi i cech nie są widoczne.
Teren
Wartość: kGMSTypeTerrain
Dane topograficzne. Mapa zawiera kolory, linie konturowe i etykiety oraz cieniowanie perspektywy. Niektóre drogi i etykiety są również widoczne.
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. Wyświetlanie danych o natężeniu ruchu zostanie wyłączone, gdy typ mapy nie zostanie ustawiony.

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;
      

Wybór poniżej przedstawia porównanie map terenu, normalnych i hybrydowych dla tej samej lokalizacji:

Mapy obiektów

Przy dużym powiększeniu pakiet SDK Map na iOS wyświetli plany pięter przestrzeni wewnątrz, takich jak lotniska, centra handlowe, duże sklepy i stacje transportu publicznego. Plany pięter budynków są zintegrowane z domyślnymi kafelkami mapy w typie „normalnego” (kGMSTypeNormal) i są automatycznie włączone, gdy użytkownik powiększy mapę, i zanikną po pomniejszeniu mapy.

Mapy możesz wyłączyć, ustawiając właściwość indoorEnabled dla właściwości GMSMapView na NO.

Swift

mapView.isIndoorEnabled = false
      

Objective-C

mapView.indoorEnabled = NO;
      

Możesz też wyłączyć selektor piętra.

Dodawanie planów pięter

Plany pięter są dostępne w wybranych lokalizacjach. Jeśli dane planu piętra nie są dostępne dla budynku, który chcesz wyróżnić w aplikacji, możesz:

  • Dodawanie planów pięter bezpośrednio do Map Google. Dzięki temu Twoje plany będą dostępne dla wszystkich użytkowników Map Google.
  • Wyświetl plan piętra jako nakładkę naziemną. Dzięki temu tylko użytkownicy aplikacji będą mogli wyświetlać Twoje plany pięter.

Warstwa ruchu

Możesz zezwolić użytkownikom na wyświetlanie mapy z nałożonymi na nią informacjami o gęstości ruchu. Pozwoli to uzyskać wizualne informacje o lokalnej sytuacji drogowej. Tę warstwę można włączyć lub wyłączyć, wywołując metodę trafficEnabled. Przykład poniżej pokazuje, jak warstwa ruchu może pojawić się 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. Możesz włączyć ułatwienia dostępu, ustawiając właściwość accessibilityElementsHidden dla właściwości GMSMapView na NO. Spowoduje to wygenerowanie elementów ułatwień dostępu dla obiektów nałożonych (np. GMSMarker i okna informacyjne, GMSPolyline).

Swift

mapView.accessibilityElementsHidden = false
      

Objective-C

mapView.accessibilityElementsHidden = NO;
      

Ta właściwość jest zgodna z protokołem UIAccessibility, z tą różnicą, że domyślną wartością pakietu SDK Map na iOS jest 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 na GMSMapView.

Swift

mapView.isMyLocationEnabled = true
      

Objective-C

mapView.myLocationEnabled = YES;
      

Włączenie tej funkcji umożliwi też wyświetlanie 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 poprosi o dostęp do tych danych na iOS. 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.

Wielu miast w okolicy można zobaczyć w 3D budynki, jak widać na ilustracji Seattle w stanie Waszyngton.

Mapa 3D budynków w Seattle, w Waszyngtonie.

Możesz wyłączyć budynki 3D, ustawiając odpowiednią właściwość GMSMapView w narzędziu 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 w taki sposób, aby wypełnić cały region określony przez GMSMapView. Na wygląd i działanie mapy wpływa kilka wymiarów:

  • Cel kamery będzie odzwierciedlać jego środek.
  • Elementy sterujące mapy znajdują się w stosunku do krawędzi mapy.
  • W dolnej części mapy znajdują się informacje prawne, takie jak oświadczenia dotyczące praw autorskich lub logo Google.

Do krawędzi mapy możesz dodać dopełnienie za pomocą właściwości GMSMapView.padding. Mapa będzie dalej wypełniać cały kontener, ale położenie i sterowanie położeniem, gesty i ruchy kamery będą działać tak, jakby znajdowały się w mniejszym miejscu, tak jak przy pozostałych elementach. Powoduje to następujące zmiany:

  • Ruch kamery związany z wywołaniami interfejsu API lub naciśnięciem przycisków (np. kompasem lub moją lokalizacją) będzie zależny od dopełnionego regionu.
  • GMSMapView.projection zwróci prognozę, która obejmuje tylko wypełniony region.
  • Elementy sterujące interfejsu zostaną odsunięte od krawędzi kontenera o określoną liczbę punktów.

Dopełnienie może być przydatne podczas projektowania interfejsów użytkownika, które pokrywają się z częścią mapy. Na przykład na obrazie poniżej mapa jest dołączona do górnej i prawej krawędzi. Widoczne kontrolki i tekst prawny będą wyświetlane wzdłuż krawędzi dopełnionego obszaru, oznaczone na zielono, a mapa będzie dalej wypełniać cały kontener wyświetlany na niebiesko. W tym przykładzie możesz umieścić menu po prawej stronie mapy bez przesłaniania elementów sterujących mapy.

Dopełnienie mapy

Aby dodać dopełnienie do mapy, utwórz obiekt UIEdgeInsets i przekaż go do GMSMapView.Właściwość 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;