الأشكال

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

يضيف المقتطف التالي خطًا متعدّد الأضلاع سميكًا من ملبورن إلى بيرث، مع إدراج خط ربط هندسي.

Swift

let path = GMSMutablePath()
path.addLatitude(-37.81319, longitude: 144.96298)
path.addLatitude(-31.95285, longitude: 115.85734)
let polyline = GMSPolyline(path: path)
polyline.strokeWidth = 10.0
polyline.geodesic = true
polyline.map = mapView
      

Objective-C

GMSMutablePath *path = [GMSMutablePath path];
[path addLatitude:-37.81319 longitude:144.96298];
[path addLatitude:-31.95285 longitude:115.85734];
GMSPolyline *polyline = [GMSPolyline polylineWithPath:path];
polyline.strokeWidth = 10.f;
polyline.geodesic = YES;
polyline.map = mapView;
      

لتعديل خط متعدّد بعد إضافته إلى الخريطة، احرص على إبقاء عنصر GMSPolyline محصورًا في الإطار.

Swift

polyline.strokeColor = .blue
      

Objective-C

polyline.strokeColor = [UIColor blueColor];
      

تغيير لون خط متعدد الأضلاع

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

يستخدم المقتطف أدناه الطريقة spanWithColor: لتغيير لون الخط بأكمله إلى اللون الأحمر.

Swift

polyline.spans = [GMSStyleSpan(color: .red)]
      

Objective-C

polyline.spans = @[[GMSStyleSpan spanWithColor:[UIColor redColor]]];
      

بدلاً من ذلك، إذا كان لديك إذن وصول إلى عنصر GMSStrokeStyle ، يمكنك استخدام الطريقة spanWithStyle:.

Swift

let solidRed = GMSStrokeStyle.solidColor(.red)
polyline.spans = [GMSStyleSpan(style: solidRed)]
      

Objective-C

GMSStrokeStyle *solidRed = [GMSStrokeStyle solidColor:[UIColor redColor]];
polyline.spans = @[[GMSStyleSpan spanWithStyle:solidRed]];
      

قبل الإصدار 1.7 من حزمة تطوير البرامج بالاستناد إلى بيانات "خرائط Google" لنظام التشغيل iOS، كانت السمة الفردية strokeColor متاحة لضبط اللون الكامل لملف GMSPolyline. تكون لسمة spans الأولوية على strokeColor.

Swift

polyline.strokeColor = .red
      

Objective-C

polyline.strokeColor = [UIColor redColor];
      

الأنماط

إذا كان تطبيقك يطبّق لونًا متطابقًا للخطوط عدة مرات، قد يكون من المفيد تحديد نمط قابل لإعادة الاستخدام. يتم تحديد أنماط الخطوط المتعددة باستخدام العنصر GMSStrokeStyle. يمكن أن يكون نمط الحد إما لونًا موحّدًا أو متدرّجًا من لون إلى آخر. بعد إنشاء نمط، يمكنك تطبيقه على GMSStyleSpan باستخدام الأسلوب spanWithStyle:.

Swift

// Create two styles: one that is solid blue, and one that is a gradient from red to yellow
let solidBlue = GMSStrokeStyle.solidColor(.blue)
let solidBlueSpan = GMSStyleSpan(style: solidBlue)
let redYellow = GMSStrokeStyle.gradient(from: .red, to: .yellow)
let redYellowSpan = GMSStyleSpan(style: redYellow)
      

Objective-C

// Create two styles: one that is solid blue, and one that is a gradient from red to yellow
GMSStrokeStyle *solidBlue = [GMSStrokeStyle solidColor:[UIColor blueColor]];
GMSStyleSpan *solidBlueSpan = [GMSStyleSpan spanWithStyle:solidBlue];
GMSStrokeStyle *redYellow =
    [GMSStrokeStyle gradientFromColor:[UIColor redColor] toColor:[UIColor yellowColor]];
GMSStyleSpan *redYellowSpan = [GMSStyleSpan spanWithStyle:redYellow];
      

