أشكال

تنظيم صفحاتك في مجموعات يمكنك حفظ المحتوى وتصنيفه حسب إعداداتك المفضّلة.
اختَر النظام الأساسي: Android iOS JavaScript

تقدّم حزمة تطوير البرامج (SDK) للخرائط لنظام التشغيل 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) للخرائط لنظام التشغيل 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);
      

المضلعات

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