Şekiller

Platform seçin: Android iOS JavaScript

iOS için Haritalar SDK'sı, haritalarınıza şekil eklemeniz için çeşitli yollar sunar. Aşağıdaki şekiller desteklenir:

  • Çoklu çizgi, istediğiniz herhangi bir şekli oluşturabilen ve harita üzerinde yolları ve rotaları işaretlemek için kullanılabilen bir dizi bağlı çizgi segmentidir.
  • Poligon, haritadaki alanları işaretlemek için kullanılabilen içine alınmış bir şekildir.
  • Daire, bir dairenin Dünya yüzeyine ilişkin coğrafi olarak doğru bir projeksiyonudur.

Her şeklin görünümünü çeşitli şekillerde değiştirebilirsiniz.

Çoklu çizgiler

Çoklu çizgiler, harita üzerinde çizgiler çizmenize olanak tanır. GMSPolyline nesnesi, çizgi segmentleri olarak gösterilen sıralı bir konum dizisini temsil eder. GMSStrokeStyle ile bir çoklu çizginin rengini ayarlayabilirsiniz.

Bir çoklu çizgi oluşturmak için iki veya daha fazla noktayla karşılık gelen bir GMSMutablePath nesnesi oluşturarak çoklu çizginin yolunu belirtmeniz gerekir. Her CLLocationCoordinate2D, Dünya yüzeyinde bir noktayı temsil eder. Çizgi segmentleri, noktaları yola eklediğiniz sıraya göre noktaların arasında çizilir. addCoordinate: veya addLatitude:longitude: yöntemleriyle yola nokta ekleyebilirsiniz.

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

Çoklu çizgi ekleme

  1. GMSMutablePath nesnesi oluşturun.
  2. addCoordinate: veya addLatitude:longitude: yöntemlerini kullanarak yoldaki noktaları belirleyin.
  3. Yolu bağımsız değişken olarak kullanarak yeni bir GMSPolyline nesnesi somutlaştırın.
  4. strokeWidth ve strokeColor gibi diğer özellikleri gerektiği gibi ayarlayın.
  5. GMSPolyline öğesinin map özelliğini ayarlayın.
  6. Çoklu çizgi haritada görünür.

Aşağıdaki kod snippet'i haritaya bir dikdörtgen ekler:

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;
      

Dikdörtgen çoklu çizgi

Çoklu çizgiyi kaldırma

GMSPolyline cihazınızın map özelliğini nil şeklinde ayarlayarak bir çoklu çizgiyi haritadan kaldırabilirsiniz. Alternatif olarak, GMSMapView clear yöntemini çağırarak haritadaki tüm bindirmeleri (çoklu çizgiler ve diğer şekiller dahil) kaldırabilirsiniz.

Swift

mapView.clear()
      

Objective-C

[mapView clear];
      

Çoklu çizgiyi özelleştirme

GMSPolyline nesnesi, çizginin görünümünü kontrol etmek için çeşitli özellikler sağlar. Aşağıdaki seçenekleri destekler:

strokeWidth
Tüm çizginin ekran noktaları cinsinden genişliği. Varsayılan olarak 1 değerine ayarlanır. Harita yakınlaştırıldığında genişlik ölçeklendirilmez.
geodesic
YES sırasında bu çoklu çizgi kenarını jeodezik olarak oluşturun. Jeodezik segmentler, Dünya yüzeyindeki en kısa yolu izler ve Merkatör projeksiyonuyla haritada eğri çizgiler olarak görünebilir. Jeodezik olmayan segmentler harita üzerinde düz çizgiler olarak çizilir. Varsayılan olarak NO değerine ayarlanır.
spans
Çoklu çizgideki bir veya daha fazla segmentin rengini belirtmek için kullanılır. Spans özelliği, GMSStyleSpan nesnelerinden oluşan bir dizidir. Çoklu çizginin rengini değiştirmek için tercih edilen yöntem spans özelliğini ayarlamaktır.
strokeColor
Çoklu çizginin rengini belirten bir UIColor nesnesi. Varsayılan olarak blueColor değerine ayarlanır. spans ayarlanırsa strokeColor özelliği yoksayılır.

