Şekiller

Platform seçin: Android iOS JavaScript

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

  • Çoklu çizgi, istediğiniz şekli oluşturabilen ve haritadaki yolları ve rotaları işaretlemek için kullanılabilen bir dizi bağlantılı çizgi segmentidir.
  • Poligon, haritadaki alanları işaretlemek için kullanılabilen kapalı bir şekildir.
  • Daire, Dünya yüzeyindeki bir dairenin 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 çizgi çizmenize olanak tanır. GMSPolyline nesnesi, bir dizi çizgi segmenti olarak gösterilen sıralı bir konum dizisini temsil eder. GMSStrokeStyle ile çoklu çizginin rengini ayarlayabilirsiniz.

Çoklu çizgi oluşturmak için iki veya daha fazla noktaya sahip karşılık gelen bir GMSMutablePath nesnesi oluşturarak yolunu belirtmeniz gerekir. Her CLLocationCoordinate2D, Dünya yüzeyindeki bir noktayı temsil eder. Çizgi segmentleri, yola eklediğiniz sıraya göre noktalar 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. Yoldaki noktaları addCoordinate: veya addLatitude:longitude: yöntemleriyle ayarlayın.
  3. Yolu bağımsız değişken olarak kullanarak yeni bir GMSPolyline nesnesi oluşturun.
  4. strokeWidth ve strokeColor gibi diğer özellikleri gerektiği şekilde 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 öğenizin map özelliğini nil olarak ayarlayarak haritadan bir çoklu çizgiyi kaldırabilirsiniz. Alternatif olarak, GMSMapView clear yöntemini çağırarak haritadaki tüm yer paylaşımlarını (ç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 sunar. Aşağıdaki seçenekleri destekler:

strokeWidth
Tüm çizginin ekran noktası 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 olduğunda bu çoklu çizgi kenarını jeodezik olarak oluşturun. Jeodezik segmentler, Dünya yüzeyindeki en kısa yolu izler ve Mercator projeksiyonlu bir haritada eğri çizgiler olarak görünebilir. Jeodezik olmayan segmentler haritada düz çizgiler olarak çizilir. Varsayılan değer NO'dir.
spans
Çoklu çizginin bir veya daha fazla segmentinin rengini belirtmek için kullanılır. spans özelliği, GMSStyleSpan nesnelerinden oluşan bir dizidir. Çoklu çizginin rengini değiştirmek için spans özelliğini ayarlamak tercih edilen yöntemdir.
strokeColor
Çoklu çizginin rengini belirten bir UIColor nesnesi. Varsayılan değer blueColor'dir. spans ayarlanmışsa strokeColor özelliği yoksayılır.

Aşağıdaki snippet, jeodezik interpolasyon ile 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;
      

Haritaya eklenen bir çoklu çizgiyi değiştirmek için GMSPolyline nesnesini sakladığınızdan emin olun.

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ğini kullanarak tek tek segmentlerin veya tüm çizginin rengini değiştirebilirsiniz. Bu özellik, çoklu çizginin renklendirilmesi üzerinde ayrıntılı kontrol imkanı sunarken tüm çizgiye tek bir stil uygulamanıza olanak tanıyan çeşitli kolaylıklar da mevcuttur.

Aşağıdaki snippet, tüm satırın rengini kırmızıya değiştirmek 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, bir GMSPolyline nesnesinin tüm rengini ayarlamak için tek bir strokeColor mülkü kullanılıyordu. spans özelliği, strokeColor özelliğine göre daha önceliklidir.

Swift

polyline.strokeColor = .red
      

Objective-C

polyline.strokeColor = [UIColor redColor];
      

Stiller

Uygulamanız aynı kontur rengini birkaç kez uyguluyorsa yeniden kullanılabilir bir stil tanımlamanız faydalı olabilir. Çoklu çizgi stilleri, GMSStrokeStyle nesnesi kullanılarak belirtilir. Kontur stili, düz renk veya bir renkten diğerine geçiş yapan bir gradyan olabilir. Oluşturduğunuz stilleri spanWithStyle: yöntemini kullanarak 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];
      

