
iOS için Haritalar SDK'sı, haritalara şekil eklemek için çeşitli yöntemler sunar. Aşağıdaki şekiller desteklenir:
- Çoklu çizgi, istediğiniz şekli oluşturabilen ve haritada yollar ile rotaları işaretlemek için kullanılabilen, birbirine bağlı bir dizi çizgi segmentidir.
- Poligon, haritada alanları işaretlemek için kullanılabilen kapalı bir şekildir.
- Daire, Dünya'nın yüzeyindeki bir dairenin coğrafi olarak doğru bir projeksiyonudur.
Her bir şeklin görünümünü çeşitli şekillerde değiştirebilirsiniz.
Çoklu çizgiler
Poli çizgiler, haritada çizgi çizmenize olanak tanır. GMSPolyline objesi, bir dizi çizgi segmenti olarak görüntülenen sıralı bir konum dizisini temsil eder. GMSStrokeStyle ile bir çok çizginin rengini ayarlayabilirsiniz.
Bir çok çizgi oluşturmak için iki veya daha fazla nokta içeren karşılık gelen bir GMSMutablePath nesnesi oluşturarak yolunu belirtmeniz gerekir.
Her CLLocationCoordinate2D, Dünya'nın yüzeyindeki bir noktayı temsil eder. Çizgi segmentleri, noktalara eklediğiniz sıraya göre ç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
- Bir
GMSMutablePathnesnesi oluşturun. - Yoldaki noktaları
addCoordinate:veyaaddLatitude:longitude:yöntemleriyle ayarlayın. - Yolu bağımsız değişken olarak kullanarak yeni bir
GMSPolylinenesnesi oluşturun. - Gerekirse
strokeWidthvestrokeColorgibi diğer özellikleri ayarlayın. GMSPolylineöğesininmapözelliğini ayarlayın.- Poli çizgisi haritada görünür.
Aşağıdaki kod snippet'i bir haritaya 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;

