Es kann losgehen!

Bevor Sie mit der Entwicklung beginnen, lesen Sie bitte unsere Entwicklerdokumentation.

Das Google Maps SDK for iOS aktivieren

Zum Einstieg führen wir Sie durch die Google Developers Console, wo Sie vorab Folgendes tun müssen:

  1. Ein Projekt erstellen oder auswählen
  2. Das Google Maps SDK for iOS aktivieren
  3. Zugehörige Schlüssel erstellen
Weiter

Formen

Das Google Maps SDK for iOS bietet einige einfache Möglichkeiten, wie Sie Formen zu Ihren Karten hinzufügen können. Folgende Formen werden unterstützt:

  • Eine Polylinie besteht aus einer Gruppe verbundener Liniensegmente, die Sie zu einer beliebigen Form zusammenfügen können, um Wege und Routen auf einer Karte zu kennzeichnen.
  • Ein Polygon ist eine geschlossene Form, mit der Sie Bereiche auf einer Karte kennzeichnen können.
  • Ein Kreis ist eine geografisch genaue Projektion eines Kreises auf der Erdoberfläche.

Sie können das Erscheinungsbild jeder dieser Formen auf verschiedene Weise verändern.

Polylinien

Mit Polylinien können Sie Linien auf einer Karte zeichnen. Das Objekt GMSPolyline stellt eine geordnete Folge von Standorten dar, die als Reihe von Liniensegmenten angezeigt werden. Mit GMSStrokeStyle können Sie die Farbe von Polylinien festlegen.

Zum Erstellen einer Polylinie müssen Sie ihren Pfad angeben, indem Sie ein entsprechendes GMSMutablePath-Objekt mit mindestens zwei Punkten erstellen. Jede CLLocationCoordinate2D steht für einen Punkt auf der Erdoberfläche. Zwischen den Punkten werden Liniensegmente in der Reihenfolge gezogen, in der Sie sie zum Pfad hinzufügen. Mit der Methode addCoordinate: oder addLatitude:longitude: können Sie Punkte zum Pfad hinzufügen.

Swift

let path = GMSMutablePath()
path.add(CLLocationCoordinate2D(latitude: -33.85, longitude: 151.20))
path.add(CLLocationCoordinate2D(latitude: -33.70, longitude: 151.40))
path.add(CLLocationCoordinate2D(latitude: -33.73, longitude: 151.41))
let polyline = GMSPolyline(path: path)

Objective-C

GMSMutablePath *path = [GMSMutablePath path];
[path addCoordinate:CLLocationCoordinate2DMake(-33.85, 151.20)];
[path addCoordinate:CLLocationCoordinate2DMake(-33.70, 151.40)];
[path addCoordinate:CLLocationCoordinate2DMake(-33.73, 151.41)];
GMSPolyline *polyline = [GMSPolyline polylineWithPath:path];

Eine Polylinie hinzufügen

  1. Erstellen Sie ein Objekt GMSMutablePath.
  2. Legen Sie die Punkte auf dem Pfad mit den Methoden addCoordinate: oder addLatitude:longitude: fest.
  3. Instanziieren Sie ein neues Objekt GMSPolyline, indem Sie den Pfad als Argument verwenden.
  4. Falls erwünscht, definieren Sie optionale Eigenschaften wie strokeWidth und strokeColor.
  5. Legen Sie die Eigenschaft map der GMSPolyline fest.
  6. Die Polylinie wird auf der Karte angezeigt.

Im folgenden Codebeispiel wird ein Rechteck zu einer Karte hinzugefügt:

Swift

let path = GMSMutablePath()
path.add(CLLocationCoordinate2D(latitude: 37.36, longitude: -122.0))
path.add(CLLocationCoordinate2D(latitude: 37.45, longitude: -122.0))
path.add(CLLocationCoordinate2D(latitude: 37.45, longitude: -122.2))
path.add(CLLocationCoordinate2D(latitude: 37.36, longitude: -122.2))
path.add(CLLocationCoordinate2D(latitude: 37.36, longitude: -122.0))

let rectangle = GMSPolyline(path: path)
rectangle.map = mapView

Objective-C

