Kamera und Ansicht

Mit Sammlungen den Überblick behalten Sie können Inhalte basierend auf Ihren Einstellungen speichern und kategorisieren.
Plattform auswählen: Android iOS JavaScript

Mit dem Maps SDK for iOS können Sie die Nutzeransicht der Karte ändern, indem Sie die Kamera der Karte ändern.

Mit dem Maps SDK for iOS können Nutzer die Karten neigen und drehen, um sie an eine für ihren Kontext geeignete Ausrichtung anzupassen. Bei jeder Zoomstufe können Nutzer die Karte schwenken oder die Perspektive mit sehr geringer Latenz ändern.

Änderungen an der Kamera haben keine Auswirkungen auf Markierungen, Polylinien oder andere Grafiken, die du hinzugefügt hast. Es kann aber sinnvoll sein, diese Ergänzungen an die neue Ansicht anzupassen.

Kartenansicht

Das Maps SDK for iOS nutzt die Mercator-Projektion, um die Erdoberfläche (eine Kugel) auf dem Bildschirm Ihres Geräts (eine flache Ebene) darzustellen.

Kameraposition

Die Kartenansicht wird so modelliert, als wäre eine Kamera auf eine ebene Fläche ausgerichtet. Die Position der Kamera (und damit das Rendern der Karte) wird durch folgende Eigenschaften festgelegt: Ziel (Breiten- und Längengrad), Lage, Anzeigewinkel und Zoom.

Diagramm der Kameraeigenschaften

Ziel (Ort)

Das Kameraziel ist der Standort in der Kartenmitte, angegeben in Breiten- und Längengraden.

Der Breitengrad kann zwischen -85 und 85 Grad liegen. Werte ober- oder unterhalb dieses Bereichs werden auf den nächstgelegenen Wert innerhalb des Bereichs gesetzt. Wird z. B. 100 als Breitengrad angeben, wird der Wert auf 85 gesetzt. Der Längengrad kann zwischen -180 bis 180 Grad liegen. Werte ober- oder unterhalb dieses Bereichs werden so umgerechnet, dass sie in den Bereich fallen. Bei 480, 840 und 1.200 wird der Wert z. B. immer auf 120 Grad gesetzt.

Lage (Ausrichtung)

Die Lage der Kamera gibt die Kompassrichtung an. Sie wird in Grad vom geografischen Norden gemessen, der dem oberen Rand der Karte entspricht. Wenn Sie eine vertikale Linie von der Kartenmitte zum oberen Rand der Karte ziehen, entspricht die Lage der Ausrichtung der Kamera (gemessen in Grad) relativ zum geografischen Norden.

Eine Lage von 0 bedeutet, dass der obere Rand der Karte dem geografischen Norden entspricht. Bei 90 zeigt er nach Osten (90 Grad auf einem Kompass). Ein Wert von 180 bedeutet, dass der obere Rand der Karte nach Süden zeigt.

Mit der Google Maps API lässt sich die Lage einer Karte ändern. Autofahrer drehen eine Straßenkarte häufig so, dass sie ihrer Fahrtrichtung entspricht, während Wanderer Karte und Kompass zumeist so halten, dass die vertikale Linie nach Norden zeigt.

Neigung (Blickwinkel)

Die Neigung definiert die Kameraposition auf einem Bogen, der direkt über der Kartenmitte verläuft. Sie wird in Grad Abstand vom Nadir (Richtung von der Kamera direkt nach unten) gemessen. Ein Wert von 0 entspricht einer Kamera, die gerade nach unten gerichtet ist. Bei Werten über 0 ist die Kamera um die angegebene Gradzahl auf den Horizont ausgerichtet. Wenn Sie den Blickwinkel ändern, wird die Karte perspektivisch dargestellt. Weit entfernte Objekte erscheinen dann kleiner und nahe Objekte größer. Das wird in den folgenden Abbildungen verdeutlicht.

In den untenstehenden Bildern beträgt der Blickwinkel 0 Grad. Das ist im ersten Bild schematisch dargestellt: Position 1 ist die Kameraposition und Position 2 die aktuelle Kartenposition. Die daraus resultierende Karte ist nachfolgend dargestellt.

