
توفّر حزمة تطوير البرامج بالاستناد إلى بيانات "خرائط Google" للتطبيقات المتوافقة مع 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)
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];
إضافة خطوط متعدّدة
- أنشِئ عنصر
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
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;

إزالة خطوط متعدّدة
يمكنك إزالة خط متعدّد من الخريطة من خلال ضبط السمة map في GMSPolyline على nil. بدلاً من ذلك، يمكنك إزالة جميع العناصر المركّبة (بما في ذلك
الخطوط المتعدّدة والأشكال الأخرى) على الخريطة من خلال استدعاء طريقة GMSMapView
clear.
Swift
mapView.clear()
Objective-C
[mapView clear];
تخصيص خطوط متعدّدة
يوفّر العنصر GMSPolyline عدة سمات للتحكّم في مظهر الخط. وتتوفّر الخيارات التالية:
strokeWidth- عرض الخط بالكامل، بنقاط الشاشة يكون الإعداد التلقائي بالقيمة 1. لا يتغيّر العرض عند تكبير الخريطة أو تصغيرها.
geodesic-
عندما تكون القيمة
YES، يتم عرض حافة الخطوط المتعدّدة هذه كخط جيوديسي. تتبع الأجزاء الجيوديسية أقصر مسار على طول سطح الأرض وقد تظهر كخطوط منحنية على خريطة بإسقاط مركاتور. يتم رسم الأجزاء غير الجيوديسية كخطوط مستقيمة على الخريطة. القيمة التلقائية هيNO. spans
- يُستخدَم لتحديد لون جزء واحد أو أكثر من خطوط متعدّدة. سمة spans هي مصفوفة من عناصر
GMSStyleSpan. يُعدّ ضبط السمةspansالطريقة المفضّلة لتغيير لون خط متعدّد. strokeColor
- عنصر
UIColorيحدّد لون الخطوط المتعدّدة القيمة التلقائية هيblueColor. يتم تجاهل السمةstrokeColorفي حال ضبط السمةspans.
يضيف المقتطف التالي خطًا متعدّدًا سميكًا من ملبورن إلى بيرث، مع استكمال جيوديسي.
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;
لتعديل خط متعدّد بعد إضافته إلى الخريطة، احرص على الاحتفاظ بالكائن GMSPolyline.
Swift
polyline.strokeColor = .blue
Objective-C
polyline.strokeColor = [UIColor blueColor];
تغيير لون خط متعدّد
يتم رسم الخطوط المتعدّدة كسلسلة من الأجزاء على الخريطة. يمكنك تغيير لون
أجزاء فردية أو الخط بأكمله باستخدام السمة spans. على الرغم من أنّ هذه السمة تمنحك تحكّمًا مفصّلاً في تلوين الخطوط المتعدّدة، تتوفّر عدة وسائل تتيح لك تطبيق نمط واحد على الخط بأكمله.
يستخدم المقتطف أدناه طريقة spanWithColor: لتغيير لون السطر بأكمله إلى الأحمر.
Swift
polyline.spans = [GMSStyleSpan(color: .red)]
Objective-C
polyline.spans = @[[GMSStyleSpan spanWithColor:[UIColor redColor]]];
بدلاً من ذلك، إذا كان لديك إذن بالوصول إلى عنصر GMSStrokeStyle، يمكنك استخدام الإجراء 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]];
قبل الإصدار 1.7 من حزمة تطوير البرامج بالاستناد إلى بيانات "خرائط Google" للتطبيقات المتوافقة مع iOS، كانت السمة الفردية strokeColor متاحة لضبط لون GMSPolyline بالكامل. تكون لسمة spans الأولوية على strokeColor.
Swift
polyline.strokeColor = .red
Objective-C
polyline.strokeColor = [UIColor redColor];
الأنماط
إذا كان تطبيقك يطبّق لون الخط نفسه عدة مرات، قد يكون من المفيد
تحديد نمط قابل لإعادة الاستخدام. يتم تحديد أنماط الخطوط المتعدّدة باستخدام العنصر
GMSStrokeStyle. يمكن أن يكون نمط الحدّ الخارجي إما لونًا خالصًا أو تدرجًا من لون إلى آخر. بعد إنشاء نمط، يمكنك تطبيقه على GMSStyleSpan باستخدام طريقة 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];
سيستمر نمط span حتى نهاية الخطوط المتعدّدة أو حتى يتم ضبط نمط جديد. يمكنك تغيير لون الخط بأكمله من خلال ضبط السمة spans
للخط المتعدّد على قيمة واحدة GMSStyleSpan يوضّح المثال
كيفية تطبيق تدرّج على طول الخط المتعدّد بالكامل.
Swift
polyline.spans = [GMSStyleSpan(style: redYellow)]
Objective-C
polyline.spans = @[[GMSStyleSpan spanWithStyle:redYellow]];
تغيير لون أجزاء الخطوط الفردية
إذا أردت تصميم كل جزء من الخطوط المتعدّدة بشكل فردي، يمكنك إجراء ذلك
من خلال إنشاء مصفوفة من عناصر GMSStyleSpan، وتمريرها
إلى السمة spans. بشكل تلقائي، يضبط كل عنصر في المصفوفة لون
الجزء المقابل من الخط. إذا كان هناك عناصر في الصفيف أكثر من
الأجزاء في السطر، فسيتم تجاهل العناصر الإضافية. إذا كان هناك عدد أقل من العناصر في المصفوفة، يصف GMSStyleSpan النهائي اللون لبقية السطر.
يمكنك استخدام كتل من الألوان و/أو خطوط متعدّدة متدرجة للإشارة إلى التغييرات على طول الخطوط المتعدّدة، مثل الارتفاع أو السرعة. يضبط المقتطف أدناه لون أول جزأين من خط متعدّد على اللون الأحمر، وبقية الخط عبارة عن تدرج من الأحمر إلى الأصفر.
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]];
يمكنك استخدام طريقة spanWithStyle:segments: لضبط النمط لعدة
أقسام في آن واحد. على سبيل المثال، الرمز التالي يعادل الرمز أعلاه.
يتم دائمًا تجاهل طول المقطع في السمة GMSStyleSpan الأخيرة
لأنّ النمط يُستخدم لوصف الجزء المتبقي من الخط.
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]];
الشرائح الجزئية
يمكن أيضًا تحديد الشرائح كقيمة كسرية. سيؤدي ذلك إلى تطبيق النمط على العدد الكسري للشرائح، مما قد يتسبب في انقسام في شريحة واحدة. يبدأ كل GMSStyleSpan مباشرةً بعد
السابق: في المثال أدناه، يبدأ اللون الرمادي من ½ خلال
الجزء الثاني ويستمر حتى ½ خلال الجزء الثالث.
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]];
إضافة نمط ألوان متكرّر إلى خطوط متعدّدة
إذا أردت إضافة نمط إلى خط متعدّد، يمكنك استخدام طريقة الأداة المساعدة 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 )
Objective-C
NSArray *styles = @[[GMSStrokeStyle solidColor:[UIColor whiteColor]], [GMSStrokeStyle solidColor:[UIColor blackColor]]]; NSArray *lengths = @[@100000, @50000]; polyline.spans = GMSStyleSpans(polyline.path, styles, lengths, kGMSLengthRhumb);
خطوط متعدّدة مختومة من Sprite
تتيح لك الخطوط المتعدّدة المطبوعة باستخدام Sprite إنشاء خط متعدّد باستخدام صورة نقطية متكرّرة من اختيارك. تظهر الأشكال بحدود خلفية واضحة، ولكن لا يتم اقتطاع الختم حول زوايا الخطوط، ما يجعلها مفيدة في حالات مثل النقاط لتوضيح اتجاهات المشي.

