Bentuk

Pilih platform: Android iOS JavaScript

Maps SDK for iOS menawarkan berbagai cara untuk menambahkan bentuk ke Google Maps. Bentuk berikut ini telah didukung:

  • Polyline adalah serangkaian segmen garis terhubung yang dapat membentuk bentuk apa pun yang Anda inginkan dan dapat digunakan untuk menandai jalur dan rute pada peta.
  • Poligon adalah bentuk tertutup yang dapat digunakan untuk menandai bidang pada peta.
  • Lingkaran adalah proyeksi lingkaran yang akurat secara geografis pada permukaannya.

Anda bisa memodifikasi penampilan setiap bentuk dalam beberapa cara.

Polyline

Polyline memungkinkan Anda menggambar garis pada peta. Objek GMSPolyline mewakili urutan lokasi yang diurutkan, yang ditampilkan sebagai serangkaian segmen garis. Anda dapat menetapkan warna polyline dengan GMSStrokeStyle

Untuk membuat polyline, Anda harus menentukan jalurnya dengan membuat objek GMSMutablePath yang sesuai dengan dua titik atau lebih. Setiap CLLocationCoordinate2D mewakili satu titik di permukaan bumi. Segmen garis digambar di antara titik-titik sesuai urutan Anda menambahkannya ke jalur. Anda dapat menambahkan titik ke jalur dengan addCoordinate: atau Metode addLatitude:longitude:.

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];
      

Menambahkan polyline

  1. Buat objek GMSMutablePath.
  2. Tetapkan titik di jalur dengan addCoordinate: atau Metode addLatitude:longitude:.
  3. Buat instance objek GMSPolyline baru menggunakan jalur sebagai argumen.
  4. Tetapkan properti lain, seperti strokeWidth dan strokeColor, sesuai kebutuhan.
  5. Tetapkan properti map dari GMSPolyline.
  6. Polyline akan muncul pada peta.

Cuplikan kode berikut menambahkan persegi panjang ke peta:

Swift

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

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

Objective-C

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

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

Polyline persegi panjang

Menghapus polyline

Anda dapat menghapus polyline dari peta dengan menetapkan map GMSPolyline menjadi nil. Sebagai alternatif, Anda dapat menghapus semua overlay (termasuk polyline dan bentuk lainnya) pada peta dengan memanggil GMSMapView Metode clear.

Swift

mapView.clear()
      

Objective-C

[mapView clear];
      

Menyesuaikan polyline

Objek GMSPolyline menyediakan beberapa properti untuk dikontrol tampilan garis. Ini mendukung opsi berikut:

strokeWidth
Lebar seluruh baris, dalam titik layar. Default-nya adalah 1. Lebarnya tidak diskalakan jika peta di-zoom.
geodesic
Jika YES, render tepi polyline ini sebagai geodesi. Segmen geodesi mengikuti jalur terpendek di sepanjang permukaan Bumi dan mungkin akan muncul sebagai garis melengkung pada peta dengan proyeksi Mercator. Non-geodesi segmen digambar sebagai garis lurus pada peta. Default-nya adalah NO.
spans
Digunakan untuk menentukan warna satu atau beberapa segmen polyline. Tujuan properti spans adalah array dari GMSStyleSpan objek terstruktur dalam jumlah besar. Menyetel properti spans adalah cara yang lebih disukai untuk mengubah warna polyline.
strokeColor
Objek UIColor yang menentukan warna polyline. Default-nya adalah blueColor. Properti strokeColor diabaikan jika spans ditetapkan.

Cuplikan berikut menambahkan polyline tebal dari Melbourne ke Perth, dengan interpolasi geodesi.

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;
      

Untuk memodifikasi polyline setelah ditambahkan ke peta, pastikan untuk tetap mempertahankan objek GMSPolyline.

Swift

polyline.strokeColor = .blue
      

Objective-C

polyline.strokeColor = [UIColor blueColor];
      

Mengubah warna polyline