Screenshot einer Karte, bei der die Kamera in einem Blickwinkel von 45 Grad mit Zoomstufe 18 positioniert ist
Karte aus dem Standard-Blickwinkel der Kamera
Diagramm zur Darstellung der Standardposition der Kamera: direkt über der Kartenposition, in einem Winkel von 0 Grad
Standard-Blickwinkel der Kamera

In den Bildern unten beträgt der Blickwinkel 45 Grad. Die Kamera bewegt sich auf halber Strecke entlang eines Bogens zwischen Zenit (0 Grad) und Boden (90 Grad) auf Position 3. Sie zeigt immer noch auf den Kartenmittelpunkt, allerdings ist jetzt der Bereich sichtbar, der von der Linie an Position 4 dargestellt wird.

Screenshot einer Karte, bei der die Kamera in einem Blickwinkel von 45 Grad mit Zoomfaktor 18 positioniert ist
Karte im Blickwinkel von 45 Grad
Diagramm zur Darstellung eines Kamerablickwinkels von 45 Grad weiterhin mit Zoomstufe 18
Kamera-Blickwinkel von 45 Grad

Die Karte im Screenshot ist zwar weiterhin auf den gleichen Punkt zentriert wie die ursprüngliche Karte, allerdings sind jetzt oben auf der Karte mehr Objekte zu sehen. Wenn Sie den Winkel auf über 45 Grad vergrößern, erscheinen Objekte zwischen Kamera und Kartenposition proportional größer, während Objekte jenseits der Kartenposition kleiner dargestellt werden. Hierdurch entsteht ein dreidimensionaler Effekt.

Zoom

Die Zoomstufe der Kamera bestimmt die Skalierung der Karte. Bei größeren Zoomstufen sind auf dem Bildschirm mehr Details zu sehen, bei kleineren Zoomstufen erhalten Sie einen größeren Überblick. Bei Zoomstufe 0 hat die Karte einen Maßstab, bei dem die gesamte Erde eine Breite von ca. 256 Punkten hat.

Wenn man die Zoomstufe um 1 erhöht, verdoppelt sich die Breite der Erde auf dem Bildschirm. Beträgt die Breite der Erde bei Zoomstufe N also ca. 256 × 2N Punkte. Bei Zoomstufe 2 beträgt die Erde beispielsweise etwa 1.024 Punkte.

Die Zoomstufe muss nicht als ganze Zahl angegeben werden. Der für eine Karte zulässige Zoomstufenbereich hängt von einer Reihe von Faktoren ab, z. B. Ziel, Kartentyp und Bildschirmgröße. Jede Zahl außerhalb des Bereichs wird in den nächsten gültigen Wert konvertiert. Das kann entweder die minimale oder die maximale Zoomstufe sein. Die folgende Liste enthält die ungefähre Detailebene, die Sie bei der jeweiligen Zoomstufe wahrscheinlich sehen können:

  • 1: Welt
  • 5: Landmasse/Kontinent
  • 10: Stadt
  • 15: Straßen
  • 20: Gebäude
Die folgenden Bilder zeigen die visuelle Darstellung bei unterschiedlichen Zoomstufen.
Screenshot einer Karte mit Zoomstufe 5
Karte mit Zoomstufe 5
Screenshot einer Karte mit Zoomstufe 15
Karte mit Zoomstufe 15
Screenshot einer Karte mit Zoomstufe 20
Karte mit Zoomstufe 20

Anfangsposition der Kamera festlegen

Legen Sie die Anfangsposition der Kamera mit dem Objekt GMSCameraPosition fest. Damit können Sie Breiten- und Längengrad des Ziels sowie Peilung, Neigung und Zoom festlegen.

Erstellen Sie zum Festlegen der anfänglichen Kameraposition ein GMSCameraPosition-Objekt und übergeben Sie dieses Objekt dann an den Convenience-Konstruktor GMSMapView.

Swift

let camera = GMSCameraPosition(
  latitude: -33.8683,
  longitude: 151.2086,
  zoom: 16
)
mapView = GMSMapView(frame: self.view.bounds, camera: camera)
      

Objective-C

GMSCameraPosition *camera = [GMSCameraPosition cameraWithLatitude:-33.8683
                                                        longitude:151.2086
                                                             zoom:16];
mapView = [GMSMapView mapWithFrame:self.view.bounds camera:camera];
      