span stili, çoklu çizginin sonuna kadar veya yeni bir stil ayarlanana kadar devam eder. Çoklu çizginin spans özelliğini tek bir GMSStyleSpan olarak ayarlayarak tüm çizginin rengini değiştirebilirsiniz. Örnekte, çoklu çizginin tamamına nasıl gradyan 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 segmentini ayrı ayrı biçimlendirmek istiyorsanız GMSStyleSpan nesnelerinden oluşan bir dizi oluşturup bunu spans özelliğine iletebilirsiniz. Varsayılan olarak, dizideki her öğe karşılık gelen çizgi segmentinin rengini ayarlar. Dizide satırdaki segmentlerden daha fazla öğe varsa fazladan öğeler yoksayılır. Dizide daha az öğe varsa son GMSStyleSpan, satırın geri kalanının rengini tanımlar.

Çoklu çizginiz boyunca yükseklik veya hız gibi değişiklikleri belirtmek için renk blokları ve/veya gradyan çoklu çizgiler kullanabilirsiniz. Aşağıdaki snippet, bir çoklu çizginin ilk iki segmentinin rengini kırmızıya ayarlar. Çizginin geri kalanı ise kırmızıdan sarıya doğru bir gradyandı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]];
      

Aynı anda birden fazla segmentin stilini 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ı tanımlamak için kullanıldığından son GMSStyleSpan öğesinin segment uzunluğu her zaman yoksayı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]];
      

Kesirli segmentler

Segmentler kesirli değer olarak da belirtilebilir. Bu işlem, stili segmentlerin kesirli sayısına uygular ve tek bir segmentte bölünmeye neden olabilir. Her GMSStyleSpan, bir öncekinin hemen ardından başlar: Aşağıdaki örnekte gri renk, ikinci segmentin yarısından başlayıp üçüncü segmentin yarısına kadar 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 yinelenen renk deseni ekleme

Çoklu çizgiye desen eklemek istiyorsanız GMSGeometryUtils içindeki GMSStyleSpans yardımcı yöntemini kullanabilirsiniz. GMSStyleSpans yöntemi, yinelenen bir kalıbı tanımlayan iki diziyi kabul eder. Dizilerden biri tekrarlanması gereken stilleri, diğeri ise tekrar aralığını tanımlar. Bunları birlikte kullanarak, 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 ve beyaz alternatif desene sahip bir çoklu çizgi tanımlar. Tür kGMSLengthRhumb olarak belirtildiğinden uzunlukları, kerte hattı (Mercator'da bu düz bir çizgidir) boyunca metre olarak değerlendirilir.

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

Sprite Stamped Polylines

Sprite damgalı çoklu çizgiler, seçtiğiniz bir bitmap resmini tekrarlayarak çoklu çizgi oluşturmanıza olanak tanır. Şekiller, net bir arka plan konturuyla gösterilir ancak damga, çizgi köşelerinde kesilmez. Bu sayede, yaya yol tariflerini göstermek için kullanılan noktalar gibi durumlarda kullanışlıdır.

Sprite damgalı çoklu çizgi

Bu özelliği GMSSpriteStyle kullanarak ve GMSStrokeStyle'ın stampStyle özelliğini kullanarak damga olarak ayarlayabilirsiniz.

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];
GMSPolyline *polyline = [GMSPolyline polylineWithPath:path];
polyline.strokeWidth = 20;

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, seçtiğiniz tekrarlanan bir dokuyu kullanarak çoklu çizgi oluşturmanıza olanak tanır. Şekiller şeffaf, düz renkli veya geçişli arka plan konturuyla gösterilebilir. Doku, yakınlaştırma seviyeleri değiştikçe yeniden boyutlandırılır. Yolların veya yol noktalarının sonundaki ya da başındaki resimler, belirli yakınlaştırma seviyelerinde kesilir.