Çoklu çizgileri kaldırma
GMSPolyline öğenizin map mülkünü nil olarak ayarlayarak bir çok çizgiyi haritadan 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 sağlar. Aşağıdaki seçenekleri destekler:
strokeWidth- Satırın tamamının genişliği (ekran noktası cinsinden). Varsayılan olarak 1 değerine ayarlanır. Harita yakınlaştırıldığında genişlik ölçeklendirilmez.
geodesic-
YESolduğunda bu çoklu çizgi kenarını jeodezik olarak oluşturun. Geodezitik segmentler, Dünya yüzeyindeki en kısa yolu izler ve Mercator projeksiyonuna sahip bir haritada kavisli çizgiler olarak görünebilir. Geodeziden farklı segmentler haritada düz çizgiler olarak çizilir. Varsayılan olarakNOdeğerine ayarlanır. spans- Bir çok çizginin bir veya daha fazla segmentinin rengini belirtmek için kullanılır. spans özelliği,
GMSStyleSpannesnelerinden oluşan bir dizidir. Bir çok çizginin rengini değiştirmenin tercih edilen yoluspansözelliğini ayarlamaktır. strokeColor- Poli çizginin rengini belirten bir
UIColornesnesi. Varsayılan olarakblueColordeğerine ayarlanır.spansayarlanmışsastrokeColorözelliği yoksayılır.
Aşağıdaki snippet, Melbourne'dan Perth'e jeodezik enterpolasyonla kalın bir poli çizgisi 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 çok çizgiyi haritaya ekledikten sonra değiştirmek için GMSPolyline nesnesini tutmaya devam edin.
Swift
polyline.strokeColor = .blue
Objective-C
polyline.strokeColor = [UIColor blueColor];
Bir çok çizginin rengini değiştirme
Poli çizgiler haritada bir dizi segment olarak çizilir. spans mülkünü kullanarak segmentlerin tek tek veya satırın tamamının rengini değiştirebilirsiniz. Bu özellik, bir çok çizginin renklendirilmesi üzerinde ayrıntılı kontrol sahibi olmanızı sağlar. Bununla birlikte, çizginin tamamına tek bir stil uygulamanıza olanak tanıyan çeşitli kolaylıklar vardır.
Aşağıdaki snippet'te, çizginin tamamının rengini kırmızıya değiştirmek için spanWithColor: yöntemi kullanılmaktadı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 nesnesinin tüm rengini ayarlamak için tek bir strokeColor mülkü kullanılabiliyordu. spans özelliği, strokeColor özelliğine göre daha önceliklidir.
Swift
polyline.strokeColor = .red
Objective-C
polyline.strokeColor = [UIColor redColor];
Stiller
Uygulamanız aynı çizgi rengini birkaç kez uyguluyorsa yeniden kullanılabilir bir stil tanımlamak yararlı olabilir. Çoklu çizgi stilleri GMSStrokeStyle nesnesi kullanılarak belirtilir. Bir çizgi stili, düz renk veya bir renkten başka bir renge geçiş yapan bir gradyan olabilir. Bir stil oluşturduktan sonra spanWithStyle: yöntemini kullanarak bu stili 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'nin stili, çoklu çizginin sonuna kadar veya yeni bir stil ayarlanana kadar devam eder. Bir çok çizginin spansözelliğini tek bir GMSStyleSpan olarak ayarlayarak çizginin tamamını değiştirebilirsiniz. Örnekte, çok çizginin tüm uzunluğuna nasıl degrade uygulanacağı gösterilmektedir.
Swift
polyline.spans = [GMSStyleSpan(style: redYellow)]
Objective-C
polyline.spans = @[[GMSStyleSpan spanWithStyle:redYellow]];
Satır segmentlerinin rengini tek tek değiştirme
Poli çizginizin her segmentine ayrı ayrı stil uygulamak istiyorsanız bir GMSStyleSpan nesnesi dizisi oluşturup bunu spans mülküne iletebilirsiniz. Varsayılan olarak, dizideki her öğe, ilgili çizgi segmentinin rengini belirler. Dizede satırdaki segmentlerden daha fazla öğe varsa fazla öğeler yoksayılacaktır. Dizideki öğe sayısı daha azsa son GMSStyleSpan, satırın geri kalanının rengini tanımlar.
Poli çizginizdeki yükseklik veya hız gibi değişiklikleri belirtmek için renk blokları ve/veya degrade poli çizgileri kullanabilirsiniz. Aşağıdaki snippet, bir çok çizginin ilk iki segmentinin rengini kırmızı olarak ayarlar. Çizginin geri kalanı ise kırmızıdan sarıya doğru bir degradedir.
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]];
Stili birden fazla segment için tek seferde ayarlamak üzere spanWithStyle:segments: yöntemini kullanabilirsiniz. Örneğin, aşağıdaki kod yukarıdakine 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]];
Kısmi segmentler
Segmentler kesirli değer olarak da belirtilebilir. Bu işlem, stili kesirli sayıda segmente uygular ve tek bir segmentin bölünmesine neden olabilir. Her GMSStyleSpan, öncekinin hemen ardından başlar: Aşağıdaki örnekte, gri renk ikinci segmentin ½'sinden başlar ve üçüncü segmentin ½'sine 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]];
Bir çoklu çizgiye tekrarlanan renk deseni ekleme
Bir çok çizgiye desen eklemek istiyorsanız GMSGeometryUtils'daki GMSStyleSpans yardımcı yöntemini kullanabilirsiniz. GMSStyleSpans yöntemi, tekrarlanan bir örüntüyü tanımlayan iki diziyi kabul eder. Bir dizi, tekrarlanması gereken stilleri ayarlar, diğeri ise tekrarlama aralığını tanımlar. Bu ikisini birlikte kullanarak, uzunluğu veya mevcut segment sayısı fark etmeksizin herhangi bir çoklu çizgiye uygulanabilecek bir desen oluşturabilirsiniz.
Örneğin, aşağıdaki kod snippet'inde siyah ve beyazın dönüşümlü olarak kullanıldığı bir çok çizgi tanımlanmaktadır. Tür kGMSLengthRhumb olarak belirtildiği için uzunlukları, bir rhumb çizgisi boyunca metre cinsinden işlenir (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);
Sprite Damgalı Çoklu Çizgiler
Sprite damgalanmış çoklu çizgiler, seçtiğiniz tekrarlanan bir bitmap resmini kullanarak çoklu çizgi oluşturmanıza olanak tanır. Şekiller net bir arka plan çizgisiyle gösterilir ancak damga, çizgi köşelerinde kesilmez. Bu sayede, yürüyüş yönlerini gösteren noktalar gibi durumlarda kullanılabilir.

