
کیت توسعه نرمافزار Google Maps برای iOS روشهای مختلفی برای افزودن شکل به نقشهها ارائه میدهد. شکلهای زیر پشتیبانی میشوند:
- چندخطی مجموعهای از بخشهای خطی متصل است که میتواند هر شکلی را که میخواهید تشکیل دهد و میتواند برای علامتگذاری مسیرها و راهها روی نقشه استفاده شود.
- چندضلعی شکلی بسته است که میتوان از آن برای علامتگذاری مناطق روی نقشه استفاده کرد.
- دایره یک تصویر جغرافیایی دقیق از یک دایره روی سطح زمین است.
میتوانید ظاهر هر شکل را به روشهای مختلفی تغییر دهید.
چندخطیها
چندخطیها به شما امکان میدهند روی نقشه خط بکشید. شیء GMSPolyline
نشاندهنده توالی مرتبشدهای از مکانها است که بهصورت مجموعهای از
بخشهای خطی نمایش داده میشود. میتوانید رنگ چندخطی را با
GMSStrokeStyle تنظیم کنید.
برای ایجاد چندخطی، باید مسیر آن را با ایجاد شیء GMSMutablePath مربوطه با دو یا چند نقطه مشخص کنید.
هر CLLocationCoordinate2D نشاندهنده نقطهای روی سطح زمین است. پارهخطها بین نقطهها براساس ترتیبی که آنها را به مسیر اضافه میکنید کشیده میشوند. میتوانید با روشهای addCoordinate: یا addLatitude:longitude: به مسیر نقطه اضافه کنید.
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)
آبجکتیو-سی
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];
درحال افزودن چندخطی
- شیء
GMSMutablePathایجاد کنید. - نقاط را در مسیر با روشهای
addCoordinate:یاaddLatitude:longitude:تنظیم کنید. - شیء
GMSPolylineجدیدی را بااستفاده از مسیر بهعنوان آرگومان نمونهسازی کنید. - درصورت نیاز، ویژگیهای دیگر مثل
strokeWidthوstrokeColorرا تنظیم کنید. - خصوصیت
mapرا برایGMSPolylineتنظیم کنید. - چندخطی روی نقشه نشان داده میشود.
تکهکد زیر مستطیلی را به نقشه اضافه میکند:
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
آبجکتیو-سی
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;

