In dieser Übersicht wird beschrieben, wie Sie eine Karte konfigurieren, die einer iOS-App mit dem Maps SDK for iOS hinzugefügt wurde.
Übersicht
Nachdem Sie Ihrer App eine Karte hinzugefügt haben, können Sie die ersten Optionen und Laufzeiteinstellungen der Karte konfigurieren. Weitere Informationen zum Hinzufügen eines Kartencontainers finden Sie unter Karte hinzufügen.
Zu den Anfangseinstellungen einer Karte gehören:
- Kameraposition einschließlich Standort, Zoomfaktor, Ausrichtung und Neigung; Weitere Informationen zur Kamerapositionierung finden Sie unter Kamera und Ansicht.
- Die Hintergrundfarbe der Karte.
- Kartentyp
- Die anzuzeigenden UI-Komponenten, z. B. die Zoomschaltflächen und der Kompass.
- Zu aktivierende Touch-Gesten
Sie können diese und einige weitere Einstellungen zur Laufzeit konfigurieren, indem Sie das Objekt GMSMapView
aktualisieren.
Kartenoptionen
Beim Initialisieren der Kartenansicht werden die Konfigurationsoptionen mit GMSMapViewOptions
festgelegt.
Zu den Optionen gehören frame
, camera
, mapID
oder backgroundColor
.
Kartenoptionen | |
---|---|
frame | Wert:
CGRect Der Kartenrahmen. Die Standardeinstellung ist CGRectZero.
|
Kamera | Wert:
GMSCameraPosition Die Standardkameraposition der Karte.
|
mapID | Wert:
GMSMapID Google-Karten-ID. Optionaler Parameter.
|
backgroundColor | Wert:
UIColor Standardmäßig ist UIColor.lightGray festgelegt.
|
Kartenoptionen konfigurieren
Sie können entweder eigene Optionen 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 ein Beispiel für die direkte Weitergabe 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 Dunkelmodus arbeiten oder zwischen Kartenansichten wechseln, kann es hilfreich sein, die Standardfarbe des Kartenhintergrunds zu überschreiben. Dazu können Sie die Eigenschaft „backgroundColor
“ für die Kartenoptionen festlegen.
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 Kartentyp bestimmt die allgemeine Darstellung der Karte. Beispielsweise enthält ein Atlas meist politische Karten, mit denen in erster Linie Grenzen dargestellt werden, 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. Zeigt Straßen, einige von Menschen geschaffene Elemente und wichtige natürliche Elemente wie Flüsse. Die dazugehörigen Labels sind auch sichtbar. Es ist möglich, das Farbschema der Karte auf „Dunkel“, „Hell“ oder „Systemeinstellungen folgen“ festzulegen.
|
Hybrid | Wert:
kGMSTypeHybrid Enthält Satellitenfotodaten mit zusätzlichen Straßenkarten. Auch Straßen- und Elementlabels sind sichtbar. |
Satellit | Wert:
kGMSTypeSatellite Enthält Satellitenfotodaten. Straßen- und Elementlabels 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. Es ist möglich, das Farbschema der Karte auf „Dunkel“, „Hell“ oder „Systemeinstellungen folgen“ festzulegen.
|
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 „Kein“ festgelegt ist. |
Kartentyp ändern
Um den Typ einer Karte festzulegen, weisen Sie der Eigenschaft 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 von Gelände-, normalen und Hybridkarten für denselben Ort:
Indoor-Karten
Bei hohen Zoomstufen zeigt das Maps SDK for iOS Grundrisse für Innenräume wie Flughäfen, Einkaufszentren, große Einzelhandelsgeschäfte und U-Bahnstationen an. Gebäudepläne sind in die Standardkartenkacheln für den Kartentyp „normal“ (kGMSTypeNormal
) eingebunden. Sie werden automatisch aktiviert, wenn der Nutzer heranzoomt, und ausgeblendet, wenn die Karte herausgezoomt wird.
Sie können Indoor-Karten deaktivieren, indem Sie die Eigenschaft indoorEnabled
von GMSMapView
auf NO
setzen.
Swift
mapView.isIndoorEnabled = false
Objective-C
mapView.indoorEnabled = NO;
Alternativ können Sie nur die Ebenenauswahl deaktivieren.
Grundrisse hinzufügen
Gebäudepläne sind an ausgewählten Orten verfügbar. Wenn für ein Gebäude, das Sie in Ihrer Bewerbung hervorheben möchten, keine Grundrissdaten verfügbar sind, haben Sie folgende Möglichkeiten:
- Sie können Gebäudepläne direkt zu Google Maps hinzufügen. So stehen sie allen Nutzern von Google Maps zur Verfügung.
- Sie können einen Gebäudeplan als Boden-Overlay anzeigen lassen. Dann können nur Nutzer deiner App deine Gebäudepläne sehen.
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.
Bedienungshilfen
Standardmäßig sind die Elemente zur erleichteren Bedienung der Karte verborgen. Sie können die Barrierefreiheit aktivieren, indem Sie die accessibilityElementsHidden
-Property von GMSMapView
auf NO
festlegen. Dadurch werden für Overlay-Objekte (z. B. GMSMarker
und Infofenster, GMSPolyline
) Elemente für Barrierefreiheit generiert.
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 „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 die Property 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 zuzulassen. 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 bei Nahaufnahmen 3D-Gebäude zu sehen, wie im Bild von Seattle, Washington unten.
![Eine 3D-Karte der Gebäude in Seattle, Washington.](https://developers-dot-devsite-v2-prod.appspot.com/static/maps/documentation/ios-sdk/images/ios-3d-buildings.png?authuser=3&hl=de)
Sie können 3D-Gebäude deaktivieren, indem Sie das entsprechende GMSMapView
-Attribut in Swift oder Objective-C festlegen, wie unten dargestellt:
Swift
mapView.isBuildingsEnabled = false
Objective-C
[mapView setBuildingsEnabled:NO];
Karte mit Innenrand versehen
Eine Google-Karte soll die gesamte durch die GMSMapView
definierte Region ausfüllen.
Die Dimensionen der Ansicht definieren mehrere Aspekte des Erscheinungsbildes und Verhaltens der Karte:
- 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 die Kartensteuerung und Kamerabewegung verhalten sich so, als wenn die Karte in einem kleineren Bereich platziert worden wäre. Das führt zu folgenden Änderungen:
- Kamerabewegungen über API-Aufrufe oder die Betätigung von Schaltflächen (z.B. der Kompassschaltfläche oder der Schaltfläche „Mein Standort“) erfolgen relativ zum abgesetzten Bereich.
GMSMapView
.projection
gibt eine Projektion zurück, die nur die umrahmte Region enthält.- Die UI-Steuerelemente sind um die angegebene Anzahl von Punkten vom Rand des Containers versetzt.
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 Hinweise werden an den Rändern des mit Abstand versehenen Bereichs angezeigt (grün). Die Karte füllt weiterhin den gesamten Container aus (blau). In diesem Beispiel könnten Sie ein Menü auf der rechten Seite der Karte schweben lassen, ohne die Kartensteuerung zu verdecken.
Wenn Sie Ihrer Karte einen Abstand hinzufügen möchten, erstellen Sie ein UIEdgeInsets
-Objekt und übergeben Sie es an das GMSMapView
.padding
-Attribut.
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;
Kartenfarbschema
Für Karten vom Typ „Normal“ und „Terrain“ können Sie das Kartenfarbschema auf „Dunkel“, „Hell“ oder „Aktuelle Systemeinstellungen“ festlegen. So können Sie das Kartenfarbschema beispielsweise je nach Tageszeit oder Verwendung des Geräts drinnen oder draußen verdunkeln oder aufhellen.
Verwenden Sie GMSMapView
overrideUserInterfaceStyle:
, um das Kartenfarbschema festzulegen und zu 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;