Bu özelliği, GMSStrokeStyle öğesinin stampStyle mülkünü kullanarak GMSSpriteStyle öğesini 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 bir dokuyu tekrarlayarak çoklu çizgi oluşturmanıza olanak tanır. Şekiller net, düz renk veya degrade arka plan çizgisiyle gösterilebilir. Yakınlaştırma seviyeleri 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 kısaltılır.

Bu özelliği, GMSTextureStyle'u kullanarak ve GMSStrokeStyle'in stampStyle özelliğini kullanarak 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 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 adresindeki mapCapabilities mülkü, haritaya özgü özellikler için programatik kontrol ekler. Bu, belirli API'leri çağırmadan önce belirli bir haritanın capabilities kullanılabilir olup olmadığını öğrenmek istediğinizde kullanışlıdır. Bu sorgu, harita görünümünün Sprite Damgalı Poli ç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üntüleme durumunuzla güncellemelere tepki vermenize olanak tanır. Özellik kullanılabilirliğiyle ilgili güncellemeler almak için GMSMapViewDelegate tarihinde didChangeMapCapabilities'ü de uygulayabilirsiniz.
Poligonlar
Çokgenler, sıralı bir sıradaki bir dizi koordinattan oluşmaları bakımından çoklu çizgilere benzer. Ancak poligonlar açık uçlu olmak yerine kapalı bir döngü içinde katı bölgeleri tanımlayacak şekilde 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 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, noktalar arasına yola eklediğiniz sıraya göre çizilir.
Poligon ekle
- Bir
GMSMutablePathnesnesi oluşturun. - Yoldaki noktaları
addCoordinate:veyaaddLatitude:longitude:yöntemleriyle ayarlayın. Bu noktalar, poligonun ana hatlarını oluşturur. - Yolu bağımsız değişken olarak kullanarak yeni bir
GMSPolygonnesnesi oluşturun. strokeWidth,strokeColorvefillColorgibi diğer özellikleri dilediğiniz gibi ayarlayın.GMSPolygon.mapözelliğini ayarlayarak poligonu birGMSMapViewnesnesine atayın.- Poligon haritada görünür.
Aşağıdaki kod snippet'inde haritaya bir dikdörtgen eklenmektedir.
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 ekledikten sonra özelleştirebilirsiniz.
Poligon kaldırma
GMSPolygon.map mülkünü nil olarak ayarlayarak ve layer öğesini üst öğesinden ayırarak bir 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 GMSCircle sınıfını da içerir. Bu sınıf, dünyanın yüzeyinde daire çizmenize olanak tanır.
Bir daire oluşturmak için aşağıdaki iki özelliği belirtmeniz gerekir:
positionolarakCLLocationCoordinate2D.radiusmetre.
Ardından, bir daire, Dünya'nın yüzeyinde, belirli bir center noktasından radius metre uzaklıktaki tüm noktaların kümesi olarak tanımlanır. Maps API tarafından kullanılan Mercator projeksiyonu, düz bir yüzeyde bir küreyi nasıl oluşturduğundan, küre ekvatora yakın bir yerdeyken haritada neredeyse mükemmel bir daire olarak görünür ve ekvatora uzaklaştıkça daire şeklinden uzaklaşır (ekranda).
Ç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 ekledikten sonra özelleştirebilirsiniz.
Çemberi özelleştirme
GMSCircle özelliğinin özelliklerini değiştirerek özel renkler ve fırça genişlikleri belirtebilirsiniz. Aşağıdaki seçenekleri destekler:
fillColor- Dairenin iç rengini belirten bir
UIColornesnesi. Varsayılan olarak saydamdır. strokeColor- Dairenin dış çizgisinin rengini belirten bir
UIColornesnesi. Varsayılan olarakblackColordeğerine ayarlanır. strokeWidth- Dairenin dış çizgisinin kalınlığı (ekran noktası cinsinden). 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ı saydam kırmızı iç kısmı olan kalın bir kırmızı 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
Doldurulmuş halkalar veya halka açma (poligonal alanların poligon 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 çok 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 bir veya daha fazla GMSPath nesnesi dizisi olarak belirtin. Bu dizi, çokgen içindeki boşlukları tanımlar.
Daha küçük bir yol, daha büyük yol tarafından tamamen çevrelenmişse poligonun bir parçası kaldırılmış gibi görünür.
Aşağıdaki kod örneği, iki deliği olan 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;