برداشتن چندخطی
میتوانید با تنظیم ویژگی map مربوط به GMSPolyline روی nil، چندخطی را از نقشه بردارید. یا اینکه میتوانید با فراخوانی روش GMSMapView
clear، همه همپوشانیها (ازجمله چندخطیها و شکلهای دیگر) را از نقشه بردارید.
Swift
mapView.clear()
آبجکتیو-سی
[mapView clear];
سفارشیسازی چندخطی
شیء GMSPolyline چندین ویژگی برای کنترل ظاهر خط ارائه میدهد. از گزینههای زیر پشتیبانی میکند:
strokeWidth- عرض کل خط، به نقطه صفحه. پیشفرض ۱ است. با بزرگنمایی نقشه، عرض تغییر نمیکند.
geodesic-
وقتی
YES، این لبه چندخطی را بهعنوان ژئودزیک ارائه کن. بخشهای ژئودزیک کوتاهترین مسیر را در امتداد سطح زمین دنبال میکنند و ممکن است بهصورت خطوط منحنی در نقشهای با تصویر مرکاتور ظاهر شوند. بخشهای غیرژئودزیک بهصورت خطوط مستقیم روی نقشه ترسیم میشوند. پیشفرضها بهNO. spans- برای مشخص کردن رنگ یک یا چند بخش از چندخطی استفاده میشود. ویژگی
spans آرایهای از اشیای
GMSStyleSpanاست. تنظیم کردن ویژگیspansروش ترجیحی برای تغییر دادن رنگ چندخطی است. strokeColor- شیء
UIColorکه رنگ چندخطی را مشخص میکند. پیشفرضها بهblueColor. اگرspansتنظیم شده باشد، خصوصیتstrokeColorنادیده گرفته میشود.
قطعه کد زیر یک چندخطی ضخیم از ملبورن به پرت با درونیابی ژئودزیک اضافه میکند.
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
آبجکتیو-سی
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;
برای اصلاح چندخطی پساز اضافه شدن به نقشه، حتماً شیء GMSPolyline را نگه دارید.
Swift
polyline.strokeColor = .blue
آبجکتیو-سی
polyline.strokeColor = [UIColor blueColor];
تغییر دادن رنگ چندخطی
چندخطیها بهصورت مجموعهای از بخشها روی نقشه ترسیم میشوند. میتوانید رنگ بخشهای مجزا یا کل خط را با ویژگی spans تغییر دهید. While
this property gives you detailed control over the coloring of a polyline,
several conveniences exist that allow you to apply a single style to the entire
line.
قطعه کد زیر از روش spanWithColor: برای تغییر رنگ کل خط به قرمز استفاده میکند.
Swift
polyline.spans = [GMSStyleSpan(color: .red)]
آبجکتیو-سی
polyline.spans = @[[GMSStyleSpan spanWithColor:[UIColor redColor]]];
یا اگر ازقبل به شیء GMSStrokeStyle دسترسی دارید، میتوانید از روش spanWithStyle: استفاده کنید.
Swift
let solidRed = GMSStrokeStyle.solidColor(.red) polyline.spans = [GMSStyleSpan(style: solidRed)]
آبجکتیو-سی
GMSStrokeStyle *solidRed = [GMSStrokeStyle solidColor:[UIColor redColor]]; polyline.spans = @[[GMSStyleSpan spanWithStyle:solidRed]];
قبلاز نسخه ۱.۷ «کیت توسعه نرمافزار Maps برای iOS»، ویژگی تکی
strokeColor برای تنظیم کل رنگ
GMSPolyline دردسترس بود. خصوصیت spans بر strokeColor اولویت دارد.
Swift
polyline.strokeColor = .red
آبجکتیو-سی
polyline.strokeColor = [UIColor redColor];
سبکها
اگر برنامهتان چندینبار از یک رنگ قلم استفاده میکند، شاید بهتر باشد
سبک قابلاستفاده مجددی تعریف کنید. سبکهای چندخطی بااستفاده از شیء
GMSStrokeStyle مشخص میشوند. سبک خط میتواند رنگی یکدست یا گرادیانی از یک رنگ به رنگ دیگر باشد. وقتی سبکی ایجاد کردید، میتوانید آن را با روش spanWithStyle: به GMSStyleSpan اعمال کنید.
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)
آبجکتیو-سی
// 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 تا انتهای چندخطی یا تا زمانی که سبک جدیدی تنظیم شود ادامه خواهد داشت. میتوانید رنگ کل خط را با تنظیم ویژگی spans چندخطی روی یک GMSStyleSpan تغییر دهید. این مثال نشان میدهد که چگونه میتوان یک گرادیان را در کل طول چندخطی اعمال کرد.
Swift
polyline.spans = [GMSStyleSpan(style: redYellow)]
آبجکتیو-سی
polyline.spans = @[[GMSStyleSpan spanWithStyle:redYellow]];
تغییر دادن رنگ بخشهای خط بهصورت جداگانه
اگر میخواهید هر بخش از چندخطیتان را بهطور جداگانه سبکبندی کنید، میتوانید این کار را با ایجاد آرایهای از اشیاء GMSStyleSpan و ارسال آن به ویژگی spans انجام دهید. بهطور پیشفرض، هر مورد در آرایه رنگ
پارهخط مربوطه را تنظیم میکند. اگر تعداد عناصر آرایه بیشتر از
بخشهای خط باشد، عناصر اضافی نادیده گرفته میشوند. اگر تعداد عناصر در آرایه کمتر باشد، GMSStyleSpan نهایی رنگ باقیمانده خط را توصیف میکند.
میتوانید از بلوکهای رنگی و/یا چندخطیهای گرادیان برای نشان دادن تغییرات درطول چندخطیتان (مثلاً ارتفاع یا سرعت) استفاده کنید. قطعه کد زیر رنگ دو بخش اول چندخطی را قرمز میکند و بقیه خط گرادیانی از قرمز به زرد است.
Swift
polyline.spans = [ GMSStyleSpan(style: solidRed), GMSStyleSpan(style: solidRed), GMSStyleSpan(style: redYellow) ]
آبجکتیو-سی
polyline.spans = @[[GMSStyleSpan spanWithStyle:solidRed], [GMSStyleSpan spanWithStyle:solidRed], [GMSStyleSpan spanWithStyle:redYellow]];
میتوانید از روش spanWithStyle:segments: برای تنظیم سبک برای چندین
بخش بهطور همزمان استفاده کنید. برای مثال، کد زیر معادل کد بالا است.
طول بخش آخرین GMSStyleSpan همیشه نادیده گرفته میشود
چون از سبک برای توصیف باقیمانده خط استفاده میشود.
Swift
polyline.spans = [ GMSStyleSpan(style: solidRed, segments:2), GMSStyleSpan(style: redYellow, segments:10) ]
آبجکتیو-سی
polyline.spans = @[[GMSStyleSpan spanWithStyle:solidRed segments:2], [GMSStyleSpan spanWithStyle:redYellow segments:10]];
بخشهای کسری
بخشها را میتوان بهصورت مقدار کسری نیز مشخص کرد. با این کار، سبک به تعداد کسری از بخشها اعمال میشود و احتمالاً باعث تقسیم شدن یک بخش میشود. هر GMSStyleSpan بلافاصله پساز قبلی شروع میشود: در مثال زیر، رنگ خاکستری از نیمه بخش دوم شروع میشود و تا نیمه بخش سوم ادامه مییابد.
Swift
polyline.spans = [ GMSStyleSpan(style: solidRed, segments: 2.5), GMSStyleSpan(color: .gray), GMSStyleSpan(color: .purple, segments: 0.75), GMSStyleSpan(style: redYellow) ]
آبجکتیو-سی
polyline.spans = @[[GMSStyleSpan spanWithStyle:solidRed segments:2.5], [GMSStyleSpan spanWithColor:[UIColor grayColor]], [GMSStyleSpan spanWithColor:[UIColor purpleColor] segments:0.75], [GMSStyleSpan spanWithStyle:redYellow]];
افزودن الگوی رنگ تکرارشونده به چندخطی
اگر میخواهید الگویی به چندخطی اضافه کنید، میتوانید از روش کمکی
GMSStyleSpans در GMSGeometryUtils استفاده کنید. روش
GMSStyleSpans دو آرایه را میپذیرد که الگوی تکرارشوندهای را تعریف میکنند. یک آرایه سبکهایی را که باید تکرار شوند تنظیم میکند و آرایه دیگر فاصله تکرار را تعریف میکند. بااستفاده از این دو ویژگی باهم میتوانید الگویی ایجاد کنید که بتوان آن را در هر چندخطیای، صرفنظر از طول یا تعداد بخشهای موجود، اعمال کرد.
برای مثال، تکهکد زیر چندخطیای را با الگوی متناوب سیاه و سفید تعریف میکند. طولهای آن بهعنوان متر در امتداد خط لکسودرومیک (در
مرکاتور، این خط مستقیم است) درنظر گرفته میشود، زیرا نوع آن بهصورت
kGMSLengthRhumb مشخص شده است.
Swift
let styles = [ GMSStrokeStyle.solidColor(.white), GMSStrokeStyle.solidColor(.black) ] let lengths: [NSNumber] = [100000, 50000] polyline.spans = GMSStyleSpans( polyline.path!, styles, lengths, GMSLengthKind.rhumb )
آبجکتیو-سی
NSArray *styles = @[[GMSStrokeStyle solidColor:[UIColor whiteColor]], [GMSStrokeStyle solidColor:[UIColor blackColor]]]; NSArray *lengths = @[@100000, @50000]; polyline.spans = GMSStyleSpans(polyline.path, styles, lengths, kGMSLengthRhumb);
چندخطیهای اسپرایتدار
چندخطیهای Sprite Stamped به شما امکان میدهد بااستفاده از تصویر نگاشت بیتی تکرارشونده موردنظرتان چندخطی ایجاد کنید. شکلها با خط پیرامونی پسزمینه واضحی نشان داده میشوند، اما مُهر در گوشههای خط بریده نمیشود - این ویژگی برای موقعیتهایی مانند نشان دادن نقطهها برای تصویرسازی مسیرهای پیادهروی مفید است.

