Şekiller

Platform seçin: Android iOS JavaScript

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

  1. GMSMutablePath nesnesi oluşturun.
  2. Yoldaki noktaları addCoordinate: veya addLatitude:longitude: yöntem.
  3. Yeni bir GMSPolyline nesnesini, yolu bir bağımsız değişkeninin önüne geçer.
  4. strokeWidth ve strokeColor gibi diğer özellikleri gerektiği gibi ayarlayın.
  5. GMSPolyline öğesinin map özelliğini ayarlayın.
  6. Ç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;
      

Dikdörtgen çoklu çizgi

Ç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 olarak NO 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 olarak blueColor 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.

Çoklu çizgi damgalı

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.

Dokulu çoklu çizgi

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

  1. GMSMutablePath nesnesi oluşturun.
  2. Yoldaki noktaları addCoordinate: veya addLatitude:longitude: yöntem. Bu noktalar, modelin ana hatlarını tıklayın.
  3. Yeni bir GMSPolygon nesnesini, yolu bir bağımsız değişkeninin önüne geçer.
  4. strokeWidth, strokeColor ve fillColor gibi diğer özellikleri ayarlayın seçebilirsiniz.
  5. Çokgeni bir GMSMapView nesnesine ayarlamak için GMSPolygon.map mülkü.
  6. Poligon haritada görünür.

Aşağıdaki kod snippet'i haritaya bir dikdörtgen ekler.

Swift

// Create a rectangular path
let rect = GMSMutablePath()
rect.add(CLLocationCoordinate2D(latitude: 37.36, longitude: -122.0))
rect.add(CLLocationCoordinate2D(latitude: 37.45, longitude: -122.0))
rect.add(CLLocationCoordinate2D(latitude: 37.45, longitude: -122.2))
rect.add(CLLocationCoordinate2D(latitude: 37.36, longitude: -122.2))

// Create the polygon, and assign it to the map.
let polygon = GMSPolygon(path: rect)
polygon.fillColor = UIColor(red: 0.25, green: 0, blue: 0, alpha: 0.05);
polygon.strokeColor = .black
polygon.strokeWidth = 2
polygon.map = mapView
      

Objective-C

// Create a rectangular path
GMSMutablePath *rect = [GMSMutablePath path];
[rect addCoordinate:CLLocationCoordinate2DMake(37.36, -122.0)];
[rect addCoordinate:CLLocationCoordinate2DMake(37.45, -122.0)];
[rect addCoordinate:CLLocationCoordinate2DMake(37.45, -122.2)];
[rect addCoordinate:CLLocationCoordinate2DMake(37.36, -122.2)];

// Create the polygon, and assign it to the map.
GMSPolygon *polygon = [GMSPolygon polygonWithPath:rect];
polygon.fillColor = [UIColor colorWithRed:0.25 green:0 blue:0 alpha:0.05];
polygon.strokeColor = [UIColor blackColor];
polygon.strokeWidth = 2;
polygon.map = mapView;
      

Ç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 olarak position.
  • 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 olarak blackColor 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;