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