توفّر لك حزمة تطوير البرامج (SDK) في "خرائط 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
- يُستخدم لتحديد لون شريحة واحدة أو أكثر من المضلّع. خاصية 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 من حزمة تطوير البرامج بالاستناد إلى بيانات "خرائط 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]];
تغيير لون أجزاء الأسطر الفردية
إذا كنت تريد تصميم كل جزء من خط polyline بشكل فردي، يمكنك إنشاء مجموعة من كائنات 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
مباشرةً بعد القسم السابق: في المثال أدناه، سيبدأ اللون الرمادي من النصف الثاني إلى القسم الثاني ويستمر إلى النصف 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
صفيفَين
يحدّدان نمطًا متكررًا. تُحدِّد المصفوفة الأنماط التي يجب تكرارها، ويحدِّد الصف الآخر فاصل التكرار. عند استخدامهما معًا
يمكنك إنشاء نمط يمكن تطبيقه على أي خط متعدد، بغض النظر عن
طوله أو عدد الشرائح المتاحة.
على سبيل المثال، يحدّد مقتطف الرمز التالي خطًا متعدد الأضلاع نمطًا بديلاً باللونين الأبيض والأسود. ويتم التعامل مع طوله كأمتار على طول خط رامب (مثل خط "ماركتور" يكون خطًا مستقيمًا) كما يتم تحديد النوع على أنه
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
وضبطها كختم عبر السمة GMSStrokeStyle
stampStyle
.
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
وضبطها كختم عبر السمة GMSStrokeStyle
stampStyle
.
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
متاحة قبل طلب بيانات من واجهة برمجة تطبيقات معيّنة. يحدّد طلب البحث هذا ما إذا كان عرض الخريطة يتوافق مع خطوط Polysstamp المضغوطة.
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
المحدّد. بسبب كيفية عرض إسقاط Mercator الذي تستخدمه واجهة API 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 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;