GMSMutablePath *path = [GMSMutablePath path];
[path addCoordinate:CLLocationCoordinate2DMake(37.36, -122.0)];
[path addCoordinate:CLLocationCoordinate2DMake(37.45, -122.0)];
[path addCoordinate:CLLocationCoordinate2DMake(37.45, -122.2)];
[path addCoordinate:CLLocationCoordinate2DMake(37.36, -122.2)];
[path addCoordinate:CLLocationCoordinate2DMake(37.36, -122.0)];

GMSPolyline *rectangle = [GMSPolyline polylineWithPath:path];
rectangle.map = mapView;

Eine rechteckige Polylinie

Polylinien entfernen

Sie können Polylinien aus der Karte entfernen, indem Sie die GMSPolyline-Eigenschaft map auf nil festlegen. Sie können auch alle Überlagerungen (einschließlich Polylinien und anderer Formen), die sich momentan auf der Karte befinden, entfernen, indem Sie die GMSMapView -Methode clear aufrufen.

Swift

let camera = GMSCameraPosition.camera(withLatitude: -33.8683,
                                      longitude: 151.2086,
                                      zoom:12)
let mapView = GMSMapView.map(withFrame: self.view.bounds, camera: camera)
...
mapView.clear()

Objective-C

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

Wenn Sie Änderungen an einer Polylinie vornehmen möchten, nachdem Sie sie zur Karte hinzugefügt haben, achten Sie darauf, das Objekt GMSPolyline aufzubewahren. Sie können die Polylinie zu einem späteren Zeitpunkt bearbeiten, indem Sie Änderungen an diesem Objekt vornehmen.

Swift

let polyline = GMSPolyline(path: path)
polyline.map = mapView
...
polyline.strokeColor = .black

Objective-C

GMSPolyline *polyline = [GMSPolyline polylineWithPath:path];
polyline.map = mapView;
...
polyline.strokeColor = [UIColor blackColor];

Polylinien anpassen

Das Objekt GMSPolyline stellt mehrere Eigenschaften zur Verfügung, mit denen das Erscheinungsbild der Linie gesteuert werden kann. Folgende Optionen werden unterstützt:

strokeWidth
Die Breite der gesamten Linie in Bildschirmpunkten. Der Standardwert ist 1. Beim Vergrößern der Karte wird die Breite nicht mit skaliert.
geodesic
Wenn YES, wird diese Polylinie als geodätische Linie wiedergegeben. Geodätische Segmente nehmen den kürzesten Weg auf der Erdoberfläche und können bei Mercator-Projektion als gekrümmte Linien dargestellt werden. Nicht-geodätische Segmente werden als gerade Linien auf der Karte gezeichnet. Der Standardwert ist NO.
spans
Wird zur Angabe der Farbe von mindestens einem Segment einer Polylinie verwendet. Die Eigenschaft „spans“ ist ein Array aus GMSStyleSpan Objekten. Das Festlegen der Eigenschaft spans ist die bevorzugte Art und Weise zum Ändern der Farbe einer Polylinie.
strokeColor
Ein UIColor-Objekt, das die Farbe der Polylinie angibt. Der Standardwert ist blueColor. Die Eigenschaft strokeColor wird ignoriert, wenn spans festgelegt wurde.

Mit dem folgenden Codebeispiel wird eine dicke Polylinie mit geodätischer Interpolation von Melbourne nach Perth hinzugefügt.

Swift

let path = GMSMutablePath()
path.addLatitude(-37.81319, longitude: 144.96298)
path.addLatitude(-31.95285, longitude: 115.85734)
let polyline = GMSPolyline(path: path)
polyline.strokeWidth = 10.0
polyline.geodesic = true
polyline.map = mapView

Objective-C

GMSMutablePath *path = [GMSMutablePath path];
[path addLatitude:-37.81319 longitude:144.96298];
[path addLatitude:-31.95285 longitude:115.85734];
GMSPolyline *polyline = [GMSPolyline polylineWithPath:path];
polyline.strokeWidth = 10.f;
polyline.geodesic = YES;
polyline.map = mapView;

