توفّر حزمة تطوير البرامج بالاستناد إلى بيانات "خرائط 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
، يمكنك عرض حافة هذا الخط المتعدّد الأضلاع كخط قياسي. تتبع الأجزاء الجيوديسية أقصر مسار على سطح الأرض وقد تظهر كخطوط منحنية على خريطة باستخدام إسقاط Mercator. يتم رسم الأجزاء غير الجيوديسية على شكل خطوط مستقيمة على الخريطة. الإعداد التلقائي هو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
صفيفَين يحدّدان نمطًا متكرّرًا. يحدِّد أحد المصفوفات الأنماط التي يجب تكرارها، ويحدِّد الآخر فاصل التكرار. عند استخدامهما معًا، يمكنك إنشاء نمط يمكن
تطبيقه على أيّ خط متعدد الأضلاع، بغض النظر عن طوله أو عدد الأجزاء
المتوفّرة.
على سبيل المثال، يحدِّد مقتطف الرمز البرمجي أدناه خطًا متعدد الأضلاع بنمط متناوب بين الأسود والأبيض. ويتم التعامل مع أطوالها على أنّها متر على طول خط rhumb (في
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);
خطوط متعدّدة تم وضع علامة عليها من خلال صور متحركة
تسمح لك الخطوط المتعددة التي تحمل طابعًا من الصور الرمزية بإنشاء خط متعدد باستخدام صورة bitmap repeated متكرّرة من اختيارك. تظهر الأشكال مع خط واضح في الخلفية، ولكن لا يتم اقتطاع الطابع حول زوايا الخطوط، ما يجعلها مفيدة في حالات مثل النقاط لتوضيح اتجاهات السير.
يمكنك استخدام هذه الميزة باستخدام 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;
إمكانات "خرائط Google"
تضيف سمة mapCapabilities
في GMSMapView
عملية فحص programmatic
للعناصر المتعلّقة بالخريطة. يكون ذلك مفيدًا عندما تريد معرفة ما إذا كانت
هناك خرائط 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
، حسب الحاجة. - اضبط سمة
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
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
المحدّد. ونظرًا للطريقة التي يعرض بها إسقاط ماركتور الذي تستخدمه واجهة برمجة تطبيقات الخرائط الكرة على سطح مستوٍ، فإنه يظهر كدائرة شبه مثالية على الخريطة عند وضعها بالقرب من خط الاستواء، ويظهر بشكل متزايد غير دائري (على الشاشة) كلما ابتعدت الدائرة عن خط الاستواء.
إضافة دائرة
يضيف مقتطف الرمز البرمجي التالي دائرة إلى الخريطة:
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;