تقدم لك حزمة SDK للخرائط لأجهزة 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
- تُستخدَم لتحديد لون جزء واحد أو أكثر من الخطوط المتعددة. وسمة span هي مصفوفة من كائنات
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 من حزمة تطوير البرامج (SDK) لـ "خرائط 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
بعد القسم السابق مباشرةً: في المثال أدناه، يبدأ اللون الرمادي من 1⁄2 إلى الجزء الثاني ويستمر من 1⁄2 إلى الجزء الثالث.
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
صفيفَتين تحددان نمطًا متكررًا. يحدد الصفيفة الأنماط التي يجب تكرارها، والآخر يحدد فاصل التكرار. عند استخدامهما معًا، يمكنك إنشاء نمط يمكن
تطبيقه على أي خطوط متعددة، بغض النظر عن طوله أو عدد القطع المتاحة.
على سبيل المثال، يحدد مقتطف الرمز أدناه خطًا متعددًا بنمط بديل بالأبيض والأسود. يتم التعامل مع أطوالها بالأمتار على طول خط الإزاحة (في
Mercator، هذا خط مستقيم) حيث يتم تحديد النوع على أنه
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);
خطوط متعدّدة مختومة على شكل سبرايت
تتيح لك الخطوط المتعددة المختومة إنشاء خطوط متعددة باستخدام صورة نقطية متكررة من اختيارك. تظهر الأشكال بلون واضح في الخلفية، ولكن لا يتم اقتطاع الطابع حول زوايا الخط، ما يجعلها مفيدة في حالات مثل النقاط لتوضيح اتجاهات المشي.
يمكنك استخدام هذه الميزة من خلال 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]; 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;
الخطوط المتعددة المختومة بهيئة
تتيح لك الخطوط المتعددة المختومة إنشاء خطوط متعددة باستخدام زخرفة متكررة من اختيارك. ويمكن عرض الأشكال بلون واحد واضح أو خالص أو خط خلفية متدرجة. يتم تغيير حجم الزخرفة عند تغيير مستويات التكبير أو التصغير. يتم اقتطاع الصور في نهاية أو بداية المسارات أو نقاط المسارات عند مستويات تكبير/تصغير معيّنة.
يمكنك استخدام هذه الميزة من خلال 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
معينة متاحة قبل استدعاء واجهات برمجة تطبيقات محددة. يحدّد طلب البحث هذا ما إذا كان عرض الخريطة يتيح استخدام خطوط متوازية تتضمّن ختم Sprite.
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
العامة، تتضمّن حزمة تطوير البرامج (SDK) لتطبيق "خرائط Google" لنظام التشغيل iOS أيضًا GMSCircle
، التي تتيح لك رسم دوائر على سطح الأرض.
لإنشاء دائرة، يجب تحديد السمتَين التاليتَين:
position
في دورCLLocationCoordinate2D
.radius
بالمتر.
يتم بعد ذلك تحديد الدائرة على أنها مجموعة من النقاط على سطح الأرض التي تبعد radius
متر عن center
المحدد. نظرًا للطريقة التي يعرض بها إسقاط Mercator المستخدم في واجهة برمجة التطبيقات للخرائط كرة على سطح مستوٍ، تظهر هذه الدائرة كدائرة شبه مثالية على الخريطة عند موقعها بالقرب من خط الاستواء، وتبدو بشكل متزايد غير دائري (على الشاشة) عند ابتعاد الدائرة عن خط الاستواء.
إضافة دائرة
يضيف مقتطف الرمز التالي دائرة إلى الخريطة:
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 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;