Sie können das GMSMapView-Objekt auch mit der Standardinitialisierungsmethode UIView erstellen. In diesem Fall beginnt die Kameraposition am Standardort und Sie können sie nach der Erstellung ändern.

Swift

mapView = GMSMapView(frame: self.view.bounds)
      

Objective-C

mapView = [[GMSMapView alloc] initWithFrame:self.view.bounds];
      

Kameraposition ändern

Sie können die Kameraposition programmatisch ändern, um Standort, Lage, Neigung und Zoom festzulegen. GMSMapView bietet verschiedene Methoden, mit denen Sie die Kameraposition ändern können. Normalerweise verwenden Sie aber GMSCameraPosition oder GMSCameraUpdate:

  • GMSCameraPosition enthält Attribute und Methoden, mit denen Sie die einzelnen Kamerapositionsparameter ändern können: Ziel, Ausrichtung, Neigung und Zoom.

  • Mit GMSCameraUpdate können Sie Ziel, Peilung, Neigung und Zoom ändern. Außerdem gibt es weitere praktische Methoden, um das Scrollen, erweitertes Zoomen, das Zentrieren der Kamera innerhalb vordefinierter Grenzen und mehr zu unterstützen.

Wenn Sie die Kamera bewegen, können Sie sie an der neuen Position einrasten – es gibt keine Animation oder es wird eine Animation animiert. Wenn Sie beispielsweise eine Änderung am Zielstandort der Kamera animieren, schwenkt die Animation vom alten zum neuen Standort.

Die Animation wird zwischen den aktuellen und den neuen Kameraattributen interpoliert. Sie können die Dauer der Animation mit der Core Animation steuern.

GMSCameraPosition verwenden

Wenn Sie die Kamera mit GMSCameraPosition ändern möchten, erstellen Sie ein neues Objekt oder kopieren Sie ein vorhandenes Objekt und legen es dann für das Objekt GMSMapView fest. Verwenden Sie das Objekt GMSCameraPosition, um die Kamera am Aufnahmeort mit oder ohne Animation auszurichten.

Mit einem GMSCameraPosition-Objekt können Sie Kameraeigenschaften wie Breitengrad, Längengrad, Zoom, Peilung und Blickwinkel konfigurieren. Anschließend verwenden Sie dieses Objekt, um das Attribut camera von GMSMapView festzulegen.

Swift

let fancy = GMSCameraPosition(
  latitude: -33,
  longitude: 151,
  zoom: 6,
  bearing: 270,
  viewingAngle: 45
)
mapView.camera = fancy
      

Objective-C

GMSCameraPosition *fancy = [GMSCameraPosition cameraWithLatitude:-33.8683
                                                       longitude:151.2086
                                                            zoom:6
                                                         bearing:30
                                                    viewingAngle:45];
[mapView setCamera:fancy];
      

Lassen Sie jede GMSCameraPosition-Property aus, die Sie als Standardwert verwenden möchten.

Um die Verschiebung zu animieren, verwenden Sie die Methode animateToCameraPosition:, anstatt das Attribut camera festzulegen.

GMSCameraUpdate verwenden

Mit GMSCameraUpdate kannst du die Kameraposition aktualisieren und auswählen, ob die Kamera an der neuen Position ausgerichtet werden soll oder nicht. Der Vorteil von GMSCameraUpdate ist Komfort. Mit GMSCameraPosition können Sie dieselben Aufgaben wie mit GMSCameraUpdate ausführen. GMSCameraUpdate bietet jedoch zusätzliche Hilfsmethoden, mit denen Sie die Kamera einfacher bearbeiten können.

Wenn Sie beispielsweise GMSCameraPosition verwenden möchten, um die aktuelle Zoomstufe zu erhöhen, müssen Sie zuerst die aktuelle Zoomstufe bestimmen und dann ein GMSCameraPosition-Objekt erstellen, in dem Sie den Zoom auf einen Wert setzen, der größer als der aktuelle Zoom ist.

Alternativ können Sie ein GMSCameraUpdate-Objekt mit der Factory-Methode zoomIn: erstellen. Aktualisieren Sie dann die Kamera, indem Sie das Objekt GMSCameraUpdate an die Methode animateWithCameraUpdate: von GMSMapView übergeben.

Swift

// Zoom in one zoom level
let zoomCamera = GMSCameraUpdate.zoomIn()
mapView.animate(with: zoomCamera)
      