Aşağıdaki snippet, jeodezik interpolasyonla Melbourne'den Perth'e kalın bir çoklu çizgi ekler.

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;
      

Bir çoklu çizgiyi haritaya eklendikten sonra değiştirmek için GMSPolyline nesnesini tutun.

Swift

polyline.strokeColor = .blue
      

Objective-C

polyline.strokeColor = [UIColor blueColor];
      

Çoklu çizginin rengini değiştirme

Çoklu çizgiler, haritada bir dizi segment olarak çizilir. spans özelliğiyle tek tek segmentlerin veya çizginin tamamının rengini değiştirebilirsiniz. Bu özellik size bir çoklu çizginin renklendirmesi üzerinde ayrıntılı kontrol sunsa da tek bir stili tüm çizgiye uygulamanızı sağlayan birkaç avantaj vardır.

Aşağıdaki snippet, çizginin tamamının rengini kırmızıya dönüştürmek için spanWithColor: yöntemini kullanır.

Swift

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

Objective-C

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

Alternatif olarak, bir GMSStrokeStyle nesnesine zaten erişiminiz varsa spanWithStyle: yöntemini kullanabilirsiniz.

Swift

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

Objective-C

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

iOS için Haritalar SDK'sının 1.7 sürümünden önce, GMSPolyline öğesinin tüm rengini ayarlamak için tek bir strokeColor özelliği kullanılabiliyordu. spans özelliği, strokeColor özelliğine göre önceliklidir.

Swift

polyline.strokeColor = .red
      

Objective-C

polyline.strokeColor = [UIColor redColor];
      

Stiller

Uygulamanız aynı fırça rengini birkaç kez uyguluyorsa yeniden kullanılabilir bir stil tanımlamayı faydalı bulabilirsiniz. Çoklu çizgi stilleri, GMSStrokeStyle nesnesi kullanılarak belirtilir. Fırça stili, düz bir renk veya bir renkten diğerine geçiş olabilir. Bir stil oluşturduktan sonra bunu spanWithStyle: yöntemiyle bir GMSStyleSpan öğesine uygulayabilirsiniz.

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

Bir span stili, çoklu çizginin sonuna veya yeni bir stil ayarlanana kadar devam eder. Bir çoklu çizginin spans özelliğini tek bir GMSStyleSpan olacak şekilde ayarlayarak tüm çizginin rengini değiştirebilirsiniz. Bu örnekte, çoklu çizginin tüm uzunluğu boyunca bir renk geçişinin nasıl uygulanacağı gösterilmektedir.

Swift

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

Objective-C

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

Tek tek çizgi segmentlerinin rengini değiştirme

Çoklu çizginizin her segmentine ayrı ayrı stil eklemek istiyorsanız bir GMSStyleSpan nesne dizisi oluşturup bunu spans özelliğine iletebilirsiniz. Varsayılan olarak, dizideki her öğe karşılık gelen çizgi segmentinin rengini belirler. Dizide, satırdaki segmentlerden daha fazla öğe varsa fazla olan öğeler yoksayılır. Dizide daha az öğe varsa son GMSStyleSpan, satırın geri kalanının rengini açıklar.

Çoklu çizginiz üzerindeki yükseklik veya hız gibi değişiklikleri belirtmek için renk blokları ve/veya gradyan çoklu çizgileri kullanabilirsiniz. Aşağıdaki snippet'te bir çoklu çizginin ilk iki segmentinin rengini kırmızıya, çizginin geri kalanında ise kırmızıdan sarıya bir renk geçişi vardır.

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

Birden çok segmentin stilini aynı anda ayarlamak için spanWithStyle:segments: yöntemini kullanabilirsiniz. Örneğin, aşağıdaki kod yukarıdakiyle eşdeğerdir. Stil, satırın geri kalanını açıklamak için kullanıldığından son GMSStyleSpan parçanın uzunluğu her zaman yok sayılır.

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

Kısmi segmentler