Wenn Sie Änderungen an Polylinien vornehmen möchten, nachdem Sie sie zur Karte hinzugefügt haben, achten Sie darauf, das Objekt GMSPolyline aufzubewahren.

Swift

let polyline = GMSPolyline(path: path)
polyline.map = mapView
...
polyline.strokeColor = .blue

Objective-C

GMSPolyline *polyline = [GMSPolyline polylineWithPath:path];
polyline.map = mapView;
...
polyline.strokeColor = [UIColor blueColor];

Die Farbe von Polylinien ändern

Polylinien werden als Reihen von Segmenten auf der Karte gezeichnet. Mit der Eigenschaft spans können Sie die Farbe einzelner Segmente oder der gesamten Linie ändern. Diese Eigenschaft ermöglicht Ihnen die genaue Steuerung der Farbgebung einer Polylinie. Wenn Sie ein einziges Format auf die gesamte Linie anwenden möchten, stehen mehrere Optionen zur Verfügung.

Im nachfolgenden Codeausschnitt wird die Methode spanWithColor: verwendet, um die Farbe der gesamten Linie in Rot zu ändern.

Swift

polyline.spans = [GMSStyleSpan(color: .red)]

Objective-C

polyline.spans = @[[GMSStyleSpan spanWithColor:[UIColor redColor]]];

Wenn Sie bereits Zugriff auf ein GMSStrokeStyle-Objekt haben, können Sie die Methode spanWithStyle: verwenden.

Swift

let solidRed = GMSStrokeStyle.solidColor(.red)
polyline.spans = [GMSStyleSpan(style: solidRed)]

Objective-C

GMSStrokeStyle *solidRed = [GMSStrokeStyle solidColor:[UIColor redColor]];
polyline.spans = @[[GMSStyleSpan spanWithStyle:solidRed]];

Vor Version 1.7 des Google Maps SDK for iOS stand die einzelne Eigenschaft strokeColor zur Verfügung, um die Farbe einer ganzen GMSPolyline festzulegen. Die Eigenschaft spans hat nun Vorrang vor strokeColor.

Swift

polyline.strokeColor = .red

Objective-C

polyline.strokeColor = [UIColor redColor];

Formate

Kommt in Ihrer App mehrmals dieselbe Strichfarbe zur Anwendung, könnte es für Sie nützlich sein, ein wiederverwendbares Format zu definieren. Formate für Polylinien werden mithilfe des Objekts GMSStrokeStyle angegeben. Ein Strichformat kann eine einzelne Farbe oder ein Farbverlauf sein. Nachdem Sie das Format erstellt haben, können Sie es auf die GMSStyleSpan mit der Methode spanWithStyle: anwenden.

Swift

// Create two styles: one that is solid blue, and one that is a gradient from red to yellow
let solidBlue = GMSStrokeStyle.solidColor(.blue)
let solidBlueSpan = GMSStyleSpan(style: solidBlue)
let redYellow =
  GMSStrokeStyle.gradient(from: .red, to: .yellow)
let redYellowSpan = GMSStyleSpan(style: redYellow)

Objective-C

// Create two styles: one that is solid blue, and one that is a gradient from red to yellow
GMSStrokeStyle *solidBlue = [GMSStrokeStyle solidColor:[UIColor blueColor]];
GMSStyleSpan *solidBlueSpan = [GMSStyleSpan spanWithStyle:solidBlue];
GMSStrokeStyle *redYellow =
    [GMSStrokeStyle gradientFromColor:[UIColor redColor] toColor:[UIColor yellowColor]];
GMSStyleSpan *redYellowSpan = [GMSStyleSpan spanWithStyle:redYellow];

Das Format der span wird bis zum Ende der Polylinie oder bis zu der Stelle, an der ein neues Format festgelegt wurde, fortgesetzt. Wenn Sie die Farbe der gesamten Linie ändern möchten, legen Sie die Eigenschaft spans der Polylinie auf eine einzelne GMSStyleSpan fest. Im nachfolgenden Codeausschnitt wird gezeigt, wie Sie einen Farbverlauf auf die gesamte Länge der Polylinie anwenden.

Swift

let polyline = GMSPolyline(path: path)
let redYellow =
  GMSStrokeStyle.gradient(from: .red, to: .yellow)