يمكنك استخدام هذه الميزة من خلال 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
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; 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
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;
إمكانات الخريطة
تضيف السمة 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
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;
يتيح لك هذا النمط الاشتراك في التغييرات والتفاعل مع التعديلات من خلال حالة عرض الخريطة. يمكنك أيضًا تنفيذ didChangeMapCapabilities على
GMSMapViewDelegate للحصول على آخر الأخبار حول
توفّر الميزة.
المضلّعات
تتشابه المضلّعات مع الخطوط المتعدّدة في أنّها تتكوّن من سلسلة من الإحداثيات في تسلسل مرتّب. ومع ذلك، بدلاً من أن تكون مفتوحة،
تم تصميم المضلعات لتحديد مناطق صلبة داخل حلقة مغلقة. يتم تحديد المضلّعات في حزمة تطوير البرامج بالاستناد إلى بيانات "خرائط Google" للتطبيقات المتوافقة مع iOS من خلال الفئة GMSPolygon.
يمكنك إضافة GMSPolygon إلى الخريطة بالطريقة نفسها التي تضيف بها
GMSPolyline. أولاً، حدِّد مساره من خلال إنشاء كائن GMSMutablePath مطابق وإضافة نقاط إليه.
وتشكّل هذه النقاط مخطّط المضلّع. يمثّل كل CLLocationCoordinate2D نقطة على سطح الأرض. يتم رسم أجزاء الخطوط بين النقاط وفقًا للترتيب الذي تضيفها به إلى المسار.
إضافة مضلّع
- أنشِئ عنصر
GMSMutablePath. - اضبط النقاط في المسار باستخدام الطريقتَين
addCoordinate:أوaddLatitude:longitude:. تشكّل هذه النقاط مخطّط المضلّع. - أنشئ مثيلاً جديدًا للكائن
GMSPolygonباستخدام المسار كوسيطة. - اضبط السمات الأخرى، مثل
strokeWidthوstrokeColorوfillColor، حسب رغبتك. - يمكنك تخصيص المضلّع لعنصر
GMSMapViewمن خلال ضبط السمةGMSPolygon.map. - يظهر المضلّع على الخريطة.
يضيف مقتطف الرمز التالي مستطيلاً إلى خريطة.
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;
يمكنك تخصيص مظهر المضلّع قبل إضافته إلى الخريطة وبعد إضافته إليها.
إزالة مضلّع
يمكنك إزالة مضلّع من خلال ضبط السمة GMSPolygon.map على nil وفصل
layer عن العنصر الرئيسي.
Swift
polygon.map = nil polygon.layer.removeFromSuperLayer()
Objective-C
polygon.map = nil; [polygon.layer removeFromSuperlayer];
دوائر
بالإضافة إلى فئة GMSPolygon العامة، تتضمّن حزمة تطوير البرامج بالاستناد إلى بيانات "خرائط Google" للتطبيقات المتوافقة مع 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
Objective-C
CLLocationCoordinate2D circleCenter = CLLocationCoordinate2DMake(37.35, -122.0); GMSCircle *circle = [GMSCircle circleWithPosition:circleCenter radius:1000]; circle.map = mapView;
يمكنك تخصيص مظهر الدائرة قبل إضافتها إلى الخريطة وبعد إضافتها إليها.
تخصيص دائرة
يمكنك تحديد ألوان مخصّصة وعرض الخطوط من خلال تعديل سمات GMSCircle. وتتوفّر الخيارات التالية:
fillColor
- : عنصر
UIColorيحدّد اللون الداخلي للدائرة القيمة التلقائية هي "شفاف". strokeColor- كائن
UIColorيحدّد لون المخطط التفصيلي للدائرة. القيمة التلقائية هيblackColor. strokeWidth- سُمك مخطّط الدائرة، بنقاط الشاشة. يكون الإعداد التلقائي بالقيمة 1. لا يتغيّر السُمك عند تكبير الخريطة أو تصغيرها.
يضيف المقتطف التالي دائرة حمراء سميكة مع جزء داخلي أحمر شبه شفاف.
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;
إنشاء مضلّع مجوّف
يمكنك دمج مسارات متعددة في عنصر 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
Objective-C
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;