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
GMSMutablePath
nesnesi oluşturun.addCoordinate:
veyaaddLatitude:longitude:
yöntemlerini kullanarak yoldaki noktaları belirleyin.- Yolu bağımsız değişken olarak kullanarak yeni bir
GMSPolyline
nesnesi somutlaştırın. strokeWidth
vestrokeColor
gibi diğer özellikleri gerektiği 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
ş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 olarakNO
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ö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 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.
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.
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
GMSMutablePath
nesnesi oluşturun.addCoordinate:
veyaaddLatitude:longitude:
yöntemlerini kullanarak yoldaki noktaları belirleyin. Bu noktalar çokgenin ana hattını oluşturur.- Yolu bağımsız değişken olarak kullanarak yeni bir
GMSPolygon
nesnesi somutlaştırın. 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;
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
ileposition
.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 olarakblackColor
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;