polyline.spans = [GMSStyleSpan(style: redYellow)]

Objective-C

GMSPolyline *polyline = [GMSPolyline polylineWithPath:path];
GMSStrokeStyle *redYellow =
    [GMSStrokeStyle gradientFromColor:[UIColor redColor] toColor:[UIColor yellowColor]];
polyline.spans = @[[GMSStyleSpan spanWithStyle:redYellow]];

Farben einzelner Liniensegmente ändern

Wenn Sie jedem Segment der Polylinie ein eigenes Format verleihen möchten, erstellen Sie ein Array aus GMSStyleSpan-Objekten und übergeben Sie es an die Eigenschaft spans. Standardmäßig wird durch jedes Element im Array die Farbe des dazugehörigen Liniensegments festgelegt. Sind mehr Elemente im Array als Segmente auf der Linie vorhanden, werden die überzähligen Elemente ignoriert. Ist die Anzahl der Elemente im Array geringer, wird die Farbe des verbleibenden Teils der Linie durch die letzte GMSStyleSpan beschrieben.

Farbblöcke bzw. Farbverläufe können Sie bspw. dazu verwenden, Veränderungen in der Höhe oder Geschwindigkeit entlang der Polylinie zu veranschaulichen. Im nachfolgenden Codeausschnitt wird die Farbe der ersten beiden Segmente einer Polylinie auf Rot und für den übrigen Teil der Linie ein Farbverlauf von Rot zu Gelb festgelegt.

Swift

let polyline = GMSPolyline(path: path)
let solidRed = GMSStrokeStyle.solidColor(.red)
let redYellow =
    GMSStrokeStyle.gradient(from: .red, to: .yellow)
polyline.spans = [GMSStyleSpan(style: solidRed),
                  GMSStyleSpan(style: solidRed),
                  GMSStyleSpan(style: redYellow)]

Objective-C

GMSPolyline *polyline = [GMSPolyline polylineWithPath:path];
GMSStrokeStyle *solidRed = [GMSStrokeStyle solidColor:[UIColor redColor]];
GMSStrokeStyle *redYellow =
    [GMSStrokeStyle gradientFromColor:[UIColor redColor] toColor:[UIColor yellowColor]];
polyline.spans = @[[GMSStyleSpan spanWithStyle:solidRed],
                   [GMSStyleSpan spanWithStyle:solidRed],
                   [GMSStyleSpan spanWithStyle:redYellow]];

Wenn Sie das Format für mehrere Segmente auf einmal festlegen möchten,können Sie die Methode spanWithStyle:segments: verwenden. So entspricht das folgende Codebeispiel dem obigen. Die Segmentlänge der letzten GMSStyleSpan wird stets ignoriert, da das Format verwendet wird, um den übrigen Teil der Zeile zu beschreiben.

Swift

polyline.spans = [GMSStyleSpan(style: solidRed, segments:2),
                  GMSStyleSpan(style: redYellow, segments:10)]

Objective-C

polyline.spans = @[[GMSStyleSpan spanWithStyle:solidRed segments:2],
                   [GMSStyleSpan spanWithStyle:redYellow segments:10]];

Teilsegmente

Segmente können auch als Bruchzahlen angegeben werden. Dadurch wird das Format auf die angegebenen Teilsegmente angewendet, was zu unterschiedlichen Formaten auf einem einzelnen Segment führen kann. Jede GMSStyleSpan beginnt direkt nach der vorhergehenden: Im nachfolgenden Beispiel beginnt die graue Farbe bei ½, des zweiten Segments und wird bis ½ im dritten Segment fortgesetzt.

Swift

polyline.spans = [GMSStyleSpan(style: solidRed, segments: 2.5),
                  GMSStyleSpan(color: .gray),
                  GMSStyleSpan(color: .purple, segments: 0.75),
                  GMSStyleSpan(style: redYellow)]

Objective-C