میتوانید از این ویژگی بااستفاده از GMSSpriteStyle و تنظیم آن بهعنوان مُهر بااستفاده از ویژگی stampStyle از GMSStrokeStyle استفاده کنید.
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
آبجکتیو-سی
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; UIImage *image = [UIImage imageNamed:@"imageFromBundleOrAsset"]; GMSStrokeStyle *transparentStampStroke = [GMSStrokeStyle transparentStrokeWithStampStyle:[GMSSpriteStyle spriteStyleWithImage:image]]; GMSStyleSpan *span = [GMSStyleSpan spanWithStyle:transparentStampStroke]; polyline.spans = @[span]; polyline.map = mapView;
چندخطیهای منقش با بافت
چندخطیهای بافتدار به شما امکان میدهند بااستفاده از بافت تکراری موردنظرتان، چندخطی ایجاد کنید. اشکال را میتوان با رنگ یکدست یا گرادیان واضح در پسزمینه نشان داد. با تغییر سطح بزرگنمایی، اندازه بافت تغییر میکند. تصاویر در پایان یا آغاز مسیرها یا نقاط مسیر در برخیاز سطوح بزرگنمایی بریده میشوند.

میتوانید از این ویژگی بااستفاده از GMSTextureStyle و تنظیم آن بهعنوان مُهر بااستفاده از ویژگی stampStyle GMSStrokeStyle استفاده کنید.
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
آبجکتیو-سی
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;
قابلیتهای نقشه
ویژگی mapCapabilities در GMSMapView بررسی برنامهای را برای ویژگیهای خاص نقشه اضافه میکند. این کار زمانی مفید است که میخواهید بدانید آیا
capabilities نقشه خاصی قبلاز فراخوانی میاناهای برنامهسازی کاربردی خاص دردسترس است یا نه. این پُرسمان تعیین میکند که آیا نمای نقشه از «چندخطیهای مُهرشده با اِسپریت» پشتیبانی میکند یا نه.
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
آبجکتیو-سی
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;
این الگو به شما امکان میدهد در تغییرات مشترک شوید و به بهروزرسانیها با حالت نمای نقشه خود واکنش نشان دهید. همچنین میتوانید didChangeMapCapabilities را در
GMSMapViewDelegate پیادهسازی کنید تا بهروزرسانیهای مربوط به دردسترس بودن ویژگی را دریافت کنید.
چندضلعیها
چندضلعیها شبیه چندخطیها هستند زیرا از مجموعهای از مختصات در یک توالی مرتب تشکیل شدهاند. بااینحال، چندضلعیها بهجای اینکه باز باشند،
طوری طراحی شدهاند که مناطق توپر را در یک حلقه بسته تعریف کنند. چندضلعیها
در کیت توسعه نرمافزار Maps برای iOS با کلاس GMSPolygon
تعریف میشوند.
میتوانید GMSPolygon را به همان روشی که
GMSPolyline را اضافه میکنید به نقشه اضافه کنید. ابتدا، مسیر آن را با ایجاد شیء GMSMutablePath مربوطه و افزودن نقاط به آن مشخص کنید.
این نقطهها طرح کلی چندضلعی را تشکیل میدهند. هر CLLocationCoordinate2D
نشاندهنده نقطهای روی سطح زمین است. پارهخطها بین نقاط براساس ترتیبی که آنها را به مسیر اضافه میکنید کشیده میشوند.
افزودن چندضلعی
- شیء
GMSMutablePathایجاد کنید. - نقاط مسیر را با روشهای
addCoordinate:یاaddLatitude:longitude:تنظیم کنید. این نقاط طرح کلی چندضلعی را تشکیل میدهند. - شیء
GMSPolygonجدیدی را بااستفاده از مسیر بهعنوان آرگومان نمونهسازی کنید. - ویژگیهای دیگر، مانند
strokeWidth،strokeColor، وfillColorرا بهدلخواه تنظیم کنید. - با تنظیم کردن ویژگی
GMSPolygon.map، چندضلعی را به شیءGMSMapViewاختصاص دهید. - چندضلعی روی نقشه نشان داده میشود.
تکهکد زیر مستطیلی را به نقشه اضافه میکند.
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
آبجکتیو-سی
// 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;
میتوانید ظاهر چندضلعی را هم قبلاز افزودن آن به نقشه و هم بعداز افزودن آن به نقشه سفارشیسازی کنید.
درحال برداشتن چندضلعی
با تنظیم ویژگی GMSPolygon.map روی nil و جدا کردن layer از والد آن، Polygon را بردارید.
Swift
polygon.map = nil polygon.layer.removeFromSuperLayer()
آبجکتیو-سی
polygon.map = nil; [polygon.layer removeFromSuperlayer];
حلقه
علاوهبر کلاس عمومی GMSPolygon،
کیت توسعه نرمافزار Google Maps برای iOS شامل GMSCircle نیز میشود که به شما امکان میدهد
دایرههایی روی سطح زمین بکشید.
برای ساختن دایره، باید دو ویژگی زیر را مشخص کنید:
-
positionبهعنوانCLLocationCoordinate2D. radiusبه متر.
سپس دایرهای تعریف میشود که مجموعهای از همه نقاط روی سطح زمین است
که radius متر از center دادهشده فاصله دارند. بهدلیل نحوه نمایش کره روی سطح صاف توسط تصویر مرکاتور که توسط Maps API استفاده میشود، این دایره وقتی نزدیک خط استوا قرار دارد، تقریباً بهصورت یک دایره کامل روی نقشه ظاهر میشود و با دور شدن دایره از خط استوا، بهطور فزایندهای غیردایرهای (روی صفحه) ظاهر میشود.
افزودن حلقه
تکهکد زیر دایرهای به نقشه اضافه میکند:
Swift
let circleCenter = CLLocationCoordinate2D(latitude: 37.35, longitude: -122.0) let circle = GMSCircle(position: circleCenter, radius: 1000) circle.map = mapView
آبجکتیو-سی
CLLocationCoordinate2D circleCenter = CLLocationCoordinate2DMake(37.35, -122.0); GMSCircle *circle = [GMSCircle circleWithPosition:circleCenter radius:1000]; circle.map = mapView;
میتوانید ظاهر دایره را هم قبلاز افزودن آن به نقشه و هم بعداز افزودن آن به نقشه سفارشیسازی کنید.
سفارشیسازی حلقه
با اصلاح کردن ویژگیهای
GMSCircle میتوانید رنگهای سفارشی و پهنای خط را مشخص کنید. از گزینههای زیر پشتیبانی میکند:
fillColor- شیء
UIColorکه رنگ داخلی دایره را مشخص میکند. بهطور پیشفرض شفاف است. strokeColor- شیء
UIColorکه رنگ طرح کلی دایره را مشخص میکند. پیشفرضها بهblackColor. strokeWidth- ضخامت خط پیرامونی دایره، به نقطه صفحهنمایش. پیشفرض ۱ است. وقتی نقشه بزرگنمایی میشود، ضخامت تغییر نمیکند.
قطعه کد زیر یک دایره قرمز ضخیم با فضای داخلی قرمز نیمهشفاف اضافه میکند.
Swift
circle.fillColor = UIColor(red: 0.35, green: 0, blue: 0, alpha: 0.05) circle.strokeColor = .red circle.strokeWidth = 5
آبجکتیو-سی
circle.fillColor = [UIColor colorWithRed:0.25 green:0 blue:0 alpha:0.05]; circle.strokeColor = [UIColor redColor]; circle.strokeWidth = 5;
درحال ایجاد چندضلعی توخالی
میتوانید چندین مسیر را در یک شیء GMSPolygon ترکیب کنید تا
اشکال پیچیدهای مانند حلقههای توپر یا دونات (که در آن نواحی چندضلعی
بهعنوان اشکال جداگانه در داخل چندضلعی ظاهر میشوند) ایجاد کنید. شکلهای پیچیده از ترکیب
چندین مسیر تشکیل شدهاند.
چندضلعیای با مسیری ایجاد کنید که بزرگترین منطقه تحت پوشش چندضلعی را مشخص کند. سپس ویژگی holes چندضلعی را بهعنوان آرایهای از یک یا چند شیء GMSPath مشخص کنید که حفرههای داخل چندضلعی را تعریف میکنند.
اگر مسیر کوچکتر کاملاً در مسیر بزرگتر محصور شده باشد، بهنظر میرسد که بخشی از چندضلعی برداشته شده است.
نمونه کد زیر چندضلعیای با دو سوراخ ایجاد میکند:
Swift
let hydeParkLocation = CLLocationCoordinate2D(latitude: -33.87344, longitude: 151.21135) let camera = GMSCameraPosition.camera(withTarget: hydeParkLocation, zoom: 16) let options = GMSMapViewOptions() options.camera = camera let mapView = GMSMapView(options: options) 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
آبجکتیو-سی
CLLocationCoordinate2D hydeParkLocation = CLLocationCoordinate2DMake(-33.87344, 151.21135); GMSCameraPosition *camera = [GMSCameraPosition cameraWithTarget:hydeParkLocation zoom:16]; GMSMapViewOptions *options = [[GMSMapViewOptions alloc] init]; options.camera = camera; mapView = [[GMSMapView alloc] initWithOptions:options]; 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;