Segmentler, kesirli değerler olarak da belirtilebilir. Bu işlem, stili kesirli segment sayısına uygular ve potansiyel olarak tek bir segmentte bölünmeye neden olur. Her GMSStyleSpan bir önceki segmentten hemen sonra başlar: Aşağıdaki örnekte, gri renk 1⁄2'den ikinci segmente kadar başlar ve üçüncü segmentte 1⁄2 ile devam eder.

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

Çoklu çizgiye tekrarlanan bir renk deseni ekleme

Bir çoklu çizgiye desen eklemek isterseniz GMSGeometryUtils içindeki GMSStyleSpans yardımcı programı yöntemini kullanabilirsiniz. GMSStyleSpans yöntemi, tekrar eden bir kalıp tanımlayan iki diziyi kabul eder. Bir dizi, tekrarlanması gereken stilleri, diğeri de tekrar aralığını tanımlar. Birlikte kullanıldığında, uzunluğu veya mevcut segment sayısı ne olursa olsun herhangi bir çoklu çizgiye uygulanabilecek bir desen oluşturabilirsiniz.

Örneğin, aşağıdaki kod snippet'i siyah beyaz alternatif desenli bir çoklu çizgi tanımlar. Tür, kGMSLengthRhumb olarak belirtildiğinden uzunlukları, başparmak çizgisi boyunca metre cinsinden kabul edilir (Mercator'da bu düz bir çizgidir).

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

İmge Damgalı Çoklu Çizgiler

İmge Damgalı çoklu çizgiler, seçtiğiniz tekrarlanan bit eşlem resmini kullanarak bir çoklu çizgi oluşturmanıza olanak tanır. Şekiller, arka planda net bir çizgiyle gösterilir, ancak çizginin köşeleri kısaltılmaz. Bu nedenle, yürüme yol tariflerini gösteren noktalar gibi durumlarda kullanışlıdır.

İmge damgalı çoklu çizgi

Bu özelliği, GMSSpriteStyle aracılığıyla ve GMSStrokeStyle stampStyle özelliği ile damga olarak ayarlayarak kullanabilirsiniz.

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;
      

Doku Damgalı Çoklu Çizgiler

Doku damgalı çoklu çizgiler, istediğiniz tekrarlanan dokuyu kullanarak bir çoklu çizgi oluşturmanıza olanak tanır. Şekiller net, düz renk veya gradyan arka plan fırçasıyla gösterilebilir. Yakınlaştırma düzeyleri değiştikçe doku yeniden boyutlandırılır. Yolların veya yol noktalarının sonundaki ya da başındaki resimler, belirli yakınlaştırma düzeylerinde kesilir.

Dokulu çoklu çizgi

GMSTextureStyle kullanarak ve GMSStrokeStyle stampStyle özelliğini kullanarak bunu damga olarak ayarlayarak bu özelliği kullanabilirsiniz.

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;
      

Harita Özellikleri

GMSMapView üzerindeki mapCapabilities özelliği, haritaya özel özellikler için programatik kontrol ekler. Bu, belirli API'leri çağırmadan önce belirli capabilities haritasının kullanılabilir olup olmadığını öğrenmek istediğinizde faydalı olur. Bu sorgu, harita görünümünün Model Damgalı Çoklu Çizgileri destekleyip desteklemediğini belirler.

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;
      

Bu kalıp, değişikliklere abone olmanıza ve güncellemelere harita görünümü durumunuzla yanıt vermenize olanak tanır. Özellik kullanılabilirliği hakkında güncellemeler almak için GMSMapViewDelegate sitesinde didChangeMapCapabilities öğesini de uygulayabilirsiniz.

Poligonlar

Poligonlar, sıralı bir dizi koordinattan oluşması bakımından çoklu çizgilere benzer. Ancak çokgenler açık uçlu olmak yerine, kapalı bir döngü içindeki katı bölgeleri tanımlamak için tasarlanmıştır. Poligonlar, iOS için Haritalar SDK'sında GMSPolygon sınıfı tarafından tanımlanır.

Haritaya, GMSPolyline ekler gibi GMSPolygon ekleyebilirsiniz. Öncelikle, karşılık gelen bir GMSMutablePath nesnesi oluşturup bu nesneye noktalar ekleyerek yolunu belirtin. Bu noktalar çokgenin ana hattını oluşturur. Her CLLocationCoordinate2D, Dünya yüzeyindeki bir noktayı temsil eder. Çizgi segmentleri, noktaları yola ekleme sıranıza göre arasında çizilir.

