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:
- 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
- Anzuzeigende UI-Komponenten wie die Zoomschaltflächen und der Kompass
- Zu aktivierende Touch-Gesten
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:
- Fügen Sie Gebäudepläne direkt zu Google Maps hinzu. Dadurch sind deine Pläne für alle Nutzer von Google Maps verfügbar.
- Sie können einen Gebäudeplan als Boden-Overlay anzeigen lassen. So 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 ein- und ausschalten, 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 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.
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.
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;