iOS için Haritalar SDK'sı, haritalarınıza şekil eklemek için bazı basit yollar sunar. Aşağıdaki şekiller desteklenmektedir:
- Çoklu çizgi, istediğiniz şekli oluşturabilen ve harita üzerinde yollar ile rotaları işaretlemek için kullanılabilen bir dizi bağlı çizgi segmentidir.
- Poligon, haritadaki alanları işaretlemek için kullanılabilecek kapalı bir şekildir.
- Daire, Dünya'nın yüzeyinde bir dairenin coğrafi olarak doğru bir yansımasıdır.
Her şeklin görünümünü çeşitli şekillerde değiştirebilirsiniz.
Çoklu çizgiler
Çoklu çizgiler, haritada çizgiler çizmenize olanak tanır. GMSPolyline
nesnesi, bir dizi çizgi segmenti olarak görüntülenen sıralı bir konum dizisini temsil eder. Bir çoklu çizginin rengini GMSStrokeStyle
ile 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üzeyindeki bir noktayı temsil eder. Çizgi segmentleri, noktalar arasında onları yola eklediğiniz sıraya göre çizilir. addCoordinate:
veya addLatitude:longitude:
yöntemlerini kullanarak 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
GMSMutablePath
nesnesi oluşturun.addCoordinate:
veyaaddLatitude:longitude:
yöntemleriyle yoldaki noktaları belirleyin.- Yolu bağımsız değişken olarak kullanarak yeni bir
GMSPolyline
nesnesi örnek oluşturun. strokeWidth
vestrokeColor
gibi diğer özellikleri istediğiniz gibi ayarlayın.GMSPolyline
öğesininmap
özelliğini ayarlayın.- Ç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;
Çoklu çizgiyi kaldırma
GMSPolyline
cihazınızın map
özelliğini nil
değerine ayarlayarak bir çoklu çizgiyi haritadan kaldırabilirsiniz. Alternatif olarak, GMSMapView
clear
yöntemini çağırarak şu anda 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çeklenmez.
geodesic
-
YES
sırasında bu çoklu çizgi kenarını jeodezik olarak oluşturun. Jeodezik segmentler, Dünya yüzeyi boyunca en kısa yolu izler ve Merkatör projeksiyonu olan haritalarda eğri çizgiler olarak görünebilir. Jeodezik olmayan bölümler harita üzerinde düz çizgiler olarak çizilir. Varsayılan olarakNO
değerine ayarlanır. spans
- Bir Çoklu çizginin bir veya daha fazla segmentinin rengini belirtmek için kullanılır. Spas özelliği,
GMSStyleSpan
nesne dizisidir. Çoklu çizginin rengini değiştirmek için tercih edilen yöntemspans
özelliğini ayarlamaktır. strokeColor
- Çoklu çizginin rengini belirten bir
UIColor
nesnesi. Varsayılan olarakblueColor
değerine ayarlanır.spans
ayarlanırsastrokeColor
ö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;
Bir çoklu çizgiyi haritaya eklendikten sonra 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, harita üzerinde bir dizi segment olarak çizilir. spans
özelliği ile tek tek segmentlerin veya tüm çizginin rengini değiştirebilirsiniz. Bu özellik, bir çoklu çizginin renklendirmesi üzerinde ayrıntılı kontrol olanağı sunsa da tek bir stili tüm çizgiye uygulamayı kolaylaştıran çeşitli avantajlar vardır.
Aşağıdaki snippet'te, çizginin tamamının rengini kırmızıya dönüştürmek 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 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
mülkü 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ımlamak sizin için yararlı olabilir. Çoklu çizgi stilleri GMSStrokeStyle
nesnesi kullanılarak belirtilir. Fırça stili, düz bir renk veya bir renkten başka bir renge geçiş
olabilir. Oluşturduğunuz stili spanWithStyle:
yöntemiyle GMSStyleSpan
için 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
değerine ayarlayarak tüm çizginin rengini değiştirebilirsiniz. Aşağıdaki snippet'te, çoklu çizginin tüm uzunluğuna nasıl renk geçişi uygulanacağı gösterilmektedir.
Swift
polyline.spans = [GMSStyleSpan(style: redYellow)]
Objective-C
polyline.spans = @[[GMSStyleSpan spanWithStyle:redYellow]];
Çizgi segmentlerinin rengini tek tek değiştirme
Çoklu çizginizin her bir segmentini ayrı ayrı biçimlendirmek isterseniz bunu, GMSStyleSpan
nesne dizisi oluşturup bunu spans
özelliğine aktararak yapabilirsiniz. Varsayılan olarak dizideki her öğe, karşılık gelen çizgi segmentinin rengini belirler. Dizide, satırdaki segmentlerden daha fazla öğe varsa ekstra öğeler göz ardı edilir. Dizide daha az öğe varsa son GMSStyleSpan
, çizginin kalan kısmı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, bir çoklu çizginin ilk iki segmentinin rengini kırmızıya, çizginin geri kalanı ise kırmızıdan sarıya bir renk geçişidir.
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]];
Birkaç segmentin stilini aynı anda ayarlamak için spanWithStyle:segments:
yöntemini kullanabilirsiniz. Örneğin, aşağıdaki kod yukarıdakine eşdeğerdir.
Çizginin geri kalanını tanımlamak için stil kullanılacağı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 kesirli sayıda segmente uygulayarak tek bir segmentte bölünmeye neden olabilir. Her GMSStyleSpan
, bir öncekinden hemen sonra başlar: Aşağıdaki örnekte, gri renk ikinci segmentte 1/2 ile başlar ve üçüncü segmentte 1ê2'ye 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 tekrarlanan renk deseni ekleme
Bir çoklu çizgiye desen eklemek isterseniz GMSGeometryUtils
içindeki GMSStyleSpans
yardımcı programı yöntemini kullanabilirsiniz. GMSStyleSpans
yöntemi, tekrarlanan bir kalıbı tanımlayan iki diziyi kabul eder. Bir dizi, tekrarlanması gereken stilleri, diğeri de tekrarlama aralığını tanımlar. Birlikte kullanıldığında, uzunluğu veya mevcut segmentlerin sayısı fark etmeksizin 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 değerlendirilir (Merator'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);
İmgeli Damgalı Çoklu Çizgiler
İmgeli Damgalı çoklu çizgiler, istediğiniz gibi tekrarlanan bir bit eşlem görüntüsünü kullanarak bir çoklu çizgi oluşturmanıza olanak tanır. Şekiller, arka planda net bir çizgiyle gösterilir ancak çizgi köşeleri kısaltılmaz. Bu nedenle, yaya yol tarifini gösteren noktalar gibi durumlarda şekiller yararlı olur.
Bu özelliği GMSSpriteStyle
üzerinden kullanabilir ve GMSStrokeStyle
'in stampStyle
özelliği aracılığıyla 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]; 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 renkli 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şlangıcındaki resimler, belirli yakınlaştırma düzeylerinde kesilir.
Bu özelliği GMSTextureStyle
üzerinden kullanabilir ve GMSStrokeStyle
'in stampStyle
özelliği aracılığıyla 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 özel özellikler için programatik kontrolü ekler. Bu, belirli API'leri çağırmadan önce belirli capabilities
haritalarının kullanılabilir olup olmadığını öğrenmek istediğinizde yararlı olur. Bu sorgu, harita görünümünün İmgeli 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. Ayrıca, özelliklerin kullanılabilirliğiyle ilgili güncellemeler almak için didChangeMapCapabilities
özelliğini GMSMapViewDelegate
üzerinde uygulayabilirsiniz.
Poligonlar
Poligonlar, sıralı bir dizi koordinatdan oluşması nedeniyle çoklu çizgilere benzer. Ancak poligonlar açık uçlu olmak yerine kapalı bir döngü içinde katı bölgeleri tanımlamak için tasarlanmıştır. Poligonlar, iOS için Haritalar SDK'sında GMSPolygon
sınıfıyla tanımlanır.
Haritaya, GMSPolyline
eklediğiniz şekilde GMSPolygon
ekleyebilirsiniz. İlk olarak, karşılık gelen bir GMSMutablePath
nesnesi oluşturup bu nesneye noktalar ekleyerek yolunu belirtin. Bu noktalar çokgenin ana hatlarını
oluşturacaktır. Her CLLocationCoordinate2D
, Dünya yüzeyindeki
bir noktayı temsil eder. Çizgi segmentleri, noktaları yola eklediğiniz sıraya göre
arasında çizilir.
Poligon ekle
GMSMutablePath
nesnesi oluşturun.addCoordinate:
veyaaddLatitude:longitude:
yöntemleriyle yoldaki noktaları belirleyin. Bu noktalar çokgenin ana hatlarını oluşturacaktır.- Yolu bağımsız değişken olarak kullanarak yeni bir
GMSPolygon
nesnesi örnek oluşturun. strokeWidth
,strokeColor
vefillColor
gibi diğer özellikleri istediğiniz gibi ayarlayın.GMSPolygon.map
özelliğini ayarlayarak poligonu birGMSMapView
nesnesine atayın.- 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;
Poligonu hem haritaya eklemeden önce hem de haritaya eklendikten sonra görünümünü özelleştirebilirsiniz.
Bir poligonu kaldırma
GMSPolygon.map
özelliğini nil
olarak ayarlayıp layer
öğesini üst öğesinden çıkararak bir Poligon'u kaldırın.
Swift
polygon.map = nil polygon.layer.removeFromSuperLayer()
Objective-C
polygon.map = nil; [polygon.layer removeFromSuperlayer];
Daireler
Genel GMSPolygon
sınıfına ek olarak, iOS için Haritalar SDK'sı aynı zamanda dünyanın yüzeyinde kolayca daireler çizebilmenizi sağlayan GMSCircle
uygulamasını da içerir.
Daire oluşturmak için aşağıdaki iki özelliği belirtmeniz gerekir:
CLLocationCoordinate2D
olarakposition
.radius
metre.
Daha sonra daire, Dünya yüzeyinde verilen center
öğesinden radius
metre uzaklıktaki tüm noktaların kümesi olarak tanımlanır. Haritalar API'si tarafından kullanılan Merkatör projeksiyonu, bir küreyi düz bir yüzeyde oluşturduğundan, 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 dairesel bir biçimde (ekranda) görünür.
Ç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;
Dairenin görünümünü hem haritaya eklemeden önce hem de haritaya eklendikten sonra özelleştirebilirsiniz.
Bir çevreyi özelleştirme
GMSCircle
ö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
UIColor
nesnesi. Varsayılan olarak şeffaftır. strokeColor
- Dairenin dış çizgisinin rengini belirten bir
UIColor
nesnesi. Varsayılan olarakblackColor
değerine ayarlanır. strokeWidth
- Çemberin 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çeklendirilmez.
Aşağıdaki snippet, yarı şeffaf kırmızı bir iç mekana 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;
Boş çokgen oluşturma
Dolgulu halkalar veya halkalar (poligon içinde poligon alanları ayrı şekiller olarak görünür) gibi karmaşık şekiller oluşturmak için birden fazla yolu tek bir GMSPolygon
nesnesinde birleştirebilirsiniz. Karmaşık şekiller birden fazla
yolun bileşimidir.
Poligonun kapladığı en büyük alanı belirten yola sahip 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 daha büyük yolla tamamen çevriliyse, 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;