أشكال

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

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

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

خطوط متعدّدة مختومة بكائن رسومي

يمكنك استخدام هذه الميزة من خلال 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];
GMSPolyline *polyline = [GMSPolyline polylineWithPath:path];
polyline.strokeWidth = 20;

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 للحصول على آخر الأخبار حول مدى توفّر الميزة.

المضلّعات

تتشابه المضلّعات مع الخطوط المتعدّدة في أنّها تتكوّن من سلسلة من الإحداثيات في تسلسل مرتّب. ومع ذلك، بدلاً من أن تكون مفتوحة، تم تصميم المضلعات لتحديد مناطق صلبة داخل حلقة مغلقة. يتم تحديد المضلّعات في حزمة تطوير البرامج بالاستناد إلى بيانات &quot;خرائط Google&quot; للتطبيقات المتوافقة مع 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 العامة، تتضمّن حزمة تطوير البرامج بالاستناد إلى بيانات &quot;خرائط Google&quot; للتطبيقات المتوافقة مع iOS أيضًا GMSCircle، ما يتيح لك رسم دوائر على سطح الأرض.

لإنشاء دائرة، يجب تحديد السمتَين التاليتَين:

  • ‫position كـ CLLocationCoordinate2D.
  • ‫radius بالأمتار

بعد ذلك، يتم تحديد دائرة لتكون مجموعة من جميع النقاط على سطح الأرض التي تبعد radius متر عن center المحدّد. بسبب الطريقة التي يعرض بها إسقاط مركاتور المستخدم في Maps 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 options = GMSMapViewOptions()
options.camera = camera
let mapView = GMSMapView(options: options)
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];
GMSMapViewOptions *options = [[GMSMapViewOptions alloc] init];
options.camera = camera;
mapView = [[GMSMapView alloc] initWithOptions:options];

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;