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