
توفّر حزمة تطوير البرامج بالاستناد إلى بيانات "خرائط 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
تتيح لك الخطوط المتعدّدة المطبوعة على شكل كائنات رسومية إنشاء خط متعدّد باستخدام صورة نقطية متكرّرة من اختيارك. تظهر الأشكال بحدود واضحة في الخلفية، ولكن لا يتم اقتطاع الختم حول زوايا الخطوط، ما يجعلها مفيدة في حالات مثل النقاط لتوضيح اتجاهات المشي.

يمكنك استخدام هذه الميزة من خلال 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;