سيستمر نمط span حتى نهاية الخطوط المتعددة، أو إلى أن يتم ضبط نمط جديد. يمكنك تغيير لون الخط بأكمله من خلال ضبط سمة spans لخط متعدّد الأجزاء على GMSStyleSpan واحد. يوضّح المثال كيفية تطبيق تدرج على طول الخط المتعدّد الأجزاء بالكامل.

Swift

polyline.spans = [GMSStyleSpan(style: redYellow)]
      

Objective-C

polyline.spans = @[[GMSStyleSpan spanWithStyle:redYellow]];
      

تغيير لون أجزاء الخطوط الفردية

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

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

Swift

polyline.spans = [
  GMSStyleSpan(style: solidRed),
  GMSStyleSpan(style: solidRed),
  GMSStyleSpan(style: redYellow)
]
      

Objective-C

polyline.spans = @[[GMSStyleSpan spanWithStyle:solidRed],
                   [GMSStyleSpan spanWithStyle:solidRed],
                   [GMSStyleSpan spanWithStyle:redYellow]];
      

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

Swift

polyline.spans = [
  GMSStyleSpan(style: solidRed, segments:2),
  GMSStyleSpan(style: redYellow, segments:10)
]
      

Objective-C

polyline.spans = @[[GMSStyleSpan spanWithStyle:solidRed segments:2],
                   [GMSStyleSpan spanWithStyle:redYellow segments:10]];
      

شرائح الجمهور الجزئية

يمكن أيضًا تحديد الشرائح كقيمة كسرية. سيؤدي ذلك إلى تطبيق النمط على العدد الكسري للشرائح، ما قد يؤدي إلى تقسيم شريحة واحدة. يبدأ كل GMSStyleSpan مباشرةً بعد العنصر السابق: في المثال أدناه، يبدأ اللون الرمادي من ½ إلى القسم الثاني ويستمر إلى ½ من القسم الثالث.

Swift

polyline.spans = [
  GMSStyleSpan(style: solidRed, segments: 2.5),
  GMSStyleSpan(color: .gray),
  GMSStyleSpan(color: .purple, segments: 0.75),
  GMSStyleSpan(style: redYellow)
]
      

Objective-C

polyline.spans = @[[GMSStyleSpan spanWithStyle:solidRed segments:2.5],
                   [GMSStyleSpan spanWithColor:[UIColor grayColor]],
                   [GMSStyleSpan spanWithColor:[UIColor purpleColor] segments:0.75],
                   [GMSStyleSpan spanWithStyle:redYellow]];
      

إضافة نمط ألوان متكرر إلى خط متعدد الأضلاع

إذا أردت إضافة نمط إلى خط متعدد الأضلاع، يمكنك استخدام الطريقة المساعدة GMSStyleSpans في GMSGeometryUtils. تقبل الطريقة GMSStyleSpans صفيفَين يحدّدان نمطًا متكرّرًا. يحدِّد أحد المصفوفات الأنماط التي يجب تكرارها، ويحدِّد الآخر فاصل التكرار. عند استخدامهما معًا، يمكنك إنشاء نمط يمكن تطبيقه على أيّ خط متعدد الأضلاع، بغض النظر عن طوله أو عدد الأجزاء المتوفّرة.

على سبيل المثال، يحدِّد مقتطف الرمز البرمجي أدناه خطًا متعدد الأضلاع بنمط متناوب بين الأسود والأبيض. ويتم التعامل مع أطوالها على أنّها متر على طول خط rhumb (في Mercator، هذا خط مستقيم) حيث يتم تحديد النوع على أنّه kGMSLengthRhumb.

Swift

let styles = [
  GMSStrokeStyle.solidColor(.white),
  GMSStrokeStyle.solidColor(.black)
]
let lengths: [NSNumber] = [100000, 50000]
polyline.spans = GMSStyleSpans(
  polyline.path!,
  styles,
  lengths,
  GMSLengthKind.rhumb
)
      

Objective-C

NSArray *styles = @[[GMSStrokeStyle solidColor:[UIColor whiteColor]],
                    [GMSStrokeStyle solidColor:[UIColor blackColor]]];
NSArray *lengths = @[@100000, @50000];
polyline.spans = GMSStyleSpans(polyline.path, styles, lengths, kGMSLengthRhumb);
      

