الأشكال

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

تقدم حزمة تطوير البرامج بالاستناد إلى بيانات "خرائط Google" لتطبيقات iOS طرقًا متنوعة لإضافة أشكال إلى خرائط Google. تتوفّر الأشكال التالية:

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

يمكنك تعديل مظهر كل شكل بعدة طرق.

الخطوط المتعددة

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

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

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;