الأشكال

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

إضافة دائرة

يضيف مقتطف الرمز التالي دائرة إلى الخريطة:

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;