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 Ihrer App eine Karte hinzugefügt haben, können Sie Anfangsoptionen und Laufzeiteinstellungen für die Karte konfigurieren. Weitere Informationen finden Sie unter Karte hinzufügen.

Zu den Anfangseinstellungen einer Karte gehören:

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

Kartenoptionen

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

Kartenoptionen
Rahmen
Wert: CGRect
Der Kartenrahmen. Die Standardeinstellung ist CGRectZero.
kamera
Wert: GMSCameraPosition
Die standardmäßige Kameraposition der Karte.
mapID
Wert: GMSMapID
Google mapID. Optionaler Parameter.
backgroundColor
Wert: UIColor
Standardeinstellung: UIColor.lightGray

Kartenoptionen konfigurieren

Sie können entweder eigene Optionsattribute festlegen oder ein instanziiertes 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 ist 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

Beim Arbeiten im dunklen Modus oder beim Wechseln zwischen Kartenansichten kann es hilfreich sein, die Standardhintergrundfarbe der Karte zu überschreiben. Dazu legen Sie die Eigenschaft backgroundColor der 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 ihre Gesamtdarstellung der Karte. Beispielsweise enthält ein Atlas in der Regel politische Karten mit Schwerpunkt auf der Darstellung von Grenzen, während auf Straßenkarten vor allem die Straßen einer Stadt oder Region zu sehen sind. Das Maps SDK for iOS bietet die folgenden Kartentypen:

Kartentyp
Normal
Wert: kGMSTypeNormal
Typische Straßenkarte. Straßen, einige von Menschen geschaffene Merkmale und wichtige Landschaftsmerkmale wie Flüsse werden angezeigt. Die dazugehörigen Labels sind auch sichtbar. Unterstützt das Farbschema der Karte auf „dunkel“, „hell“ oder entsprechend den Systemeinstellungen.
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. Labels für Straßen und Elemente 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. Unterstützt das Farbschema der Karte auf „dunkel“, „hell“ oder entsprechend den Systemeinstellungen.
Ohne
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

Weisen Sie dem Attribut GMSMapView.mapType einen neuen Wert zu, um den Typ einer Karte festzulegen. 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 von Gelände-, normalen und hybriden Karten für denselben Standort:

Indoor-Karten

Bei hohen Zoomstufen werden im Maps SDK for iOS Gebäudepläne für Innenbereiche wie Flughäfen, Einkaufszentren, große Geschäfte und Bahnhöfe angezeigt. Indoor-Gebäudepläne sind beim Kartentyp „Normal“ (kGMSTypeNormal) in die Standardkartenkacheln integriert. Sie werden automatisch aktiviert, wenn der Nutzer heranzoomt, und werden beim Herauszoomen aus der Karte ausgeblendet.

Du kannst Indoor-Karten deaktivieren, indem du das Attribut indoorEnabled von GMSMapView auf NO setzt.

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 App 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 ein- und ausschalten, indem Sie die Methode trafficEnabled aufrufen. Das folgende Beispiel zeigt, wie die Verkehrsebene auf einer Karte aussehen könnte.

Eine Google-Karte mit der Verkehrsebene

Bedienungshilfen

Standardmäßig sind die Elemente zur erleichteren Bedienung der Karte verborgen. Wenn du die Barrierefreiheit aktivieren möchtest, setze das Attribut accessibilityElementsHidden von GMSMapView auf NO. Dadurch werden Bedienungshilfen für Overlay-Objekte (wie GMSMarker und Infofenster, GMSPolyline usw.) generiert.

Swift

mapView.accessibilityElementsHidden = false
      

Objective-C

mapView.accessibilityElementsHidden = NO;
      

Diese Eigenschaft entspricht dem informellen UIAccessibility-Protokoll, außer 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 „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 bereitgestellt. Diese Property 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 es 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 in der Abbildung von Seattle, Washington zu sehen ist.

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

Sie können die 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 Maps-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 Kameraziel spiegelt die Mitte des abgesetzten Bereichs wider.
  • 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-Property. Die Karte füllt weiterhin den gesamten Container aus, aber die Positionierung von Text und Steuerelementen, Touch-Gesten für die Karte sowie Kamerabewegungen verhalten sich so, als wäre sie in einem kleineren Bereich platziert worden. Daraus ergeben sich folgende Änderungen:

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

Padding kann beim Entwerfen von Benutzeroberflächen hilfreich sein, die sich mit einem Teil der Karte überschneiden. Im Bild hat die Karte beispielsweise am oberen und rechten Rand einen Innenrand. Sichtbare Kartensteuerelemente und rechtliche Hinweise werden am Rand des abgesetzten Bereichs (grün) angezeigt. Die Karte füllt weiterhin den gesamten Container (blau) aus. In diesem Beispiel können Sie rechts auf der Karte ein Menü einblenden, ohne die Kartensteuerelemente zu verdecken.

Mit Innenrand versehene Karte

Wenn Sie Ihrer Karte einen Innenrand hinzufügen möchten, erstellen Sie ein UIEdgeInsets-Objekt und übergeben Sie es an die GMSMapView.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;
      

Farbschema der Karte

Für Karten vom Typ „Normal“ und „Gelände“ können Sie das Farbschema der Karte auf „dunkel“ oder „hell“ festlegen oder die aktuellen Systemeinstellungen verwenden. Sie können beispielsweise das Farbschema der Karte je nach Tageszeit oder der Verwendung im Innen- oder Außenbereich des Geräts abdunkeln oder aufhellen.

Mit GMSMapView overrideUserInterfaceStyle: können Sie das Farbschema der Karte festlegen und aktualisieren.

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;