Pakiet Maps SDK na iOS pozwala na różne sposoby dodawania kształtów map. Obsługiwane są te kształty:
- Linia łamana to seria połączonych fragmentów linii, które mogą tworzyć dowolny kształt których chcesz używać do zaznaczania na mapie ścieżek i tras.
- Wielokąt to zamknięty kształt, którego można używać do zaznaczania obszarów na mapie.
- Okrąg to precyzyjne geograficznie odwzorowanie okręgu na powierzchni Ziemi na różnych powierzchniach.
Wygląd każdego kształtu możesz zmienić na wiele sposobów.
Linie łamane
Linie łamane umożliwiają rysowanie linii na mapie. GMSPolyline
przedstawia uporządkowaną sekwencję lokalizacji, wyświetlanych jako serię
segmentów liniowych. Kolor linii łamanej można ustawić za pomocą
GMSStrokeStyle
Aby utworzyć linię łamaną, musisz określić jej ścieżkę przez utworzenie
odpowiadający obiektowi GMSMutablePath
z co najmniej 2 punktami.
Każdy element CLLocationCoordinate2D
reprezentuje punkt na powierzchni Ziemi. Liniowy
segmenty są rysowane między punktami w kolejności, w jakiej zostały dodane
do ścieżki. Możesz dodawać punkty do ścieżki za pomocą przycisków addCoordinate:
lub
addLatitude:longitude:
metody.
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];
Dodawanie linii łamanej
- Utwórz obiekt
GMSMutablePath
. - Ustaw punkty na ścieżce za pomocą znaczników
addCoordinate:
lubaddLatitude:longitude:
metody. - Utwórz instancję nowego obiektu
GMSPolyline
, używając ścieżki jako . - W razie potrzeby skonfiguruj inne właściwości, np.
strokeWidth
istrokeColor
. - Ustaw właściwość
map
elementuGMSPolyline
. - Na mapie pojawi się linia łamana.
Następujący fragment kodu dodaje prostokąt do mapy:
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;
Usuwanie linii łamanej
Możesz usunąć linię łamaną z mapy, ustawiając map
na urządzeniu GMSPolyline
usłudze na nil
. Możesz również usunąć wszystkie nakładki (w tym
linie łamane i inne kształty) na mapie, wywołując metodę GMSMapView
clear
.
Swift
mapView.clear()
Objective-C
[mapView clear];
Dostosowywanie linii łamanej
Obiekt GMSPolyline
zawiera kilka właściwości, którymi można sterować.
wygląd linii. Obsługuje te opcje:
strokeWidth
- Szerokość całej linii w punktach na ekranie. Domyślna wartość to 1. Szerokość nie skaluje się, gdy mapa jest powiększona.
geodesic
-
W przypadku wartości
YES
wyrenderuj tę krawędź linii łamanej jako geodezyjną. Fragmenty geodezyjne podążaj najkrótszą ścieżką wzdłuż powierzchni Ziemi i może są wyświetlane na mapie jako krzywe linie z odwzorowaniem Merkatora. Niegeodezyjna segmenty są rysowane na mapie jako linie proste. Domyślna wartość toNO
. spans
- Służy do określania koloru co najmniej jednego segmentu linii łamanej.
Właściwość spans jest tablicą wartości
GMSStyleSpan
obiektów. Ustawienie właściwościspans
to preferowany sposób zmień kolor linii łamanej. strokeColor
- Obiekt
UIColor
określający kolor linii łamanej. Domyślna wartość toblueColor
. WłaściwośćstrokeColor
jest ignorowana, jeśli ustawiono elementspans
.
Poniższy fragment kodu dodaje pogrubioną linię łamaną z Melbourne do Perth, przy czym interpolację geodezyjną.
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;
Aby zmodyfikować linię łamaną po dodaniu jej do mapy, pamiętaj, aby przytrzymać
obiekt GMSPolyline
.
Swift
polyline.strokeColor = .blue
Objective-C
polyline.strokeColor = [UIColor blueColor];
Zmienianie koloru linii łamanej
Linie łamane są rysowane na mapie jako serie segmentów. Możesz zmienić kolor
poszczególnych segmentów lub całej linii za pomocą właściwości spans
. Choć
umożliwia szczegółową kontrolę nad kolorem linii łamanej,
Istnieje kilka udogodnień, które umożliwiają zastosowanie jednego stylu do całej
.
Poniższy fragment kodu używa metody spanWithColor:
, by zmienić kolor
całą linię na czerwony.
Swift
polyline.spans = [GMSStyleSpan(color: .red)]
Objective-C
polyline.spans = @[[GMSStyleSpan spanWithColor:[UIColor redColor]]];
Jeśli masz już dostęp do GMSStrokeStyle
obiektu, możesz użyć metody spanWithStyle:
.
Swift
let solidRed = GMSStrokeStyle.solidColor(.red) polyline.spans = [GMSStyleSpan(style: solidRed)]
Objective-C
GMSStrokeStyle *solidRed = [GMSStrokeStyle solidColor:[UIColor redColor]]; polyline.spans = @[[GMSStyleSpan spanWithStyle:solidRed]];
Przed wersją 1.7 pakietu SDK Maps na iOS pojedyncza usługa
Dla ustawienia strokeColor
można było ustawić cały kolor
GMSPolyline
Właściwość spans
ma pierwszeństwo przed
strokeColor
Swift
polyline.strokeColor = .red
Objective-C
polyline.strokeColor = [UIColor redColor];
Style
Jeśli aplikacja kilka razy zastosuje ten sam kolor kreski, może się okazać
aby zdefiniować styl wielokrotnego użytku. Style linii łamanej są określane za pomocą atrybutu
GMSStrokeStyle
. Styl kreski może być
lub gradientu. Po utworzeniu
możesz zastosować do GMSStyleSpan
z
spanWithStyle:
.
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];
Styl obiektu span
będzie obowiązywał do końca linii łamanej lub do momentu utworzenia nowego
styl jest ustawiony. Możesz zmienić kolor całej linii, ustawiając spans
właściwość linii łamanej do pojedynczego GMSStyleSpan
Przykład
pokazuje, jak zastosować gradient na całej długości linii łamanej.
Swift
polyline.spans = [GMSStyleSpan(style: redYellow)]
Objective-C
polyline.spans = @[[GMSStyleSpan spanWithStyle:redYellow]];
Zmienianie koloru poszczególnych fragmentów linii
Jeśli chcesz oddzielnie nadać styl każdemu segmentowi linii łamanej, możesz to zrobić
przez utworzenie tablicy obiektów GMSStyleSpan
i przekazanie jej
do właściwości spans
. Domyślnie każdy element w tablicy ustawia kolor
odpowiedniego fragmentu linii. Jeśli tablica zawiera więcej elementów niż
segmentów, dodatkowe elementy zostaną zignorowane. Jeśli jest ich mniej
elementów tablicy, końcowy GMSStyleSpan
opisuje
kolorem pozostałej części linii.
Aby wskazać zmiany wzdłuż, możesz użyć bloków koloru lub linii łamanych gradientu linii łamanej, takich jak wysokość lub prędkość. Poniższy fragment kodu ustawia kolor pierwsze dwa odcinki linii łamanej są czerwone, a pozostałe to od czerwonego do żółtego.
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]];
Metoda spanWithStyle:segments:
pozwala ustawić styl dla kilku
i segmenty odbiorców. Na przykład poniższy kod jest odpowiednikiem kodu podanego powyżej.
Długość segmentu końcowego GMSStyleSpan
jest zawsze ignorowana.
ponieważ styl służy do opisywania pozostałej części linii.
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]];
Segmenty ułamkowe
Segmenty mogą być też określone jako wartości ułamkowe. Spowoduje to zastosowanie stylu
do ułamkowej liczby segmentów, potencjalnie powodując podział
segmentację. Każda GMSStyleSpan
rozpoczyna się bezpośrednio po elemencie
poprzednia: w przykładzie poniżej kolor szary zaczyna się od 1⁄2 do 1⁄2
drugi segment i przejść do 1⁄2 do trzeciego segmentu.
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]];
Dodawanie powtarzającego się wzoru koloru do linii łamanej
Jeśli chcesz dodać wzór do linii łamanej, możesz użyć
Metoda użytkowa GMSStyleSpans
w GMSGeometryUtils
.
Metoda GMSStyleSpans
akceptuje 2 tablice, które definiują powtarzający się wzorzec. Jeden
tablica określa style, które powinny się powtarzać, a druga określa
między powtórzeniami. Zastosowane razem mogą posłużyć do utworzenia wzorca,
jest stosowane do dowolnej linii łamanej, niezależnie od jej długości i liczby segmentów
i dostępności informacji.
Na przykład poniższy fragment kodu definiuje linię łamaną z czarno-białym obrazem
naprzemienny wzorzec. Jego długości są traktowane jako metry wzdłuż linii romb (w
jest to linia prosta), ponieważ typ jest określony jako
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);
Linie łamane z duszkami
Linie łamane z duszkami umożliwiają tworzenie linii łamanych przy użyciu powtarzającej się mapy bitowej wybranego zdjęcia. Kształty są wyraźne na tle, ale na składzie nie są obcięte na rogach linii, dzięki czemu są przydatne w sytuacjach, kropki do zilustrowania trasy pieszej.
Możesz korzystać z tej funkcji za pomocą GMSSpriteStyle
i skonfigurować ją
jako znaczek, używając elementu stampStyle
GMSStrokeStyle
usłudze.
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;
Linie łamane ze stemplowanymi teksturami
Linie łamane z nadrukowanymi teksturami umożliwiają tworzenie linii łamanych przy użyciu wybranej tekstury. Kształty mogą być wyświetlane za pomocą wyraźnego, jednolitego koloru lub gradientu. i kreski tła. Zmienia się rozmiar tekstury wraz ze zmianą poziomu powiększenia. Obrazy na końcu końca lub początku ścieżek bądź punktów ścieżki są obcięte przy pewnym powiększeniu poziomów.
Możesz korzystać z tej funkcji, korzystając z GMSTextureStyle
i ustawienia
użyj go jako znaczka z elementem stampStyle
GMSStrokeStyle
usłudze.
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;
Uprawnienia map
Usługa mapCapabilities
w systemie GMSMapView
dodaje automatyzację
podczas sprawdzania funkcji
poszczególnych map. Jest to przydatne, gdy chcesz się dowiedzieć, czy
określone mapy capabilities
są dostępne przed wywołaniem określonych interfejsów API. Ten
Zapytanie określa, czy widok mapy obsługuje linie łamane ze stemplowanymi sprite'ami.
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;
Ten wzór umożliwia subskrybowanie zmian i reagowanie na aktualizacje za pomocą mapy
stan widoku. Usługę didChangeMapCapabilities
możesz też zaimplementować w:
GMSMapViewDelegate
, aby otrzymywać aktualne informacje o tej funkcji
dostępność.
Wielokąty
Wielokąty są podobne do linii łamanych tym, że składają się z serii
w uporządkowanej kolejności. Jednakże nie jest on otwarty,
wielokąty są przeznaczone do definiowania obszarów stałych w zamkniętej pętli.
zdefiniowane w pakiecie SDK Maps na iOS przez GMSPolygon
zajęcia.
Możesz dodać obiekt GMSPolygon
do mapy w taki sam sposób, w jaki dodajesz
GMSPolyline
Najpierw określ jej ścieżkę, tworząc
odpowiadający obiektowi GMSMutablePath
i dodając do niego punkty.
Punkty te tworzą kontur wielokąta. Co CLLocationCoordinate2D
reprezentuje punkt na powierzchni Ziemi. Odcinki linii są rysowane pomiędzy
zgodnie z kolejnością, w jakiej dodajesz je do ścieżki.
Dodaj wielokąt
- Utwórz obiekt
GMSMutablePath
. - Ustaw punkty na ścieżce za pomocą znaczników
addCoordinate:
lubaddLatitude:longitude:
metody. Punkty te tworzą zarys wielokąt. - Utwórz instancję nowego obiektu
GMSPolygon
, używając ścieżki jako . - Ustaw inne właściwości, takie jak
strokeWidth
,strokeColor
ifillColor
, zgodnie z potrzebami. - Przypisz wielokąt do obiektu
GMSMapView
, ustawiając wartość właściwośćGMSPolygon.map
. - Wielokąt pojawi się na mapie.
Następujący fragment kodu dodaje prostokąt do mapy.
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;
Przed dodaniem wielokąta do mapy możesz dostosować jego wygląd. po dodaniu go do mapy.
Usuwanie wielokąta
Aby usunąć wielokąt, ustaw jego właściwość GMSPolygon.map
na nil
i odłącz go
layer
z elementu nadrzędnego.
Swift
polygon.map = nil polygon.layer.removeFromSuperLayer()
Objective-C
polygon.map = nil; [polygon.layer removeFromSuperlayer];
Kręgi
Oprócz klasy ogólnej GMSPolygon
funkcja
Maps SDK na iOS obejmuje też pakiet GMSCircle
, dzięki któremu możesz:
aby narysować okręgi na powierzchni Ziemi.
Aby utworzyć okrąg, musisz określić dwie następujące właściwości:
position
jakoCLLocationCoordinate2D
.radius
w metrach.
Następnie definiowany jest okrąg jako zbiór wszystkich punktów na powierzchni Ziemi.
co znajduje się radius
metrów od wskazanego miejsca: center
. Z powodu tego,
Odwzorowanie Merkatora używane przez interfejs API Map Google renderuje kulę na płaskiej powierzchni.
Gdy znajdziesz się w pobliżu
równik i wygląda coraz na nieokrągłe (na ekranie) jako okrąg,
oddala się od równika.
Dodawanie kręgu
Następujący fragment kodu dodaje okrąg do mapy:
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;
Możesz dostosować wygląd okręgu przed dodaniem go do mapy. po dodaniu go do mapy.
Dostosowywanie kręgu
Możesz określić niestandardowe kolory i szerokości kreski, modyfikując właściwości
GMSCircle
Obsługuje te opcje:
fillColor
- Obiekt
UIColor
określający kolor wnętrza kręgu znajomych. Domyślnie jest to przezroczyste. strokeColor
- Obiekt
UIColor
określający kolor okręgu konspektu. Domyślna wartość toblackColor
. strokeWidth
- Grubość konturu okręgu w punktach na ekranie. Domyślna wartość to 1. Po powiększeniu mapy grubość nie będzie się skalować.
Ten fragment kodu dodaje grube czerwone koło z półprzezroczystym czerwonym elementem wewnętrzne.
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;
Tworzenie pustego wielokąta
Możesz połączyć wiele ścieżek w jednym obiekcie GMSPolygon
, aby
tworzyć złożone kształty, takie jak wypełnione pierścienie lub pierścienie (w przypadku elementów wielokątnych
są wyświetlane wewnątrz wielokąta jako osobne kształty). Złożone kształty to obiekty
z kilku ścieżek.
Utwórz wielokąt ze ścieżką, która wskazuje największy obszar
wielokąt. Następnie określ właściwość holes
wielokąta jako tablicę z jedną lub
więcej obiektów GMSPath
, które definiują otwory w wielokątie.
Jeśli mniejsza ścieżka jest w pełni otoczona większą ścieżką, wydaje się, że kawałek wielokąta został usunięty.
Następujący przykładowy kod tworzy wielokąt z 2 otworami:
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;