Objective-C

// Zoom in one zoom level
GMSCameraUpdate *zoomCamera = [GMSCameraUpdate zoomIn];
[mapView animateWithCameraUpdate:zoomCamera];
      

Verwenden Sie stattdessen die Methode GMSMapView moveCamera:, um die Kamera an die neue Position zu befestigen.

Im nächsten Beispiel wird GMSCameraUpdate verwendet, um eine Bewegung der Kamera zu animieren, sodass sie auf Vancouver zentriert ist.

Swift

// Center the camera on Vancouver, Canada
let vancouver = CLLocationCoordinate2D(latitude: 49.26, longitude: -123.11)
let vancouverCam = GMSCameraUpdate.setTarget(vancouver)
mapView.animate(with: vancouverCam)
      

Objective-C

// Center the camera on Vancouver, Canada
CLLocationCoordinate2D vancouver = CLLocationCoordinate2DMake(49.26, -123.11);
GMSCameraUpdate *vancouverCam = [GMSCameraUpdate setTarget:vancouver];
[mapView animateWithCameraUpdate:vancouverCam];
      

Ein GMSCameraUpdate-Objekt erstellen

Erstellen Sie ein GMSCameraUpdate-Objekt mit einer seiner Factory-Methoden.

zoomIn: und zoomOut:
Die aktuelle Zoomstufe wird um 1,0 geändert, während alle anderen Eigenschaften beibehalten werden.
zoomTo:
Ändert die Zoomstufe auf den angegebenen Wert, während alle anderen Eigenschaften beibehalten werden.
zoomBy:
Vergrößert bzw. verringert sich bei einem negativen Wert der Zoomstufe um den angegebenen Wert.
zoomBy:atPoint:
Vergrößert oder verringert (bei einem negativen Wert) die Zoomstufe um den angegebenen Wert, wobei die angegebene Position des Bildschirms beibehalten wird.
setTarget:
Hiermit können Sie die Breiten- und Längengrade der Kamera ändern und alle anderen Eigenschaften beibehalten.
setTarget:zoom:
Hiermit können Sie Breiten- und Längengrad sowie Zoomstufe der Kamera ändern und alle anderen Eigenschaften beibehalten.
setCamera:
Legt ein neues GMSCameraPosition fest.
scrollByX:Y:
Ändert den Breiten- und Längengrad der Karte, um die Karte um die angegebene Anzahl von Punkten zu verschieben. Ein positiver X-Wert führt dazu, dass die Kamera nach rechts bewegt wird, sodass der Eindruck entsteht, die Karte wäre nach links verschoben worden. Ein positiver y-Wert bewegt die Kamera nach unten, d. h., die Karte erscheint nach oben verschoben. Das Scrollen erfolgt relativ zur aktuellen Lage der Kamera. Wenn die Kamera beispielsweise eine Peilung von 90 Grad aufweist, ist Osten oben.
fitBounds:
Verwandelt die Kamera, um die angegebenen Grenzen auf dem Bildschirm mit der größtmöglichen Zoomstufe zu zentrieren. Wendet einen Standardabstand von 64 Punkten an.
fitBounds:withPadding:
Verwandelt die Kamera, um die angegebenen Grenzen auf dem Bildschirm mit der größtmöglichen Zoomstufe zu zentrieren. Mit dieser Methode kannst du für alle Seiten des Begrenzungsrahmens denselben Abstand in Punkten festlegen.
fitBounds:withEdgeInsets:
Verwandelt die Kamera, um die angegebenen Grenzen auf dem Bildschirm mit der größtmöglichen Zoomstufe zu zentrieren. Mit UIEdgeInsets geben Sie das Padding für jede Seite des Begrenzungsrahmens separat an.

Mit GMSMapView eine einzelne Property ändern

GMSMapView bietet mehrere Methoden, mit denen du die Kamera ohne GMSCameraPosition- oder GMSCameraUpdate-Objekt verschieben kannst. Mit diesen Methoden, z. B. animateToLocation: oder animateToZoom:, können Sie eine Änderung an einer einzelnen Kameraeigenschaft animieren.

Verwenden Sie beispielsweise die Methode toViewingAngle:, um eine Änderung der Kameraneigung zu animieren.

Swift

mapView.animate(toViewingAngle: 45)
      

