أشكال

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

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

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

إذا كنت تريد تصميم كل جزء من خط polyline بشكل فردي، يمكنك إنشاء مجموعة من كائنات 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 مباشرةً بعد القسم السابق: في المثال أدناه، سيبدأ اللون الرمادي من النصف الثاني إلى القسم الثاني ويستمر إلى النصف 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 وضبطها كختم عبر السمة GMSStrokeStyle stampStyle.

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 وضبطها كختم عبر السمة GMSStrokeStyle stampStyle.

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 متاحة قبل طلب بيانات من واجهة برمجة تطبيقات معيّنة. يحدّد طلب البحث هذا ما إذا كان عرض الخريطة يتوافق مع خطوط Polysstamp المضغوطة.

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

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

  • position كـ CLLocationCoordinate2D.
  • radius متر

بعد ذلك، يتم تعريف الدائرة على أنها مجموعة كل النقاط على سطح الأرض والتي تبعد مسافة radius متر عن موقع center المحدّد. بسبب كيفية عرض إسقاط Mercator الذي تستخدمه واجهة API 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 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;