Polyline digambar sebagai serangkaian segmen pada peta. Anda dapat mengubah warna setiap segmen, atau seluruh baris, dengan properti spans. Meskipun properti ini memberi Anda kontrol terperinci atas pewarnaan polyline, ada beberapa kemudahan yang memungkinkan Anda menerapkan satu gaya ke seluruh garis.

Cuplikan di bawah menggunakan metode spanWithColor: untuk mengubah warna seluruh garis menjadi merah.

Swift

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

Objective-C

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

Atau, jika Anda sudah memiliki akses ke GMSStrokeStyle Anda dapat menggunakan metode spanWithStyle:.

Swift

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

Objective-C

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

Sebelum Maps SDK for iOS versi 1.7, properti tunggal strokeColor tersedia untuk menyetel seluruh warna GMSPolyline. Properti spans lebih diprioritaskan daripada strokeColor.

Swift

polyline.strokeColor = .red
      

Objective-C

polyline.strokeColor = [UIColor redColor];
      

Gaya

Jika aplikasi Anda menerapkan warna goresan yang sama beberapa kali, Anda mungkin akan merasakan manfaatnya untuk mendefinisikan {i>style<i} yang bisa digunakan kembali. Gaya polyline ditentukan menggunakan objek GMSStrokeStyle. Gaya {i>stroke<i} bisa berupa solid warna atau gradien dari satu warna ke warna lain. Setelah Anda membuat Anda dapat menerapkannya ke GMSStyleSpan dengan gaya Metode spanWithStyle:.

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];
      

Gaya span akan berlanjut hingga akhir polyline, atau hingga gaya telah ditetapkan. Anda dapat mengubah warna seluruh garis dengan menetapkan properti spans polyline ke satu GMSStyleSpan Contoh ini menunjukkan cara menerapkan gradien di seluruh panjang polyline.

Swift

polyline.spans = [GMSStyleSpan(style: redYellow)]
      

Objective-C

polyline.spans = @[[GMSStyleSpan spanWithStyle:redYellow]];
      

Mengubah warna setiap segmen garis

Jika ingin menata gaya setiap segmen polyline satu per satu, Anda dapat melakukannya dengan membuat array objek GMSStyleSpan, dan meneruskan ke properti spans. Secara default, setiap item dalam array menetapkan warna segmen garis yang sesuai. Jika ada lebih banyak elemen dalam {i>array<i} dari segmen di garis, elemen tambahan akan diabaikan. Jika jumlah dalam array, GMSStyleSpan terakhir menjelaskan warna untuk sisa garis.

Anda dapat menggunakan blok warna dan/atau polyline gradien untuk menunjukkan perubahan sepanjang polyline Anda, seperti elevasi atau kecepatan. Cuplikan di bawah ini menetapkan warna dua segmen pertama polyline ke merah, dan segmen garis selebihnya berupa gradien dari merah ke kuning.

Swift

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

Objective-C

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

Anda dapat menggunakan metode spanWithStyle:segments: untuk menetapkan gaya beberapa segmen sekaligus. Misalnya, kode berikut setara dengan yang di atas. Panjang segmen dari GMSStyleSpan akhir selalu diabaikan karena gaya digunakan untuk menggambarkan sisa garis.

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]];
      

Segmen pecahan

Segmen juga bisa ditetapkan sebagai nilai pecahan. Cara ini akan menerapkan gaya pada jumlah pecahan segmen, yang berpotensi menyebabkan pemisahan segmen segmen data. Setiap GMSStyleSpan dimulai segera setelah sebelumnya: dalam contoh di bawah ini, warna abu-abu dimulai dari 1⁄2 sampai segmen kedua dan berlanjut ke 1⁄2 sampai segmen ketiga.

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]];
      

Menambahkan pola warna berulang ke polyline

Jika ingin menambahkan pola ke polyline, Anda bisa menggunakan Metode utilitas GMSStyleSpans di GMSGeometryUtils. Tujuan Metode GMSStyleSpans menerima dua array yang menentukan pola berulang. paket Premium AI mengatur gaya yang harus diulang, dan yang lain mendefinisikan interval pengulangan. Jika digunakan bersamaan, Anda dapat membuat pola yang dapat diterapkan di seluruh polyline, apa pun panjangnya atau jumlah segmennya yang tersedia.