خطوط متعدّدة تم وضع علامة عليها من خلال صور متحركة

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

خطوط متعدّدة تم وضع طابع عليها

يمكنك استخدام هذه الميزة باستخدام GMSSpriteStyle وضبطه كطابع باستخدام السمة stampStyle في GMSStrokeStyle.

Swift

let path = GMSMutablePath()
path.addLatitude(-37.81319, longitude: 144.96298)
path.addLatitude(-31.95285, longitude: 115.85734)
let polyline = GMSPolyline(path: path)
polyline.strokeWidth = 20
let image = UIImage(named: "imageFromBundleOrAsset")! // Image could be from anywhere
let stampStyle = GMSSpriteStyle(image: image)
let transparentStampStroke = GMSStrokeStyle.transparentStroke(withStamp: stampStyle)
let span = GMSStyleSpan(style: transparentStampStroke)
polyline.spans = [span]
polyline.map = mapView
      

Objective-C

GMSMutablePath *path = [GMSMutablePath path];
[path addLatitude:-37.81319 longitude:144.96298];
[path addLatitude:-31.95285 longitude:115.85734];
polyline.strokeWidth = 20;
GMSPolyline *polyline = [GMSPolyline polylineWithPath:path];

UIImage *image = [UIImage imageNamed:@"imageFromBundleOrAsset"];
GMSStrokeStyle *transparentStampStroke = [GMSStrokeStyle transparentStrokeWithStampStyle:[GMSSpriteStyle spriteStyleWithImage:image]];

GMSStyleSpan *span = [GMSStyleSpan spanWithStyle:transparentStampStroke];
polyline.spans = @[span];
polyline.map = _mapView;
      

الخطوط المتعددة التي تحمل طابعًا زخرفيًا

تسمح لك الخطوط المتعددة التي تم وضع طابع عليها باستخدام نسيج بإنشاء خط متعدد باستخدام نسيج متكرر من اختيارك. يمكن عرض الأشكال بلون واضح أو غير شفاف أو بخط قاعدي متدرّج في الخلفية. يتم تغيير حجم النسيج مع تغيُّر مستويات التكبير/التصغير. يتم اقتطاع الصور في نهاية المسارات أو نقاطها أو بدايتها عند مستويات معيّنة للتكبير/التصغير.

خطوط متعدّدة مزخرفة

يمكنك استخدام هذه الميزة باستخدام GMSTextureStyle وتحديد ه كطابع باستخدام السمة stampStyle في GMSStrokeStyle.

Swift

let path = GMSMutablePath()
path.addLatitude(-37.81319, longitude: 144.96298)
path.addLatitude(-31.95285, longitude: 115.85734)
let polyline = GMSPolyline(path: path)
polyline.strokeWidth = 20
let redWithStamp = GMSStrokeStyle.solidColor(.red)
let image = UIImage(named: "imageFromBundleOrAsset")! // Image could be from anywhere
redWithStamp.stampStyle = GMSTextureStyle(image: image)
let span = GMSStyleSpan(style: redWithStamp)
polyline.spans = [span]
polyline.map = mapView
      

Objective-C

GMSMutablePath *path = [GMSMutablePath path];
[path addLatitude:-37.81319 longitude:144.96298];
[path addLatitude:-31.95285 longitude:115.85734];
GMSPolyline *polyline = [GMSPolyline polylineWithPath:path];
polyline.strokeWidth = 20;
GMSStrokeStyle *redWithStamp = [GMSStrokeStyle solidColor:[UIColor redColor]];

UIImage *image = [UIImage imageNamed:@"imageFromBundleOrAsset"]; // Image could be from anywhere
redWithStamp.stampStyle = [GMSTextureStyle textureStyleWithImage:image];

GMSStyleSpan *span = [GMSStyleSpan spanWithStyle:redWithStamp];
polyline.spans = @[span];
polyline.map = _mapView;
      

إمكانات "خرائط Google"