Objective-C

[mapView animateToViewingAngle:45];
      

Ziel festlegen (Ort)

Der Standort bestimmt die Kartenmitte. Standorte werden nach Breiten- und Längengrad angegeben und programmatisch durch ein CLLocationCoordinate2D dargestellt, das mit CLLocationCoordinate2DMake erstellt wurde.

Mit GMSCameraPosition können Sie den Standort ändern. In diesem Beispiel wird die Karte auf den neuen Standort ausgerichtet.

Swift

let target = CLLocationCoordinate2D(latitude: -33.868, longitude: 151.208)
mapView.camera = GMSCameraPosition(target: target, zoom: 6)
      

Objective-C

CLLocationCoordinate2D target =
    CLLocationCoordinate2DMake(-33.868, 151.208);
mapView.camera = [GMSCameraPosition cameraWithTarget:target zoom:6];
      

Um die Änderung zu animieren und die Karte an den neuen Standort zu schwenken, können Sie die Methode animateToCameraPosition: verwenden, anstatt das Attribut camera festzulegen. Alternativ können Sie die Methode animateToLocation: für GMSMapView verwenden.

Swift

mapView.animate(toLocation: CLLocationCoordinate2D(latitude: -33.868, longitude: 151.208))
      

Objective-C

[mapView animateToLocation:CLLocationCoordinate2DMake(-33.868, 151.208)];
      

Sie können auch ein GMSCameraUpdate-Objekt erstellen, um die Kamera zu bewegen. Verwenden Sie die integrierte Methode scrollByX:Y:, um die Anzahl der Punkte anzugeben, die die Kamera in X- und Y-Richtung scrollen soll. In diesem Beispiel scrollen Sie 200 Punkte nach rechts und 100 Punkte nach unten:

Swift

// Move the camera 200 points to the right, and 100 points downwards
let downwards = GMSCameraUpdate.scrollBy(x: 200, y: 100)
mapView.animate(with: downwards)
      

Objective-C

// Move the camera 200 points to the right, and 100 points downwards
GMSCameraUpdate *downwards = [GMSCameraUpdate scrollByX:200.0 Y:100.0];
[mapView animateWithCameraUpdate:downwards];
      

Ausrichtung (Ausrichtung) festlegen

Die Lage ist die Kompassrichtung für den oberen Rand der Karte, gemessen in Grad vom geografischen Norden. Eine Lage von 90 Grad führt zum Beispiel zu einer Karte, deren oberer Rand nach Osten zeigt.

Legen Sie die Lage programmatisch mit GMSCameraPosition oder GMSCameraUpdate oder mit der Methode animateToBearing: von GMSMapView fest.

Swift

mapView.animate(toBearing: 0)
      

Objective-C

[mapView animateToBearing:0];
      

Neigung festlegen (Blickwinkel)

Der Blickwinkel ist die Kameraposition auf einem Bogen, der vom Mittelpunkt der Karte zur Erdoberfläche verläuft, gemessen im Gradabstand vom Nadir (Richtung von der Kamera direkt nach unten). Wenn Sie den Blickwinkel ändern, wird die Karte perspektivisch dargestellt. Elemente zwischen der Kamera und der Kartenposition werden proportional größer dargestellt. Elemente über der Kartenposition erscheinen proportional kleiner, was zu einem dreidimensionalen Effekt führt.

Der Blickwinkel kann zwischen 0 (Richtung senkrecht auf die Karte) und bis zu einem von der Zoomstufe abhängigen Maximalwert liegen. Bei Zoomstufe 16 und höher beträgt der maximale Winkel 65 Grad. Bei Zoomstufe 10 und darunter beträgt der maximale Winkel 30 Grad.

Legen Sie den Blickwinkel programmatisch mithilfe von GMSCameraPosition oder GMSCameraUpdate oder mit der Methode animateToViewingAngle: von GMSMapView fest.

Swift

mapView.animate(toViewingAngle: 45)
      

Objective-C

[mapView animateToViewingAngle:45];
      

Zoom festlegen

Die Zoomstufe der Kamera bestimmt die Skalierung der Karte. Bei größeren Zoomstufen sehen Sie mehr Details auf dem Bildschirm, bei kleineren Zoomstufen hingegen mehr.