Misalnya, cuplikan kode di bawah ini mendefinisikan polyline dengan garis hitam dan putih pola alternatif. Panjangnya diperlakukan sebagai meter di sepanjang garis rhumb (di Mercator, ini adalah garis lurus) sesuai dengan jenis yang ditetapkan kGMSLengthRhumb.

Swift

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

Objective-C

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

Polyline Berstempel Sprite

Polyline Berstempel Sprite memungkinkan Anda membuat polyline menggunakan gambar bitmap berulang pilihan Anda. Bentuk ditampilkan dengan goresan latar belakang yang jelas, tetapi stempelnya tidak terpotong di sudut garis - sehingga berguna untuk situasi seperti titik-titik untuk menggambarkan rute jalan kaki.

Polyline yang diberi stempel sebagai sprite

Anda dapat menggunakan fitur ini menggunakan GMSSpriteStyle dan menyetelnya sebagai stempel menggunakan stampStyleGMSStrokeStyle saat ini.

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 = 20
let image = UIImage(named: "imageFromBundleOrAsset")! // Image could be from anywhere
let stampStyle = GMSSpriteStyle(image: image)
let transparentStampStroke = GMSStrokeStyle.transparentStroke(withStamp: stampStyle)
let span = GMSStyleSpan(style: transparentStampStroke)
polyline.spans = [span]
polyline.map = mapView
      

Objective-C

GMSMutablePath *path = [GMSMutablePath path];
[path addLatitude:-37.81319 longitude:144.96298];
[path addLatitude:-31.95285 longitude:115.85734];
polyline.strokeWidth = 20;
GMSPolyline *polyline = [GMSPolyline polylineWithPath:path];

UIImage *image = [UIImage imageNamed:@"imageFromBundleOrAsset"];
GMSStrokeStyle *transparentStampStroke = [GMSStrokeStyle transparentStrokeWithStampStyle:[GMSSpriteStyle spriteStyleWithImage:image]];

GMSStyleSpan *span = [GMSStyleSpan spanWithStyle:transparentStampStroke];
polyline.spans = @[span];
polyline.map = _mapView;
      

Polyline Berstempel Tekstur

Polyline dengan tekstur berstempel memungkinkan Anda membuat polyline menggunakan tekstur pilihan Anda. Bentuk dapat ditampilkan dengan gradasi atau warna solid yang jelas goresan latar belakang. Ukuran tekstur akan berubah saat tingkat zoom berubah. Gambar di akhir akhir atau awal jalur atau titik jalur terpotong pada tingkat zoom tertentu.

Polyline bertekstur

Anda dapat menggunakan fitur ini menggunakan GMSTextureStyle dan menyetel sebagai stempel menggunakan stampStyleGMSStrokeStyle saat ini.

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 = 20
let redWithStamp = GMSStrokeStyle.solidColor(.red)
let image = UIImage(named: "imageFromBundleOrAsset")! // Image could be from anywhere
redWithStamp.stampStyle = GMSTextureStyle(image: image)
let span = GMSStyleSpan(style: redWithStamp)
polyline.spans = [span]
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 = 20;
GMSStrokeStyle *redWithStamp = [GMSStrokeStyle solidColor:[UIColor redColor]];

UIImage *image = [UIImage imageNamed:@"imageFromBundleOrAsset"]; // Image could be from anywhere
redWithStamp.stampStyle = [GMSTextureStyle textureStyleWithImage:image];

GMSStyleSpan *span = [GMSStyleSpan spanWithStyle:redWithStamp];
polyline.spans = @[span];
polyline.map = _mapView;
      

Kemampuan Peta

