Karte konfigurieren

Plattform auswählen:Android iOS

In dieser Übersicht wird beschrieben, wie Sie mit dem Maps SDK for iOS eine Karte konfigurieren, die einer iOS-App hinzugefügt wurde.

Überblick

Nachdem Sie der App eine Karte hinzugefügt haben, können Sie Anfangsoptionen und Laufzeiteinstellungen der Karte konfigurieren. Weitere Informationen finden Sie unter Karte hinzufügen.

Zu den Anfangseinstellungen einer Karte gehören:

Während der Laufzeit können Sie diese und einige zusätzliche Einstellungen konfigurieren, indem Sie das Objekt GMSMapView aktualisieren.

Kartenoptionen

Beim Initialisieren der Kartenansicht werden Konfigurationsoptionen mit GMSMapViewOptions festgelegt. Zu den Optionseigenschaften gehören frame, camera, mapID oder backgroundColor.

Kartenoptionen
Frame
Wert: CGRect
Kartenrahmen Die Standardeinstellung ist CGRectZero.
kamera
Wert: GMSCameraPosition
Die Standardposition der Kartenkamera.
mapID
Wert: GMSMapID
Google-Karten-ID Optionaler Parameter.
backgroundColor
Wert: UIColor
Die Standardeinstellung ist „UIColor.lightGray“.

Kartenoptionen konfigurieren

Sie können entweder eigene Optionseigenschaften festlegen oder eine instanziierte GMSMapViewOptions mit Standardwerten direkt an GMSMapView übergeben.

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];

Hier sehen Sie ein Beispiel für die direkte Übergabe eines GMSMapViewOptions-Objekts mit Standardwerten an 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

Hintergrundfarbe konfigurieren

Wenn Sie im dunklen Modus arbeiten oder zwischen Kartenansichten wechseln, kann es hilfreich sein, die Standardhintergrundfarbe der Karte zu überschreiben. Dazu legen Sie die Eigenschaft backgroundColor für die Kartenoptionen fest.

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];

Kartentypen

Sie können die Karten mit einem von verschiedenen Kartentypen benutzerdefiniert gestalten. Der Typ einer Karte bestimmt die Gesamtdarstellung der Karte. Ein Atlas enthält beispielsweise in der Regel politische Karten, bei denen der Schwerpunkt auf der Darstellung von Grenzen liegt, und Straßenkarten, die alle Straßen einer Stadt oder Region zeigen. Mit dem Maps SDK for iOS sind die folgenden Kartentypen verfügbar:

Kartentyp
Normal
Wert: kGMSTypeNormal
Typische Straßenkarte. Straßen, einige von Menschen geschaffene Elemente und wichtige natürliche Elemente wie Flüsse werden angezeigt. Die dazugehörigen Labels sind auch sichtbar.
Hybrid
Wert: kGMSTypeHybrid
Enthält Satellitenfotodaten mit zusätzlichen Straßenkarten. Auch Labels für Straßen und Elemente sind sichtbar.
Satellit
Wert: kGMSTypeSatellite
Enthält Satellitenfotodaten. Die Labels von Straßen und Elementen sind nicht sichtbar.
Gelände
Wert: kGMSTypeTerrain
Enthält topografische Daten. Die Karte enthält Farben, Höhenlinien und Labels sowie perspektivische Schattierungen. Außerdem werden einige Straßen und Labels dargestellt.
Keine
Wert: kGMSTypeNone
Enthält keine Kartenkacheln. Die Kacheln mit Grundkarten werden nicht wiedergegeben. Dieser Modus ist in Verbindung mit Kachelebenen nützlich. Die Anzeige von Verkehrsdaten ist deaktiviert, wenn der Kartentyp auf „Keine“ festgelegt ist.

Kartentyp ändern

Um den Typ einer Karte festzulegen, weisen Sie dem Attribut GMSMapView.mapType einen neuen Wert zu. Beispiel: Anzeigen des Kartentyps „Satellit“:

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;

Die folgende Auswahl zeigt einen Vergleich der Kartentypen „Gelände“, „Normal“ und „Hybrid“ für denselben Standort:

Indoor-Karten

Bei hohen Zoomstufen zeigt das Maps SDK for iOS Gebäudepläne für Innenbereiche wie z. B. Flughäfen, Einkaufszentren, große Geschäfte und Bahnhöfe an. Indoor-Gebäudepläne sind in die Standardkartenkacheln für den Kartentyp „Normal“ (kGMSTypeNormal) integriert und werden automatisch aktiviert, wenn der Nutzer heranzoomt, und ausgeblendet, wenn die Karte herausgezoomt wird.

Sie können Indoor-Karten deaktivieren, indem Sie die indoorEnabled-Eigenschaft von GMSMapView auf NO setzen.

Swift

mapView.isIndoorEnabled = false
      

Objective-C

mapView.indoorEnabled = NO;
      

Alternativ können Sie auch nur das Steuerelement für die Etagenauswahl deaktivieren.

Gebäudepläne hinzufügen

