Hier wird beschrieben, wie Sie mit dem Maps SDK for iOS eine Karte konfigurieren, die einer iOS-App hinzugefügt wurde.
Übersicht
Nachdem Sie Ihrer App eine Karte hinzugefügt haben, können Sie die Anfangs- und die Laufzeiteinstellungen konfigurieren. Weitere Informationen finden Sie unter Karte hinzufügen.
Zu den Anfangseinstellungen einer Karte gehören:
- Kameraposition, einschließlich Standort, Zoomfaktor, Lage und Neigung; weitere Informationen zur Positionierung der Kamera finden Sie unter Kamera und Ansicht
- Kartentyp
- Anzuzeigende UI-Elemente wie die Zoomschaltflächen und der Kompass
- Zu aktivierende Touch-Gesten
Diese und weitere Einstellungen können Sie während der Laufzeit konfigurieren, indem Sie das GMSMapView
-Objekt aktualisieren.
Kartentypen
Sie können die Karten mit einem von verschiedenen Kartentypen benutzerdefiniert gestalten. Durch den Typ einer Karte wird die Gesamtdarstellung der Karte bestimmt. Beispielsweise enthält ein Atlas normalerweise politische Karten mit Schwerpunkt auf Grenzen und Straßenkarten, auf denen alle Straßen für eine Stadt oder Region angezeigt werden. 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 Naturmerkmale wie Flüsse werden angezeigt. Die dazugehörigen Labels sind ebenfalls sichtbar.
|
Hybrid | Wert:
kGMSTypeHybrid Enthält Satellitenfotodaten mit zusätzlichen Straßenkarten. Labels für Straßen und Features sind ebenfalls sichtbar. |
Satellit | Wert:
kGMSTypeSatellite Enthält Satellitenfotodaten. Straßen- und Merkmalslabels sind nicht sichtbar.
|
Gelände | Wert:
kGMSTypeTerrain Enthält topografische Daten. Die Karte enthält Farben, Konturlinien und -labels sowie Perspektivenschattierung. Außerdem werden einige Straßen und Labels dargestellt.
|
– | Wert:
kGMSTypeNone Enthält keine Kartenkacheln. Die Kacheln mit Grundkarten werden nicht wiedergegeben. Dieser Modus ist in Verbindung mit Kachelebenen von Vorteil. Die Anzeige von Verkehrsdaten wird deaktiviert, wenn der Kartentyp auf „Keine“ gesetzt ist. |
Kartentyp ändern
Wenn Sie den Typ einer Karte festlegen möchten, weisen Sie der Eigenschaft GMSMapView.mapType
einen neuen Wert zu. Beispiel: Anzeigen des Kartentyps „Satellit“:
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;
Die Auswahl unten enthält einen Vergleich der Gelände-, normalen und Hybridkarten 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 Nutzer heranzoomen, und ausgeblendet werden.
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 auch nur die Steuerung für die Stockwerkauswahl deaktivieren.
Gebäudepläne werden hinzugefügt
Gebäudepläne sind für ausgewählte Standorte 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:
- Du kannst Gebäudepläne direkt zu Google Maps hinzufügen. Ihre Pläne stehen dann allen Nutzern von Google Maps zur Verfügung.
- Sie können einen Gebäudeplan als Boden-Overlay anzeigen lassen. So können nur Nutzer Ihrer Anwendung 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.
Barrierefreiheit
Standardmäßig sind die Elemente zur erleichteren Bedienung der Karte verborgen. Sie können Bedienungshilfen aktivieren, indem Sie die Eigenschaft accessibilityElementsHidden
von GMSMapView
auf NO
setzen. Dadurch werden Bedienungshilfen für Overlay-Objekte (z. B. GMSMarker
und Infofenster, GMSPolyline
) 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“ aktivieren, indem Sie myLocationEnabled
auf GMSMapView
setzen.
Swift
mapView.isMyLocationEnabled = true
Objective-C
mapView.myLocationEnabled = YES;
Wenn Sie dieses Feature aktivieren, wird auch der aktuelle Standort des Nutzers über das Attribut myLocation
angegeben. Dieses Attribut 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 sie null.
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 zum Beispiel unten in Seattle, Washington.

Wenn Sie die 3D-Gebäude deaktivieren möchten, legen Sie die entsprechende GMSMapView
-Property in Swift oder Objective-C fest, 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 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 entlang der Kartenaußenseiten 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 Kartensteuerung 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. der Kompassanzeige oder der Schaltfläche „Mein Standort“) erfolgen relativ zum abgesetzten Bereich.
GMSMapView
.projection
gibt eine Projektion zurück, die nur den abgesetzten Bereich enthält.- UI-Steuerelemente werden um die angegebene Anzahl von Punkten vom Rand des Containers entfernt verschoben.
Ein Innenrand kann beim Entwerfen von UI-Elementen hilfreich sein, die sich mit einem Teil der Karte überschneiden. Auf dem Bild unten wurden zum Beispiel Innenränder entlang des oberen und rechten Rands der Karte festgelegt. Sichtbare Kartensteuerelemente und rechtliche Informationen werden entlang der Ränder des abgesetzten Bereichs (grün) angezeigt. Die Karte füllt aber weiterhin den gesamten Container (blau) aus. In diesem Beispiel kann rechts auf der Karte ein Menü eingeblendet werden, ohne die Kartensteuerelemente zu verdecken.
Erstellen Sie ein UIEdgeInsets
-Objekt und übergeben Sie es an den GMSMapView
, um der Karte einen Innenrand hinzuzufügen.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;