iOS için Haritalar SDK'sı, uygulamanıza şekil eklemeniz için çeşitli yollar sunar: haritalar. Aşağıdaki şekiller desteklenir:
- Çoklu çizgi, herhangi bir şekilde şekil alabilen birbirine bağlı çizgi parçalarından oluşan bir seridir gösterir ve harita üzerinde yolları ve rotaları işaretlemek için kullanılabilir.
- Poligon, haritadaki alanları işaretlemek için kullanılabilecek kapalı bir şekildir.
- Çember, Dünya üzerinde bir çemberin coğrafi olarak doğru bir projeksiyonudur teşekkür ederiz.
Her şeklin görünümünü çeşitli yollarla 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. Çoklu çizginin rengini belirlemek için
GMSStrokeStyle
.
Çoklu çizgi oluşturmak için, bir çoklu çizgi oluşturarak
iki veya daha fazla nokta içeren karşılık gelen GMSMutablePath
nesnesi.
Her CLLocationCoordinate2D
, Dünya yüzeyinde bir noktayı temsil eder. Çizgi
segmentler, eklediğiniz sıraya göre noktalar arasında çizilir
değer katarlar. Yola addCoordinate:
veya
addLatitude:longitude:
yöntem.
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.- Yoldaki noktaları
addCoordinate:
veyaaddLatitude:longitude:
yöntem. - Yeni bir
GMSPolyline
nesnesini, yolu bir bağımsız değişkeninin önüne geçer. strokeWidth
vestrokeColor
gibi diğer özellikleri gerektiği gibi ayarlayın.GMSPolyline
öğesininmap
özelliğini ayarlayın.- Çoklu çizgi, harita üzerinde 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 çizgileri kaldırma
GMSPolyline
için map
ayarlayarak çoklu çizgiyi haritadan kaldırabilirsiniz
özelliğini nil
olarak değiştirin. Alternatif olarak, yer paylaşımlarının tümünü (ayrıca
çoklu çizgiler ve diğer şekiller) için GMSMapView
numaralı telefonu çağırın.
clear
yöntemi.
Swift
mapView.clear()
Objective-C
[mapView clear];
Çoklu çizgiyi özelleştirme
GMSPolyline
nesnesi, kontrol edilecek çeşitli özellikler sağlar
çizginin görünüşü. Aşağıdaki seçenekleri destekler:
strokeWidth
- Tüm çizginin ekran noktaları cinsinden genişliği. Varsayılan olarak 1 değerine ayarlanır. Genişlik harita yakınlaştırıldığında ölçeklenmiyor.
geodesic
-
YES
olduğunda, bu çoklu çizgi kenarı jeodezik olarak oluşturulur. Jeodezik segmentler yüzeyindeki en kısa yolu izler ve Merkatör projeksiyonu olan haritada eğri çizgiler olarak görünür. Jeodezik olmayan segmentler haritada düz çizgiler olarak çizilir. Varsayılan olarakNO
değerine ayarlanır. spans
- Bir çok çizginin bir veya daha fazla segmentinin rengini belirtmek için kullanılır. İlgili içeriği oluşturmak için kullanılan
spans özelliği,
GMSStyleSpan
dizisidir nesneler'i tıklayın.spans
özelliğinin ayarlanması, çoklu çizginin rengini değiştirebilirsiniz. strokeColor
- Çoklu çizginin rengini belirten
UIColor
nesnesi. Varsayılan olarakblueColor
değerine ayarlanır.strokeColor
mülküspans
ayarlanırsa yoksayılır.
Aşağıdaki snippet, Melbourne'dan Perth'e kalın bir çoklu çizgi ekler ve jeodezik interpolasyon gibidir.
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 çizgide değişiklik yapmak için
GMSPolyline
nesnesini tanımlayın.
Swift
polyline.strokeColor = .blue
Objective-C
polyline.strokeColor = [UIColor blueColor];
Çoklu çizginin rengini değiştirme
Çoklu çizgiler, haritada bir dizi segment olarak çizilir. Rengi değiştirebilirsiniz.
spans
özelliğiyle tek tek segmentleri veya çizginin tamamını gösterebilirsiniz. Bu sırada
bu özellik, bir çoklu çizginin rengi üzerinde ayrıntılı kontrol sağlar.
tek bir stili tüm reklam alanına uygulamanıza olanak tanıyan birçok kolaylık
satırında görünür.
Aşağıdaki snippet,spanWithColor:
kırmızıya döndürebilirsiniz.
Swift
polyline.spans = [GMSStyleSpan(color: .red)]
Objective-C
polyline.spans = @[[GMSStyleSpan spanWithColor:[UIColor redColor]]];
Alternatif olarak, bir GMSStrokeStyle
nesnesini tanımlarsanız 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 önceki tek mülk,
strokeColor
, bir öğenin tüm rengini ayarlamak için kullanılabiliyordu.
GMSPolyline
spans
özelliği,
strokeColor
.
Swift
polyline.strokeColor = .red
Objective-C
polyline.strokeColor = [UIColor redColor];
Stiller
Uygulamanız aynı fırça rengini birkaç kez uyguluyorsa bunu faydalı bulabilirsiniz
bir stil tanımlamak için
kullanacaksınız. Çoklu çizgi stilleri,
GMSStrokeStyle
nesnesini tanımlayın. Çizgi stili düz bir
bir renge veya bir renge geçiştir. 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
stili, çoklu çizginin sonuna veya yeni bir çoklu çizgiye kadar devam eder
emin olun. spans
öğesini ayarlayarak tüm çizginin rengini değiştirebilirsiniz
tek bir çoklu çizginin özelliği GMSStyleSpan
Örnek
, çoklu çizginin tüm uzunluğuna renk geçişinin nasıl uygulanacağını gösterir.
Swift
polyline.spans = [GMSStyleSpan(style: redYellow)]
Objective-C
polyline.spans = @[[GMSStyleSpan spanWithStyle:redYellow]];
Ayrı ayrı çizgi segmentlerinin rengini değiştirme
Çoklu çizginizin her bir parçasının stilini tek tek ayarlamak isterseniz
bir GMSStyleSpan
nesne dizisi oluşturup bunu
spans
mülküne Varsayılan olarak, dizideki her öğe
çizgi segmenti ekleyin. Dizide
diğer öğeler yoksayılır. Daha az
öğelerinde yer alıyorsa GMSStyleSpan
,
rengini kaybetmeyin.
Süreçlerdeki değişiklikleri göstermek için renk blokları ve/veya gradyan çoklu çizgileri kullanabilirsiniz çoklu çizginizi (ör. rakım veya hız) gösterir. Aşağıdaki snippet, çizginin ilk iki parçası kırmızıya, geri kalanı ise kırmızıya renk geçişi yapar.
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ç öğe için stili ayarlamak üzere spanWithStyle:segments:
yöntemini kullanabilirsiniz
kullanabilirsiniz. Örneğin, aşağıdaki kod yukarıdakine eşdeğerdir.
Nihai GMSStyleSpan
segment uzunluğu her zaman yoksayılır
çünkü stil, satırın kalan kısmını tanımlamak için kullanı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 uygular
bir segmentin bölünmesine neden olabilir ve bu,
bölümünü seçin. Her GMSStyleSpan
, şundan hemen sonra başlar:
önceki: Aşağıdaki örnekte, gri renk 1⁄2'den 2'ye kadar
ve üçüncü segmente doğru 1⁄2'ye geçin.
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 ç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, diğeri ise tekrarlanması gereken stilleri tanımlar
tekrar aralığıdır. Birlikte kullandığınızda,
uzunluğu veya segment sayısına bakılmaksızın, herhangi bir çoklu çizgiye uygulanır
kullanılabilir.
Örneğin, aşağıdaki kod snippet'i siyah beyaz bir çoklu çizgiyi tanımlar
yardımcı olabilir. Uzunlukları başparmak çizgisi boyunca metre olarak kabul edilir (
olarak belirtildiği gibi, merkatör, bu düz bir çizgidir)
kGMSLengthRhumb
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
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örünüyor ancak damga kesilmediğinden emin olun. Böylece, Yürüyüş yol tariflerini gösteren noktalar.
Bu özelliği, GMSSpriteStyle
platformunu kullanarak ve ayarlayarak kullanabilirsiniz.
GMSStrokeStyle
stampStyle
öğesini kullanan damga olarak
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 gradyanla gösterilebilir arka plan çizgisi. 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 kısaltılır.
Bu özelliği, GMSTextureStyle
ve ilgili ayarı kullanarak kullanabilirsiniz.
GMSStrokeStyle
stampStyle
öğesini kullanan damga olarak
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
mülkü programatik ekler
Haritaya özgü özellikleri kontrol etmek. Bu, bir riskin mevcut olup olmadığını
belirli API'leri çağırmadan önce belirli harita capabilities
kullanılabilir. 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. Ayrıca didChangeMapCapabilities
öğesini
Özellikle ilgili güncellemeleri almak için GMSMapViewDelegate
stok durumu.
Poligonlar
Poligonlar, iki çokgenden oluşan bir dizi
koordinatlarını alabilirsiniz. Ancak projelerin açık uçlu olması yerine
çokgenler, kapalı bir döngü içinde katı bölgeleri tanımlamak için tasarlanmıştır. Çokgenler
iOS için Haritalar SDK'sında GMSPolygon
tarafından tanımlanmıştır
sınıfını kullanır.
Aynı şekilde haritaya GMSPolygon
ekleyebilirsiniz
GMSPolyline
Öncelikle, ilgili bir GMSMutablePath
nesnesi oluşturup buna noktalar ekleyerek yolunu belirtin.
Bu noktalar çokgenin ana hatlarını oluşturur. Her CLLocationCoordinate2D
Dünya yüzeyindeki bir noktayı temsil eder. Çizgi segmentleri,
noktaları, yola eklediğiniz sıraya göre görürsünüz.
Poligon ekle
GMSMutablePath
nesnesi oluşturun.- Yoldaki noktaları
addCoordinate:
veyaaddLatitude:longitude:
yöntem. Bu noktalar, modelin ana hatlarını tıklayın. - Yeni bir
GMSPolygon
nesnesini, yolu bir bağımsız değişkeninin önüne geçer. strokeWidth
,strokeColor
vefillColor
gibi diğer özellikleri ayarlayın seçebilirsiniz.- Çokgeni bir
GMSMapView
nesnesine ayarlamak içinGMSPolygon.map
mülkü. - 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;
Çokgeni haritaya eklemeden önce her ikisinde de görünümünü özelleştirebilirsiniz sonra görüntüleyebilirsiniz.
Çokgen 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
Genel GMSPolygon
sınıfına ek olarak,
iOS için Haritalar SDK'sı GMSCircle
aracını da içerir. Bu sayede,
yüzeyinde daire çizmenizi sağlar.
Bir daire oluşturmak için aşağıdaki iki özelliği belirtmeniz gerekir:
CLLocationCoordinate2D
olarakposition
.radius
metre.
Çember, Dünya yüzeyindeki tüm noktaların kümesi olarak tanımlanır
ve belirtilen center
hattından radius
metre uzakta. Google’ın
Maps API tarafından kullanılan merkatör projeksiyonu, düz bir yüzey üzerinde bir küre oluşturur,
Bu, Google Haritalar'da mükemmel bir çember olarak görünür ve
ekvator yuvarlağını temsil eder ve dairesel olmayan şekilde (ekranda) dairesel şekilde
ekvatordan uzaklaşıyor.
Ç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;
Daireyi haritaya eklemeden önce her ikinizin de görünümünü özelleştirebilirsiniz sonra görüntüleyebilirsiniz.
Çevre özelleştirme
Şunun özelliklerini değiştirerek özel renkler ve fırça genişlikleri belirtebilirsiniz:
GMSCircle
. Aşağıdaki seçenekleri destekler:
fillColor
- Öğenin iç rengini belirten
UIColor
nesnesi ekleyin. Varsayılan olarak saydamdır. strokeColor
- Dairenin dış çizgisinin rengini belirten bir
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çeklenmez.
Aşağıdaki snippet, yarı saydam kırmızı bir şekil içeren kalın kırmızı bir daire ekler iç mekan.
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
Birden fazla yolu tek bir GMSPolygon
nesnesinde birleştirerek
dolgulu halkalar veya halkalar (poligonal alanlar) gibi karmaşık şekiller
çokgenin içinde ayrı şekiller olarak görünür). Karmaşık şekiller
çeşitli yolların bileşimidir.
Yolun kapladığı en büyük alanı belirten bir poligon oluşturun
tıklayın. 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 büyük yolun içinde tamamen çevrelenmişse sanki bir parça çokgen kaldırıldı.
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;