Gebäudepläne sind an ausgewählten Standorten verfügbar. Wenn für ein Gebäude, das Sie in Ihrer Anwendung hervorheben möchten, keine Gebäudeplandaten verfügbar sind, haben Sie folgende Möglichkeiten:

Verkehrsebene

Du kannst den Nutzern die Möglichkeit geben, eine Karte mit darüber gelagerten Informationen zur Verkehrsdichte zu sehen. Das ist eine visuelle Zusammenfassung der lokalen Verkehrssituation. Sie können die Verkehrsebene aktivieren und deaktivieren, indem Sie die Methode trafficEnabled aufrufen. Das folgende Beispiel zeigt, wie die Verkehrsebene auf einer Karte aussehen könnte.

Eine Google-Karte mit
der Verkehrslagenebene

Barrierefreiheit

Standardmäßig sind die Elemente zur erleichteren Bedienung der Karte verborgen. Du kannst Bedienungshilfen aktivieren, indem du die Eigenschaft accessibilityElementsHidden von GMSMapView auf NO setzt. Dadurch werden Bedienungshilfen für Overlay-Objekte generiert (z. B. GMSMarker und Infofenster, GMSPolyline usw.).

Swift

mapView.accessibilityElementsHidden = false
      

Objective-C

mapView.accessibilityElementsHidden = NO;
      

Diese Eigenschaft entspricht dem informellen UIAccessibility-Protokoll, mit der Ausnahme, dass der Standardwert im Maps SDK for iOS YES ist.

Mein Standort

Standardmäßig werden auf der Karte keine Standortdaten angezeigt. Sie können den blauen Punkt für „Mein Standort“ und die Kompassrichtung aktivieren, indem Sie myLocationEnabled auf GMSMapView setzen.

Swift

mapView.isMyLocationEnabled = true
      

Objective-C

mapView.myLocationEnabled = YES;
      

Wenn Sie diese Funktion aktivieren, wird der aktuelle Standort des Nutzers über das Attribut myLocation angegeben. Diese Eigenschaft ist möglicherweise nicht sofort verfügbar, z. B. wenn der Nutzer von iOS aufgefordert wird, den Zugriff auf diese Daten zu erlauben. In diesem Fall ist das nil.

Swift

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

Objective-C

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

3D-Gebäude

In vielen Städten sind in der Nahansicht 3D-Gebäude zu sehen, wie unten im Bild von Seattle, Washington, zu sehen ist.

Eine 3D-Karte mit Gebäuden in Seattle, Washington.

Sie können 3D-Gebäude deaktivieren, indem Sie die entsprechende GMSMapView-Eigenschaft in Swift oder Objective-C festlegen, wie unten gezeigt:

Swift

mapView.isBuildingsEnabled = false
      

Objective-C

[mapView setBuildingsEnabled:NO];
      

Karte mit Innenrand versehen

Eine Google-Karte füllt standardmäßig den gesamten durch GMSMapView definierten Bereich aus. Verschiedene Aspekte der Darstellung und des Verhaltens der Karte werden durch die Abmessungen der Ansicht definiert:

  • Das Ziel der Kamera entspricht der Mitte des abgesetzten Bereichs.
  • Kartensteuerelemente werden relativ zu den Rändern der Karte positioniert.
  • Rechtliche Informationen wie Urheberrechtsangaben oder das Google-Logo werden am unteren Rand der Karte angezeigt.

Mithilfe von GMSMapView können Sie an der Kartenaußenseite einen Innenrand hinzufügen.padding-Attribut. Die Karte füllt weiterhin den gesamten Container aus, aber die Positionierung von Text und Steuerelementen, Touch-Gesten für Karten und Kamerabewegungen verhalten sich so, als wäre die Karte in einem kleineren Bereich platziert worden. Das führt zu folgenden Änderungen:

  • Kamerabewegungen über API-Aufrufe oder die Betätigung von Schaltflächen (z.B. des Kompasses, mein Standort) erfolgen relativ zum abgesetzten Bereich.
  • GMSMapView.projection gibt eine Projektion zurück, die nur den abgesetzten Bereich enthält.
  • UI-Steuerelemente sind um die angegebene Anzahl von Punkten vom Rand des Containers entfernt platziert.

Padding kann beim Entwerfen von Benutzeroberflächen hilfreich sein, die sich mit einem Teil der Karte überschneiden. Auf dem Bild hat die Karte beispielsweise entlang des oberen und rechten Rands einen Innenrand. Sichtbare Kartensteuerelemente und rechtliche Informationen werden entlang der Ränder des abgesetzten Bereichs (grün) angezeigt, während die Karte weiterhin den gesamten Container (blau) ausfüllt. In diesem Beispiel kann rechts auf der Karte ein Menü eingeblendet werden, ohne die Kartensteuerelemente zu verdecken.

Mit Innenrand versehene Karte

Wenn Sie der Karte einen Innenrand hinzufügen möchten, erstellen Sie ein UIEdgeInsets-Objekt und übergeben Sie es an das GMSMapView-Objekt.padding-Property.

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;