Dokulu çoklu çizgi

Bu özelliği GMSTextureStyle kullanarak ve GMSStrokeStyle'ın stampStyle özelliğini kullanarak damga olarak ayarlayabilirsiniz.

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 özgü özellikler için programatik kontrol ekler. Bu, belirli API'leri çağırmadan önce belirli harita capabilities özelliklerinin kullanılabilir olup olmadığını öğrenmek istediğinizde yararlıdır. Bu sorgu, harita görünümünün Sprite 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 harita görünümü durumunuzla ilgili güncellemelere tepki vermenize olanak tanır. Özelliklerin kullanılabilirliğiyle ilgili güncellemeleri almak için GMSMapViewDelegate sayfasında didChangeMapCapabilities özelliğini de uygulayabilirsiniz.

Poligonlar

Çokgenler, sıralı bir koordinat dizisinden oluşmaları bakımından çoklu çizgilere benzer. Ancak çokgenler, açık uçlu olmak yerine kapalı bir döngü içinde düz bölgeler 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 eklediğiniz şekilde GMSPolygon da ekleyebilirsiniz. Öncelikle, ilgili bir GMSMutablePath nesnesi oluşturup bu nesneye noktalar ekleyerek yolunu belirtin. Bu noktalar poligonun ana hatlarını oluşturur. Her CLLocationCoordinate2D, Dünya yüzeyindeki bir noktayı temsil eder. Çizgi segmentleri, yola eklediğiniz sıraya göre noktalar arasında çizilir.

Poligon ekle

  1. GMSMutablePath nesnesi oluşturun.
  2. Yoldaki noktaları addCoordinate: veya addLatitude:longitude: yöntemleriyle ayarlayın. Bu noktalar, çokgenin ana hatlarını oluşturur.
  3. Yolu bağımsız değişken olarak kullanarak yeni bir GMSPolygon nesnesi örneklendirin.
  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;
      

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

Poligon kaldırma

GMSPolygon.map özelliğini nil olarak ayarlayıp layer öğesini üst öğesinden ayırarak bir Polygon'u 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 sınıfını da içerir.

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

  • position, CLLocationCoordinate2D olarak.
  • radius (metre cinsinden).

Ardından, Dünya yüzeyinde belirtilen center noktasından radius metre uzaklıktaki tüm noktaların kümesi olarak bir daire tanımlanır. Maps API tarafından kullanılan Mercator projeksiyonunun bir küreyi düz bir yüzeyde oluşturma şekli nedeniyle, ekvatorun yakınında bulunan bir daire haritada neredeyse mükemmel bir daire olarak görünür ve daire ekvatordan uzaklaştıkça giderek daha az dairesel görünür (ekranda).

Çember 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;
      

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

Çemberi özelleştirme

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

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

Aşağıdaki snippet, yarı şeffaf kırmızı iç kısma sahip 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ş poligon oluşturma

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

Poligonun kapsadığı en büyük alanı belirten bir yola sahip bir poligon oluşturun. Ardından, çokgenin holes özelliğini, çokgendeki delikleri tanımlayan bir veya daha fazla GMSPath nesnesinden oluşan bir dizi olarak belirtin.

Daha küçük bir yol, daha büyük bir yol tarafından tamamen kapatılırsa çokgenin bir parçası kaldırılmış gibi görünür.

Aşağıdaki kod örneğinde iki delikli bir poligon oluşturulmaktadır:

Swift

let hydeParkLocation = CLLocationCoordinate2D(latitude: -33.87344, longitude: 151.21135)
let camera = GMSCameraPosition.camera(withTarget: hydeParkLocation, zoom: 16)
let options = GMSMapViewOptions()
options.camera = camera
let mapView = GMSMapView(options: options)
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];
GMSMapViewOptions *options = [[GMSMapViewOptions alloc] init];
options.camera = camera;
mapView = [[GMSMapView alloc] initWithOptions:options];

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;