Properti mapCapabilities di GMSMapView menambahkan item terprogram yang memeriksa fitur khusus peta. Hal ini berguna jika ingin mengetahui apakah capabilities peta tertentu tersedia sebelum memanggil API tertentu. Ini menentukan apakah tampilan peta mendukung Polyline Sprite Stamped.

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 = 20
let image = UIImage(named: "imageFromBundleOrAsset")! // Image could be from anywhere
let spans: [GMSStyleSpan]
if (mapView.mapCapabilities.contains(.spritePolylines)) {
  let spriteStyle = GMSSpriteStyle(image: image)
  let stroke = GMSStrokeStyle.transparentStroke(withStamp: spriteStyle)
  spans = [ GMSStyleSpan(style: stroke) ]
} else {
  let stroke = GMSStrokeStyle.solidColor(.clear)
  stroke.stampStyle = GMSTextureStyle(image: image)
  spans = [ GMSStyleSpan(style: stroke) ]
}
polyline.spans = spans
polyline.map = mapView
      

Objective-C

GMSMutablePath *path = [GMSMutablePath path];
[path addLatitude:-37.81319 longitude:144.96298];
[path addLatitude:-31.95285 longitude:115.85734];

UIImage *_Nonnull image = [UIImage imageNamed:@"imageFromBundleOrAsset"]; // Image could be from anywhere

NSArray<GMSStyleSpan *> * spans;
if (_mapView.mapCapabilities & GMSMapCapabilityFlagsSpritePolylines) {
  GMSSpriteStyle *spriteStyle = [GMSSpriteStyle spriteStyleWithImage:image];
  GMSStrokeStyle *stroke = [GMSStrokeStyle transparentStrokeWithStampStyle:spriteStyle];
  spans = @[ [GMSStyleSpan spanWithStyle:stroke] ];
} else {
  GMSStrokeStyle *stroke = [GMSStrokeStyle solidColor:UIColor.clearColor];
  stroke.stampStyle = [GMSTextureStyle textureStyleWithImage:image];
  spans = @[ [GMSStyleSpan spanWithStyle:stroke] ];
}

GMSPolyline *polyline = [GMSPolyline polylineWithPath:path];
polyline.strokeWidth = 20;
polyline.spans = spans;
polyline.map = _mapView;
      

Pola ini memungkinkan Anda berlangganan perubahan dan bereaksi terhadap pembaruan peta Anda status tampilan. Anda juga dapat menerapkan didChangeMapCapabilities di GMSMapViewDelegate untuk mendapatkan info terbaru tentang fitur ketersediaan tinggi.

Poligon

Poligon mirip dengan polyline karena mereka terdiri dari serangkaian koordinat visualnya secara berurutan. Namun, alih-alih terbuka, poligon dirancang untuk mendefinisikan region solid dalam loop tertutup. Poligon adalah ditentukan di Maps SDK for iOS oleh GMSPolygon .

Anda dapat menambahkan GMSPolygon ke peta dengan cara yang sama seperti menambahkan GMSPolyline. Pertama, tentukan jalurnya dengan membuat objek GMSMutablePath yang sesuai dan menambahkan titik ke objek tersebut. Titik-titik ini membentuk garis luar poligon. Setiap CLLocationCoordinate2D mewakili sebuah titik di permukaan bumi. Segmen garis digambar di antara poin sesuai dengan urutan Anda menambahkannya ke jalur.

Menambahkan poligon

  1. Buat objek GMSMutablePath.
  2. Tetapkan titik di jalur dengan metode addCoordinate: atau addLatitude:longitude:. Titik-titik ini membentuk garis besar poligon.
  3. Buat instance objek GMSPolygon baru menggunakan jalur sebagai argumen.
  4. Tetapkan properti lain, seperti strokeWidth, strokeColor, dan fillColor, sesuai keinginan.
  5. Tetapkan poligon ke objek GMSMapView dengan menyetel properti GMSPolygon.map.
  6. Poligon akan muncul pada peta.

Cuplikan kode berikut menambahkan persegi panjang ke peta.

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;
      

Anda dapat menyesuaikan tampilan poligon sebelum menambahkannya ke peta dan setelah ditambahkan ke peta.

Menghapus poligon

Hapus Poligon dengan menetapkan properti GMSPolygon.map ke nil dan melepaskan layer dari induknya.

Swift

 polygon.map = nil
 polygon.layer.removeFromSuperLayer()