Poligon ekle

  1. GMSMutablePath nesnesi oluşturun.
  2. addCoordinate: veya addLatitude:longitude: yöntemlerini kullanarak yoldaki noktaları belirleyin. Bu noktalar çokgenin ana hattını oluşturur.
  3. Yolu bağımsız değişken olarak kullanarak yeni bir GMSPolygon nesnesi somutlaştırın.
  4. strokeWidth, strokeColor ve fillColor gibi diğer özellikleri istediğiniz gibi ayarlayın.
  5. GMSPolygon.map özelliğini ayarlayarak poligonu bir GMSMapView nesnesine atayın.
  6. Poligon haritada görünür.

Aşağıdaki kod snippet'i haritaya bir dikdörtgen ekler.

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;
      

Poligonun görünümünü, hem haritaya eklemeden önce hem de haritaya eklemeden sonra özelleştirebilirsiniz.

Çokgen kaldırma

Bir Poligonun GMSPolygon.map özelliğini nil olarak ayarlayıp layer öğesini üst öğesinden ayırarak söz konusu Poligonu kaldırın.

Swift

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

Objective-C

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

Daireler

iOS için Haritalar SDK'sı, genel GMSPolygon sınıfına ek olarak dünya yüzeyinde daireler çizmenize olanak tanıyan GMSCircle özelliğini de içerir.

Daire oluşturmak için aşağıdaki iki özelliği belirtmeniz gerekir:

  • CLLocationCoordinate2D ile position.
  • radius metre cinsinden.

Daha sonra daire, Dünya yüzeyinde belirli bir center değerinden radius metre uzaklıktaki tüm noktaların kümesi olarak tanımlanır. Google Haritalar API'sinin kullandığı Mercator projeksiyonu düz bir yüzeyde küreyi oluşturma biçiminden dolayı, ekvatora yakın olduğunda haritada neredeyse mükemmel bir daire olarak görünür ve daire ekvatordan uzaklaştıkça (ekranda) giderek daha da dairesel biçimde görünmez.

Çevre ekleme

Aşağıdaki kod snippet'i haritaya bir daire ekler:

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;
      

Çemberin görünümünü, hem haritaya eklemeden önce hem de haritaya eklemeden sonra özelleştirebilirsiniz.

Bir çevreyi özelleştirme

GMSCircle öğesinin özelliklerini değiştirerek özel renkler ve fırça genişlikleri belirtebilirsiniz. Aşağıdaki seçenekleri destekler:

fillColor
Dairenin iç rengini belirten UIColor nesnesi. Varsayılan olarak şeffaftır.
strokeColor
Dairenin dış çizgisinin rengini belirten UIColor nesnesi. Varsayılan olarak blackColor değerine ayarlanır.
strokeWidth
Dairenin dış çizgisinin ekran noktaları cinsinden kalınlığı. Varsayılan olarak 1 değerine ayarlanır. Harita yakınlaştırıldığında kalınlık ölçeklenmiyor.

Aşağıdaki snippet, yarı şeffaf kırmızı bir iç mekanı olan kalın kırmızı bir daire ekler.

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;
      

İçi boş çokgen oluşturma

Dolgulu halkalar veya halkalar (poligon içinde poligon alanlarının ayrı şekiller olarak göründüğü) gibi karmaşık şekiller oluşturmak için tek bir GMSPolygon nesnesinde birden fazla yolu birleştirebilirsiniz. Karmaşık şekiller, birden fazla yolun birleşimidir.

Poligonun kapladığı en büyük alanı belirten yoluyla bir poligon oluşturun. Ardından poligonun holes özelliğini, poligon içindeki delikleri tanımlayan bir veya daha fazla GMSPath nesnesinden oluşan bir dizi olarak belirtin.

Daha küçük bir yol büyük yol tarafından tamamen çevrilirse, poligonun bir parçası kaldırılmış gibi görünür.

Aşağıdaki kod örneği, iki delikli bir poligon oluşturur:

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;