Karte konfigurieren

Mit Sammlungen den Überblick behalten Sie können Inhalte basierend auf Ihren Einstellungen speichern und kategorisieren.

Plattform auswählen: Android iOS

Hier erfahren Sie, wie Sie eine Karte konfigurieren, die mit dem Maps SDK for iOS 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, Ausrichtung 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

Zur Laufzeit können Sie diese und einige zusätzliche Einstellungen konfigurieren. Aktualisieren Sie dazu das Objekt GMSMapView.

Kartentypen

Sie können die Karten mit einem von verschiedenen Kartentypen benutzerdefiniert gestalten. Der Kartentyp bestimmt die Gesamtdarstellung der Karte. Beispielsweise enthält ein Atlas meist politische Karten mit dem Schwerpunkt auf der Darstellung von Grenzen, während Straßenkarten alle Straßen einer Stadt oder Region zeigen. 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 ebenfalls sichtbar.
Hybrid
Wert: kGMSTypeHybrid
Enthält Satellitenfotodaten mit zusätzlichen Straßenkarten. Die Straßen- und Feature-Labels sind ebenfalls 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, Umrisslinien und Labels sowie perspektivische Schattierungen. 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 nützlich. Die Anzeige von Verkehrsdaten wird deaktiviert, wenn der Kartentyp auf „Keine“ festgelegt ist.

Kartentyp ändern

Wenn Sie den Typ einer Karte festlegen möchten, weisen Sie der Property 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 zeigt einen Vergleich der Geländekarten, der normalen Karten und der Hybridkarten für denselben Standort:

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 Haltestellen an. Indoor-Gebäudepläne sind in die Standardkartenkacheln für den Kartentyp „Normal“ (kGMSTypeNormal) eingebunden und werden automatisch aktiviert, wenn der Nutzer heranzoomt, und ausgeblendet, wenn er wieder herauszoomt.

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

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 hinzufügen

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:

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. Du kannst Bedienungshilfen aktivieren, indem du das Attribut accessibilityElementsHidden von GMSMapView auf NO setzt. Dadurch werden Bedienungshilfen für Overlay-Objekte wie GMSMarker und Infofenster, GMSPolyline usw. generiert.

Swift

mapView.accessibilityElementsHidden = false
      

Objective-C

mapView.accessibilityElementsHidden = NO;
      

Dieses Attribut entspricht dem informellen UIAccessibility-Protokoll, mit dem Unterschied, dass der Standardwert im Maps SDK for iOS YES ist.

Mein Standort

Standardmäßig werden auf der Karte keine Standortdaten angezeigt. Du kannst den blauen Punkt „Mein Standort“ und die Kompassrichtung aktivieren, indem du myLocationEnabled auf GMSMapView setzt.

Swift

mapView.isMyLocationEnabled = true
      

Objective-C

mapView.myLocationEnabled = YES;
      

Wenn Sie dieses Feature aktivieren, wird außerdem 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, Zugriff auf diese Daten zu gewähren. In diesem Fall ist es 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 auf dem Bild von Seattle, Washington unten dargestellt.

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

Wenn Sie das 3D-Gebäude deaktivieren möchten, können Sie in Swift oder Objective-C wie unten gezeigt das entsprechende GMSMapView-Attribut festlegen:

Swift

mapView.isBuildingsEnabled = false
      

Objective-C

[mapView setBuildingsEnabled:NO];
      

Karte mit Innenrand versehen

Eine Google Maps-Karte füllt standardmäßig den gesamten Bereich aus, der von GMSMapView definiert wird. 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 für die Kartensteuerung und Kamerabewegung 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 Kompassschaltfläche 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 vom Rand des Containers um die angegebene Anzahl von Punkten 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.

Mit Innenrand versehene Karte

Erstellen Sie ein UIEdgeInsets-Objekt und übergeben Sie es an GMSMapView, um einen Innenrand für Ihre Karte 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;