الأشكال

اختَر النظام الأساسي: Android iOS JavaScript

توفر حزمة تطوير البرامج بالاستناد إلى بيانات "خرائط 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];
      

إضافة خطوط متعدّدة

  1. أنشِئ عنصر GMSMutablePath.
  2. حدِّد النقاط في المسار باستخدام طريقة addCoordinate: أو addLatitude:longitude:.
  3. أنشئ مثيلاً لكائن GMSPolyline جديد باستخدام المسار كوسيطة.
  4. اضبط سمات أخرى، مثل strokeWidth وstrokeColor، حسب الحاجة.
  5. اضبط السمة map في GMSPolyline.
  6. يظهر الخط المتعدد على الخريطة.

يضيف مقتطف الرمز التالي مستطيلاً إلى الخريطة:

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);
      

خطوط متعددة مختومة بنمط Sprite

تتيح لك الخطوط المتعددة المختومة من Sprite إنشاء خطوط متعددة باستخدام صورة نقطية متكررة من اختيارك. تظهر الأشكال بخط خلفية واضح، ولكن لا يتم اقتطاع الطابع حول زوايا الخط، مما يجعلها مفيدة في حالات مثل النقاط لتوضيح اتجاهات المشي.

صورة متحرّكة لخطوط متعددة مختومة

يمكنك استخدام هذه الميزة من خلال 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 نقطة على سطح الأرض. يتم رسم المقاطع الخطية بين النقاط وفقًا للترتيب الذي تضيفها بها إلى المسار.

إضافة مضلّع

  1. أنشِئ عنصر GMSMutablePath.
  2. حدِّد النقاط في المسار باستخدام طريقة addCoordinate: أو addLatitude:longitude:. تشكل هذه النقاط مخطط المضلّع.
  3. أنشئ مثيلاً لكائن GMSPolygon جديد باستخدام المسار كوسيطة.
  4. اضبط السمات الأخرى، مثل strokeWidth وstrokeColor وfillColor، على النحو المطلوب.
  5. خصِّص المضلّع لعنصر GMSMapView من خلال ضبط السمة GMSPolygon.map.
  6. سيظهر المضلّع على الخريطة.

يضيف مقتطف الرمز التالي مستطيلاً إلى الخريطة.

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;