Objective-C

 polygon.map = nil;
 [polygon.layer removeFromSuperlayer];
 

Lingkaran

Selain class GMSPolygon generik, Maps SDK for iOS juga menyertakan GMSCircle, yang memungkinkan Anda menggambar lingkaran di permukaan bumi.

Untuk membuat lingkaran, Anda harus menetapkan dua properti berikut:

  • position sebagai CLLocationCoordinate2D.
  • radius dalam meter.

Sebuah lingkaran kemudian didefinisikan sebagai serangkaian titik di permukaan Bumi yang berjarak radius meter dari center yang diberikan. Karena bagaimana Proyeksi Mercator yang digunakan Maps API akan merender bola pada permukaan yang datar, lingkaran ini akan muncul sebagai lingkaran yang hampir sempurna pada peta saat berada di dekat khatulistiwa, dan tampak semakin non-melingkar (pada layar) sebagai lingkaran bergerak menjauh dari khatulistiwa.

Menambahkan lingkaran

Cuplikan kode berikut menambahkan lingkaran ke peta:

Swift

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

Objective-C

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

Anda dapat menyesuaikan tampilan lingkaran sebelum menambahkannya ke peta dan setelah ditambahkan ke peta.

Menyesuaikan lingkaran

Anda bisa menentukan warna khusus dan lebar guratan dengan memodifikasi properti GMSCircle Ini mendukung opsi berikut:

fillColor
Objek UIColor yang menentukan warna interior objek lingkaran. Default-nya adalah transparan.
strokeColor
Objek UIColor yang menentukan warna garis batas lingkaran. Default-nya adalah blackColor.
strokeWidth
Ketebalan garis batas lingkaran, dalam titik layar. Default-nya adalah 1. Ketebalan tidak diskalakan bila peta di-zoom.

Cuplikan berikut menambahkan lingkaran merah tebal dengan warna merah semi-transparan interior rumah.

Swift

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

Objective-C

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

Membuat poligon kosong

Anda dapat menggabungkan beberapa jalur dalam satu objek GMSPolygon untuk membuat bentuk yang kompleks, seperti cincin yang diisi, atau donat (dengan bidang poligonal muncul di dalam poligon sebagai bentuk terpisah). Bentuk kompleks adalah komposisi dari beberapa jalur.

Buat poligon dengan jalur yang menentukan bidang terbesar yang ditutup oleh poligon. Kemudian, tentukan properti holes poligon sebagai array dari satu atau objek GMSPath lainnya, yang menentukan lubang dalam poligon.

Jika jalur yang lebih kecil tertutup sepenuhnya oleh jalur yang lebih besar, jalur tersebut akan tampak seperti bagian poligon telah dihapus.

Contoh kode berikut membuat poligon dengan dua lubang:

Swift

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 hollowPolygon = GMSPolygon()
hollowPolygon.path = GMSPath(fromEncodedPath: hydePark)
hollowPolygon.holes = [GMSPath(fromEncodedPath: archibaldFountain)!, GMSPath(fromEncodedPath: reflectionPool)!]
hollowPolygon.fillColor = UIColor(red: 1.0, green: 0.0, blue: 0.0, alpha: 0.2)
hollowPolygon.strokeColor = UIColor(red: 1.0, green: 0.0, blue: 0.0, alpha: 1.0)
hollowPolygon.strokeWidth = 2
hollowPolygon.map = mapView
      

Objective-C

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 *hollowPolygon = [[GMSPolygon alloc] init];
hollowPolygon.path = [GMSPath pathFromEncodedPath:hydePark];
hollowPolygon.holes = @[[GMSPath pathFromEncodedPath:archibaldFountain],
                  [GMSPath pathFromEncodedPath:reflectionPool]];
hollowPolygon.fillColor = [UIColor colorWithRed:1.0 green:0.0 blue:0.0 alpha:0.2];
hollowPolygon.strokeColor = [UIColor colorWithRed:1.0 green:0.0 blue:0.0 alpha:1.0];
hollowPolygon.strokeWidth = 2;
hollowPolygon.map = mapView;