Legen Sie den Zoom programmatisch mit GMSCameraPosition oder GMSCameraUpdate oder mit der Methode animateToZoom: von GMSMapView fest.

Swift

mapView.animate(toZoom: 12)
      

Objective-C

[mapView animateToZoom:12];
      

Im folgenden Beispiel wird mit der Factory zoomIn: ein GMSCameraUpdate-Objekt erstellt, um einen Zoom von einer Ebene der aktuellen Ebene zu animieren.

Swift

// Zoom in one zoom level
let zoomCamera = GMSCameraUpdate.zoomIn()
mapView.animate(with: zoomCamera)
      

Objective-C

// Zoom in one zoom level
GMSCameraUpdate *zoomCamera = [GMSCameraUpdate zoomIn];
[mapView animateWithCameraUpdate:zoomCamera];
      

Grenzen festlegen

Wenn Sie die Kamera so verschieben möchten, dass ein gesamter Bereich von Interesse mit der größtmöglichen Zoomstufe sichtbar ist, legen Sie Grenzen für die Kameraansicht fest. Wenn Sie beispielsweise alle Tankstellen im Umkreis von fünf Meilen der aktuellen Position des Nutzers anzeigen möchten, verschieben Sie die Kamera so, dass sie alle auf dem Bildschirm zu sehen sind:

  1. Berechnen Sie den GMSCoordinateBounds, der auf dem Bildschirm sichtbar sein soll.
  2. Verwenden Sie die Methode cameraForBounds:insets: von GMSMapView, um eine neue GMSCameraPosition zurückzugeben.

Durch das Festlegen dieser Grenzen wird sichergestellt, dass der angegebene GMSCoordinateBounds-Wert vollständig in die Größe der aktuellen Karte passt. Dabei wird Neigung und Lage der Karte auf 0 festgelegt.

Im folgenden Beispiel wird gezeigt, wie Sie die Kamera ändern, damit die Städte Vancouver und Calgary in derselben Ansicht angezeigt werden.

Swift

let vancouver = CLLocationCoordinate2D(latitude: 49.26, longitude: -123.11)
let calgary = CLLocationCoordinate2D(latitude: 51.05,longitude: -114.05)
let bounds = GMSCoordinateBounds(coordinate: vancouver, coordinate: calgary)
let camera = mapView.camera(for: bounds, insets: UIEdgeInsets())!
mapView.camera = camera
      

Objective-C

CLLocationCoordinate2D vancouver = CLLocationCoordinate2DMake(49.26, -123.11);
CLLocationCoordinate2D calgary = CLLocationCoordinate2DMake(51.05, -114.05);
GMSCoordinateBounds *bounds =
    [[GMSCoordinateBounds alloc] initWithCoordinate:vancouver coordinate:calgary];
GMSCameraPosition *camera = [mapView cameraForBounds:bounds insets:UIEdgeInsetsZero];
mapView.camera = camera;
      

Schwenken durch den Nutzer auf einen bestimmten Bereich beschränken

In den Szenarien oben legen Sie die Grenzen der Karte fest. Der Nutzer kann jedoch außerhalb dieser Grenzen scrollen oder schwenken. Stattdessen können Sie die Breiten- und Längengradgrenzwerte des Kartenfokus (Kameraziels) einschränken, sodass Nutzer nur innerhalb dieser Grenzen scrollen und schwenken können.

Beispielsweise kann eine Einzelhandels-App für ein Einkaufszentrum oder einen Flughafen die Karte auf bestimmte Grenzen beschränken, sodass Nutzer innerhalb dieser Grenzen scrollen und schwenken können.

Wenn Sie das Schwenken auf bestimmte Grenzen beschränken möchten, legen Sie das Attribut cameraTargetBounds von GMSMapView auf ein GMSCoordinateBounds-Objekt fest, das die erforderlichen Grenzen definiert. Wenn Sie die Einschränkung später entfernen möchten, setzen Sie cameraTargetBounds auf null.

Swift

mapView.cameraTargetBounds = bounds
      

Objective-C

mapView.cameraTargetBounds = bounds;
      

Im folgenden Diagramm wird ein Szenario veranschaulicht, in dem das Kameraziel auf einen Bereich beschränkt ist, der etwas größer als der Darstellungsbereich ist. Unter der Voraussetzung, dass das Kameraziel innerhalb des begrenzten Bereichs bleibt, ist der Nutzer in der Lage, zu scrollen und zu schwenken. Das Kreuz stellt das Kameraziel dar:

Diagramm mit Kameragrenzen, die größer als der Darstellungsbereich sind

Die Karte füllt den Darstellungsbereich immer aus, auch wenn das dazu führt, dass im Darstellungsbereich Bereiche außerhalb der festgelegten Grenzen angezeigt werden. Beispiel: Wenn Sie das Kameraziel in einer Ecke des begrenzten Bereichs positionieren, ist der Bereich jenseits der Ecke im Darstellungsbereich sichtbar. Nutzer können in diesen Bereich jedoch nicht weiter scrollen. Dieses Szenario wird im folgenden Diagramm veranschaulicht. Das Kreuz stellt das Kameraziel dar:

Diagramm, das das Kameraziel in der unteren rechten Ecke der Kameragrenzen zeigt

Im folgenden Diagramm hat das Kameraziel sehr eingeschränkte Grenzen, sodass der Nutzer nur wenig Möglichkeiten zum Scrollen oder Schwenken hat. Das Kreuz stellt das Kameraziel dar:

Diagramm mit Kameragrenzen, die kleiner als der Darstellungsbereich sind

Minimalen und maximalen Zoom festlegen

Die globalen Konstanten kGMSMinZoomLevel und kGMSMaxZoomLevel definieren den minimalen oder maximalen Zoomwert. Standardmäßig sind die Attribute minZoom und maxZoom von GMSMapView auf diese Konstanten festgelegt.

Wenn Sie den für die Karte verfügbaren Zoomstufen einschränken möchten, legen Sie eine minimale und maximale Zoomstufe fest. Mit dem folgenden Code wird die Zoomstufe auf 10 bis 15 beschränkt.

Swift

let camera = GMSCameraPosition(
  latitude: 41.887,
  longitude: -87.622,
  zoom: 12
)
let mapView = GMSMapView(frame: .zero, camera: camera)
mapView.setMinZoom(10, maxZoom: 15)
      

Objective-C

GMSCameraPosition *camera = [GMSCameraPosition cameraWithLatitude:41.887
                                                       longitude:-87.622
                                                             zoom:12];
GMSMapView *mapView = [GMSMapView mapWithFrame:CGRectZero
                                        camera:camera];
[mapView setMinZoom:10 maxZoom:15];
      

Sie müssen den Zoombereich mit der Methode setMinZoom:maxZoom: festlegen. Sie können die aktuellen Werte jedoch mit den Attributen minZoom und maxZoom lesen. Dieser Ansatz ist hilfreich, wenn nur einer der Werte eingeschränkt wird. Mit dem folgenden Code wird nur die minimale Zoomstufe geändert.

Swift

mapView.setMinZoom(12, maxZoom: mapView.maxZoom)
      

Objective-C

[mapView setMinZoom:12 maxZoom:mapView.maxZoom];
      

Wenn nach dem Aktualisieren des minimalen und maximalen Zooms die Zoomstufe der Kamera auf einen Wert außerhalb des neuen Bereichs gesetzt wird, wird der aktuelle Zoom automatisch aktualisiert und zeigt den nächstgelegenen gültigen Wert an. Im folgenden Code ist beispielsweise der ursprüngliche Zoom auf 4 festgelegt. Wenn der Zoombereich später auf 10 bis 15 festgelegt wird, wird der aktuelle Zoom auf 10 aktualisiert.

Swift

// Sets the zoom level to 4.
let camera2 = GMSCameraPosition(
  latitude: 41.887,
  longitude: -87.622,
  zoom: 4
)
let mapView2 = GMSMapView(frame: .zero, camera: camera)

// The current zoom, 4, is outside of the range. The zoom will change to 10.
mapView.setMinZoom(10, maxZoom: 15)
      

Objective-C

// Sets the zoom level to 4.
GMSCameraPosition *camera2 = [GMSCameraPosition cameraWithLatitude:41.887
                                                         longitude:-87.622
                                                              zoom:4];
GMSMapView *mapView2 = [GMSMapView mapWithFrame:CGRectZero
                                         camera:camera];
// The current zoom, 4, is outside of the range. The zoom will change to 10.
[mapView setMinZoom:10 maxZoom:15];