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 der Karte konfigurieren. Weitere Informationen finden Sie unter Karte hinzufügen.
Zu den Anfangseinstellungen einer Karte gehören:
- Kameraposition einschließlich Standort, Zoomfaktor, Ausrichtung und Neigung; Weitere Informationen zur Positionierung der Kamera 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
Während der Laufzeit können Sie diese und einige zusätzliche Einstellungen konfigurieren, indem Sie das GMSMapView
-Objekt aktualisieren.
Kartenoptionen
Beim Initialisieren der Kartenansicht werden Konfigurationsoptionen mit GMSMapViewOptions
festgelegt. Zu den Optionsattributen gehören frame
, camera
, mapID
, backgroundColor
oder screen
.
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.
|
Bildschirm | Wert:
UIScreen Für CarPlay erforderlich. Impliziert einen Standardwert für den Hauptbildschirm.
|
Kartenoptionen konfigurieren
Sie können entweder eigene Optionsattribute festlegen oder einen instanziierten 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];
Im folgenden Beispiel wird ein GMSMapViewOptions
-Objekt mit Standardwerten direkt an GMSMapView
übergeben.
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. Legen Sie dazu 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 ist entscheidend für ihre Gesamtdarstellung der Karte. Beispielsweise enthält ein Atlas meist politische Karten, auf denen hauptsächlich Grenzen dargestellt werden, während Straßenkarten enthalten sind, auf denen alle Straßen einer Stadt oder Region zu sehen sind. Im Maps SDK for iOS sind die folgenden Kartentypen verfügbar:
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.
|
Hybrid | Wert:
kGMSTypeHybrid Enthält Satellitenfotodaten mit zusätzlichen Straßenkarten. Die Labels für Straßen und Elemente sind ebenfalls 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
Wenn Sie den Typ einer Karte festlegen möchten, 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;
In der folgenden Auswahl werden Gelände-, normale und Hybridkarten für denselben Standort verglichen:
Indoor-Karten
Bei hohen Zoomstufen zeigt das Maps SDK for iOS Gebäudepläne für Innenbereiche wie Flughäfen, Einkaufszentren, große Geschäfte und Bahnhöfe an. Gebäudepläne sind in die Standardkartenkacheln für den Kartentyp „Normal“ (kGMSTypeNormal
) integriert. Sie werden automatisch aktiviert, wenn der Nutzer heranzoomt, und werden beim Herauszoomen aus der Karte ausgeblendet.
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 App hervorheben möchten, keine Gebäudeplandaten verfügbar sind, haben Sie folgende Möglichkeiten:
- Sie können Gebäudepläne direkt zu Google Maps hinzufügen. Dadurch sind Ihre Pläne für alle Google Maps-Nutzer verfügbar.
- Sie können einen Gebäudeplan als Boden-Overlay anzeigen lassen. So können nur Nutzer Ihrer App Ihre 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. Wenn du die Bedienungshilfen aktivieren möchtest, setze die Eigenschaft accessibilityElementsHidden
von GMSMapView
auf NO
. 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 dieses Feature 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, Zugriff auf diese Daten zu gewähren. 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 der Nahansicht sind bei vielen Städten 3D-Gebäude zu sehen, wie unten im Bild von Seattle, Washington, zu sehen.

Sie können die 3D-Gebäudedarstellung deaktivieren, indem Sie die entsprechende GMSMapView
-Property 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 füllt standardmäßig den gesamten von 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
-Property. Die Karte füllt weiterhin den gesamten Container aus, aber die Positionierung von Text und Steuerelementen, Touch-Gesten zur Karte und Kamerabewegungen verhalten sich so, als wäre die Karte in einem kleineren Bereich platziert worden. Das führt zu den folgenden Änderungen:
- Kamerabewegungen mithilfe von API-Aufrufen oder dem Drücken von Schaltflächen (z.B. der Kompassschaltfläche oder der Schaltfläche „Mein Standort“) sind 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 wurden zum Beispiel Innenabstände vom oberen und rechten Rand der Karte festgelegt. Sichtbare Kartensteuerelemente und rechtliche Informationen werden entlang des Rands des abgesetzten Bereichs (grün) angezeigt, während die Karte weiterhin den gesamten Container (blau) füllt. In diesem Beispiel können Sie rechts auf der Karte ein Menü einblenden, ohne die Kartensteuerelemente zu verdecken.
Wenn Sie der Karte einen Innenrand hinzufügen möchten, erstellen Sie ein UIEdgeInsets
-Objekt und übergeben Sie es an den 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;