تضيف سمة mapCapabilities في GMSMapView عملية فحص programmatic للعناصر المتعلّقة بالخريطة. يكون ذلك مفيدًا عندما تريد معرفة ما إذا كانت هناك خرائط capabilities معيّنة متاحة قبل طلب واجهات برمجة تطبيقات معيّنة. يحدِّد هذا الطلب ما إذا كانت طريقة عرض الخريطة تتيح استخدام الخطوط المتعددة المُختمة بالصور الرمزية.

Swift

let path = GMSMutablePath()
path.addLatitude(-37.81319, longitude: 144.96298)
path.addLatitude(-31.95285, longitude: 115.85734)
let polyline = GMSPolyline(path: path)
polyline.strokeWidth = 20
let image = UIImage(named: "imageFromBundleOrAsset")! // Image could be from anywhere
let spans: [GMSStyleSpan]
if (mapView.mapCapabilities.contains(.spritePolylines)) {
  let spriteStyle = GMSSpriteStyle(image: image)
  let stroke = GMSStrokeStyle.transparentStroke(withStamp: spriteStyle)
  spans = [ GMSStyleSpan(style: stroke) ]
} else {
  let stroke = GMSStrokeStyle.solidColor(.clear)
  stroke.stampStyle = GMSTextureStyle(image: image)
  spans = [ GMSStyleSpan(style: stroke) ]
}
polyline.spans = spans
polyline.map = mapView
      

Objective-C

GMSMutablePath *path = [GMSMutablePath path];
[path addLatitude:-37.81319 longitude:144.96298];
[path addLatitude:-31.95285 longitude:115.85734];

UIImage *_Nonnull image = [UIImage imageNamed:@"imageFromBundleOrAsset"]; // Image could be from anywhere

NSArray<GMSStyleSpan *> * spans;
if (_mapView.mapCapabilities & GMSMapCapabilityFlagsSpritePolylines) {
  GMSSpriteStyle *spriteStyle = [GMSSpriteStyle spriteStyleWithImage:image];
  GMSStrokeStyle *stroke = [GMSStrokeStyle transparentStrokeWithStampStyle:spriteStyle];
  spans = @[ [GMSStyleSpan spanWithStyle:stroke] ];
} else {
  GMSStrokeStyle *stroke = [GMSStrokeStyle solidColor:UIColor.clearColor];
  stroke.stampStyle = [GMSTextureStyle textureStyleWithImage:image];
  spans = @[ [GMSStyleSpan spanWithStyle:stroke] ];
}

GMSPolyline *polyline = [GMSPolyline polylineWithPath:path];
polyline.strokeWidth = 20;
polyline.spans = spans;
polyline.map = _mapView;
      

يتيح لك هذا النمط الاشتراك في التغييرات والتفاعل مع التعديلات باستخدام حالة عرض الخريطة. يمكنك أيضًا تنفيذ didChangeMapCapabilities على GMSMapViewDelegate للحصول على آخر المعلومات حول مدى توفّر الميزة.

المضلّعات

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

يمكنك إضافة GMSPolygon إلى الخريطة بالطريقة نفسها التي تضيف بها GMSPolyline. أولاً، حدِّد مساره من خلال إنشاء جسم GMSMutablePath مطابق وإضافة نقاط إليه. تشكل هذه النقاط المخطط الأساسي للمضلّع. يمثّل كل CLLocationCoordinate2D نقطة على سطح الأرض. يتم رسم أجزاء الخطوط بين النقاط وفقًا للترتيب الذي تضيفها به إلى المسار.

إضافة مضلّع

  1. أنشئ عنصر GMSMutablePath.
  2. اضبط النقاط في المسار باستخدام الطريقتَين addCoordinate: أو addLatitude:longitude:. تشكل هذه النقاط المخطط المفصّل للضلع المتعدّد.
  3. أنشئ مثيلًا جديدًا لكائن GMSPolygon باستخدام المسار كأحد المَعلمات.
  4. اضبط السمات الأخرى، مثل strokeWidth وstrokeColor وfillColor، حسب الحاجة.
  5. اضبط سمة GMSPolygon.map لتحديد المضلع كعنصر GMSMapView.
  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 العامة، تتضمّن حزمة تطوير البرامج بالاستناد إلى بيانات "خرائط 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;