polyline.spans = @[[GMSStyleSpan spanWithStyle:solidRed segments:2.5],
                   [GMSStyleSpan spanWithColor:[UIColor grayColor],
                   [GMSStyleSpan spanWithColor:[UIColor purpleColor] segments:0.75,
                   [GMSStyleSpan spanWithStyle:redYellow]];

Wiederkehrende Farbmuster zu Polylinien hinzufügen

Wenn Sie ein Muster zu einer Polylinie hinzufügen möchten, können Sie die Hilfsmethode GMSStyleSpans in GMSGeometryUtils verwenden. Für die Methode GMSStyleSpans sind zwei Arrays zulässig, die das wiederkehrende Muster definieren. Ein Array legt die zu wiederholenden Formate fest und das andere definiert das Wiederholungsintervall. Mit beiden Arrays zusammen können Sie ein Muster erstellen, das auf die Polylinie unabhängig von deren Länge oder Segmentzahl angewendet werden kann.

Im folgenden Codeausschnitt wird eine Polylinie mit einem schwarz-weißen Muster definiert. Seine Längen werden als Meter entlang einer Loxodrome betrachtet (eine gerade Linie in Mercator-Projektion), da der Typ als kGMSLengthRhumb angegeben ist.

Swift

let styles = [GMSStrokeStyle.solidColor(.white),
              GMSStrokeStyle.solidColor(.black)]
let lengths: [NSNumber] = [100000, 50000]
polyline.spans = GMSStyleSpans(polyline.path!, styles, lengths, kGMSLengthRhumb)

Objective-C

NSArray *styles = @[[GMSStrokeStyle solidColor:[UIColor whiteColor]],
                    [GMSStrokeStyle solidColor:[UIColor blackColor]]];
NSArray *lengths = @[@100000, @50000];
polyline.spans = GMSStyleSpans(polyline.path, styles, lengths, kGMSLengthRhumb);

Polygone

Polygon ähneln Polylinien dahingehend, dass sie ebenfalls aus einer Reihe von Koordinaten in einer bestimmten Reihenfolge bestehen. Es handelt sich jedoch nicht um eine offene Form. Polygone kennzeichnen Bereiche durch einen geschlossenen Rahmen. Im Google Maps SDK for iOS sind Polygone durch die Klasse GMSPolygon definiert.

Um ein Objekt GMSPolygon zur Karte hinzuzufügen, verfahren Sie genau wie beim Hinzufügen eines Objekts GMSPolyline. Geben Sie zuerst ihren Pfad an, indem Sie ein entsprechendes GMSMutablePath-Objekt erstellen und diesem Punkte hinzufügen. Diese Punkte bilden dann den Rahmen des Polygons. JedeCLLocationCoordinate2D steht für einen Punkt auf der Erdoberfläche. Zwischen den Punkten werden Liniensegmente in der Reihenfolge gezogen, in der Sie sie zum Pfad hinzufügen.

Polygone hinzufügen

  1. Erstellen Sie ein Objekt GMSMutablePath.
  2. Legen Sie die Punkte auf dem Pfad mit den Methoden addCoordinate: oder addLatitude:longitude: fest. Diese Punkte bilden dann den Rahmen des Polygons.
  3. Instanziieren Sie ein neues Objekt GMSPolygon, indem Sie den Pfad als Argument verwenden.
  4. Falls erwünscht, definieren Sie optionale Eigenschaften wie strokeWidth, strokeColor und fillColor.
  5. Weisen Sie das Polygon einem Objekt GMSMapView zu, indem Sie die Eigenschaft GMSPolygon.map festlegen.
  6. Die Polylinie wird auf der Karte angezeigt.

Im folgenden Codeausschnitt wird ein Rechteck zur Karte hinzugefügt.

Swift

// Create a rectangular path
let rect = GMSMutablePath()
rect.add(CLLocationCoordinate2D(latitude: 37.36, longitude: -122.0))
rect.add(CLLocationCoordinate2D(latitude: 37.45, longitude: -122.0))
rect.add(CLLocationCoordinate2D(latitude: 37.45, longitude: -122.2))
rect.add(CLLocationCoordinate2D(latitude: 37.36, longitude: -122.2))

// Create the polygon, and assign it to the map.
let polygon = GMSPolygon(path: rect)
polygon.fillColor = UIColor(red: 0.25, green: 0, blue: 0, alpha: 0.05);
polygon.strokeColor = .black
polygon.strokeWidth = 2
polygon.map = mapView

Objective-C

// Create a rectangular path
GMSMutablePath *rect = [GMSMutablePath path];
[rect addCoordinate:CLLocationCoordinate2DMake(37.36, -122.0)];
[rect addCoordinate:CLLocationCoordinate2DMake(37.45, -122.0)];
[rect addCoordinate:CLLocationCoordinate2DMake(37.45, -122.2)];
[rect addCoordinate:CLLocationCoordinate2DMake(37.36, -122.2)];

// Create the polygon, and assign it to the map.
GMSPolygon *polygon = [GMSPolygon polygonWithPath:rect];
polygon.fillColor = [UIColor colorWithRed:0.25 green:0 blue:0 alpha:0.05];
polygon.strokeColor = [UIColor blackColor];
polygon.strokeWidth = 2;
polygon.map = mapView;

Sie können das Erscheinungsbild des Polygons sowohl vor als auch nach dem Hinzufügen zur Karte anpassen.

Kreise

Zusätzlich zur generischen Klasse GMSPolygon umfasst das Google Maps SDK for iOS auch GMSCircle, womit Sie mühelos Kreise auf die Erdoberfläche zeichnen können.

Um einen Kreis zu konstruieren, definieren Sie die folgenden beiden Eigenschaften:

  • position als CLLocationCoordinate2D.
  • radius in Metern.

Dies definiert die Erstellung eines Kreises an allen Punkten auf der Erdoberfläche, die radius Meter vom vorgegebenen center liegen. Da die Art der Verwendung der Mercator-Projektion durch Maps API ein Panorama auf einer flachen Oberfläche wiedergibt, ist das Ergebnis in Äquatornähe ein fast perfekter Kreis auf der Karte. Je weiter der Kreis vom Äquator entfernt ist, desto „unrunder“ ist seine Form (auf dem Bildschirm).

Kreise hinzufügen

Im folgenden Codebeispiel wird ein Kreis zu einer Karte hinzugefügt:

Swift

let circleCenter = CLLocationCoordinate2D(latitude: 37.35, longitude: -122.0)
let circ = GMSCircle(position: circleCenter, radius: 1000)
circ.map = mapView

Objective-C

CLLocationCoordinate2D circleCenter = CLLocationCoordinate2DMake(37.35, -122.0);
GMSCircle *circ = [GMSCircle circleWithPosition:circleCenter
                                         radius:1000];
circ.map = mapView;

Sie können das Erscheinungsbild des Kreises sowohl vor als auch nach dem Hinzufügen zur Karte anpassen.

Kreise anpassen

Benutzerdefinierte Farben und Strichbreiten können Sie angeben, indem Sie die Eigenschaften von GMSCircle ändern. Folgende Optionen werden unterstützt:

fillColor
Ein UIColor-Objekt, das die innere Farbe des Kreises angibt. Der Standardwert ist „transparent“.
strokeColor
Ein UIColor-Objekt, das die Farbe des Kreisumrisses angibt. Der Standardwert ist blackColor.
strokeWidth
Die Breite des Kreisumrisses in Bildschirmpunkten. Der Standardwert ist 1. Beim Vergrößern der Karte wird die Breite nicht mit skaliert.

Im folgenden Codebeispiel wird ein Kreis mit einer dicken roten Umrisslinie und einer halbdurchsichtigen roten Fläche hinzugefügt.

Swift

let circleCenter = CLLocationCoordinate2D(latitude: 37.35, longitude: -122.0)
let circ = GMSCircle(position: circleCenter, radius: 1000)

circ.fillColor = UIColor(red: 0.35, green: 0, blue: 0, alpha: 0.05)
circ.strokeColor = .red
circ.strokeWidth = 5
circ.map = mapView

Objective-C

CLLocationCoordinate2D circleCenter = CLLocationCoordinate2DMake(37.35, -122.0);
GMSCircle *circ = [GMSCircle circleWithPosition:circleCenter
                                         radius:1000];

circ.fillColor = [UIColor colorWithRed:0.25 green:0 blue:0 alpha:0.05];
circ.strokeColor = [UIColor redColor];
circ.strokeWidth = 5;
circ.map = mapView;

Polygone ohne Füllung erstellen

Sie können mehrere Pfade zu einem einzigen Objekt GMSPolygon verbinden, um komplexe Formen zu erstellen, z. B. gefüllte Ringe oder „Kringel“ (bei denen Polygonalbereiche als getrennte Formen innerhalb des Polygons liegen). Komplexe Formen setzen sich aus mehreren Pfaden zusammen.

Erstellen Sie ein Polygon mit einem Pfad, der den größten vom Polygon abgedeckten Bereich angibt. Geben Sie dann die Eigenschaft holes des Polygons als Array mit einem oder mehreren Objekten GMSPath an, die die Löcher innerhalb des Polygons definieren.

Wenn der kleinere Pfad vollständig innerhalb des größeren Pfads liegt, sieht es so aus, als wäre ein Teil des Polygons entfernt worden.

Im folgenden Codebeispiel wird ein Polygon mit zwei Löchern erstellt:

Swift

override func loadView() {
  let hydeParkLocation = CLLocationCoordinate2D(latitude: -33.87344, longitude: 151.21135)
  let camera = GMSCameraPosition.camera(withTarget: hydeParkLocation, zoom: 16)
  let mapView = GMSMapView.map(withFrame: .zero, camera: camera)
  mapView.animate(to: camera)

  let hydePark = "tpwmEkd|y[QVe@Pk@BsHe@mGc@iNaAKMaBIYIq@qAMo@Eo@@[Fe@DoALu@HUb@c@XUZS^ELGxOhAd@@ZB`@J^BhFRlBN\\BZ@`AFrATAJAR?rAE\\C~BIpD"
  let archibaldFountain = "tlvmEqq|y[NNCXSJQOB[TI"
  let reflectionPool = "bewmEwk|y[Dm@zAPEj@{AO"

  let polygon = GMSPolygon()
  polygon.path = GMSPath(fromEncodedPath: hydePark)
  polygon.holes = [GMSPath(fromEncodedPath: archibaldFountain)!, GMSPath(fromEncodedPath: reflectionPool)!]
  polygon.fillColor = UIColor(colorLiteralRed: 1.0, green: 0.0, blue: 0.0, alpha: 0.2)
  polygon.strokeColor = UIColor(colorLiteralRed: 1.0, green: 0.0, blue: 0.0, alpha: 1.0)
  polygon.strokeWidth = 2
  polygon.map = mapView
  view = mapView
}

Objective-C

- (void)loadView {
  CLLocationCoordinate2D hydeParkLocation = CLLocationCoordinate2DMake(-33.87344, 151.21135);
  GMSCameraPosition *camera = [GMSCameraPosition cameraWithTarget:hydeParkLocation
                                                             zoom:16];
  _mapView = [GMSMapView mapWithFrame:CGRectZero camera:camera];

  NSString *hydePark = @"tpwmEkd|y[QVe@Pk@BsHe@mGc@iNaAKMaBIYIq@qAMo@Eo@@[Fe@DoALu@HUb@c@XUZS^ELGxOhAd@@ZB`@J^BhFRlBN\\BZ@`AFrATAJAR?rAE\\C~BIpD";
  NSString *archibaldFountain = @"tlvmEqq|y[NNCXSJQOB[TI";
  NSString *reflectionPool = @"bewmEwk|y[Dm@zAPEj@{AO";

  GMSPolygon *polygon = [[GMSPolygon alloc] init];
  polygon.path = [GMSPath pathFromEncodedPath:hydePark];
  polygon.holes = @[[GMSPath pathFromEncodedPath:archibaldFountain],
                    [GMSPath pathFromEncodedPath:reflectionPool]];
  polygon.fillColor = [UIColor colorWithRed:1.0 green:0.0 blue:0.0 alpha:0.2];
  polygon.strokeColor = [UIColor colorWithRed:1.0 green:0.0 blue:0.0 alpha:1.0];
  polygon.strokeWidth = 2;
  polygon.map = _mapView;
  self.view = _mapView;
}

Feedback geben zu...

Google Maps SDK for iOS
Google Maps SDK for iOS