إعداد خريطة

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

توضِّح هذه النظرة العامة كيفية ضبط خريطة تمت إضافتها إلى تطبيق iOS باستخدام حزمة تطوير البرامج بالاستناد إلى بيانات "خرائط Google" لتطبيقات iOS.

نظرة عامة

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

تشمل الإعدادات الأولية للخريطة ما يلي:

أثناء التشغيل، يمكنك ضبط هذه الإعدادات وبعض الإعدادات الإضافية من خلال تعديل عنصر GMSMapView.

خيارات الخريطة

عند بدء عرض الخريطة، يتم ضبط خيارات الضبط باستخدام GMSMapViewOptions. تشمل سمات الخيار frame أو camera أو mapID أو backgroundColor.

خيارات الخريطة
إطار صورة
القيمة: CGRect
إطار الخريطة القيمة التلقائية هي CGRectZero.
كاميرا
القيمة: GMSCameraPosition
موضع الكاميرا التلقائي على الخريطة
mapID
القيمة: GMSMapID
معرّف خريطة Google مَعلمة اختيارية.
backgroundColor
القيمة: UIColor
القيمة التلقائية هي UIColor.lightGray

ضبط خيارات الخريطة

يمكنك إما ضبط سمات الخيارات الخاصة بك، أو تمرير مثيل GMSMapViewOptions بالقيم التلقائية مباشرةً إلى GMSMapView.

Swift

let options = GMSMapViewOptions()
options.camera = GMSCameraPosition.camera(withLatitude: -33.8683, longitude: 151.2086, zoom: 6)
let mapView = GMSMapView(options:options)

Objective-C

GMSMapViewOptions *options = [[GMSMapViewOptions alloc] init];
options.camera = [GMSCameraPosition cameraWithLatitude:-33.8683
                                                        longitude:151.2086
                                                             zoom:6];
GMSMapView *mapView = [[GMSMapView alloc] initWithOptions:options];

في ما يلي مثال على تمرير عنصر GMSMapViewOptions بالقيم التلقائية مباشرةً إلى GMSMapView.

Swift

let options = GMSMapViewOptions()
let mapView = GMSMapView(options:options) //initialized with default values

Objective-C

GMSMapViewOptions *options = [[GMSMapViewOptions alloc] init];
GMSMapView *mapView = [[GMSMapView alloc] initWithOptions:options]; //initialized with default values

ضبط لون الخلفية

عند العمل في الوضع الداكن أو التبديل بين طرق عرض الخريطة، قد يكون من المفيد تجاوز اللون التلقائي لخلفية الخريطة. ويمكن تحقيق ذلك من خلال ضبط سمة خيارات الخريطة backgroundColor.

Swift

let options = GMSMapViewOptions()
options.backgroundColor = UIColor.yellowColor
let mapView = GMSMapView(options:options)

Objective-C

GMSMapViewOptions *options = [[GMSMapViewOptions alloc] init];
options.backgroundColor = UIColor.yellowColor;
GMSMapView *mapView = [[GMSMapView alloc] initWithOptions:options];

أنواع الخرائط

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

نوع الخريطة
عادي
القيمة: kGMSTypeNormal
خريطة طريق نموذجية تعرِض هذه الطبقات الطرق وبعض العناصر التي يبناها البشر والمعالم الطبيعية المهمة، مثل الأنهار. تظهر أيضًا تصنيفات الطرق والعناصر. تتيح ضبط الألوان في الخريطة على مظهر داكن أو فاتح أو اتّباع إعدادات النظام.
سيارة هجينة
القيمة: kGMSTypeHybrid
بيانات صور الأقمار الصناعية مع خرائط الطرق المُضافة تظهر أيضًا تصنيفات الطرق والعناصر.
القمر الصناعي
القيمة: kGMSTypeSatellite
بيانات الصور الفوتوغرافية من الأقمار الصناعية لا تظهر تصنيفات الطرق والعناصر
التضاريس
القيمة: kGMSTypeTerrain
البيانات الطبوغرافية تتضمّن الخريطة الألوان والخطوط الكنتورية والتسميات والتظليل المنظوري. تظهر أيضًا بعض الطرق والتصنيفات. أن تتيح ضبط الألوان في الخريطة على مظهر داكن أو فاتح أو أن تتّبع إعدادات النظام
بدون
القيمة: kGMSTypeNone
لا تتوفّر مربعات خرائط. لن يتم عرض مربّعات الخريطة الأساسية. يكون هذا الوضع مفيدًا مع طبقات المربّعات. يتم إيقاف عرض بيانات حركة المرور عندما يتم ضبط نوع الخريطة على "بدون".

تغيير نوع الخريطة

لضبط نوع خريطة، خصِّص قيمة جديدة للسمة GMSMapView.mapType. على سبيل المثال، لعرض نوع خريطة القمر الصناعي:

Swift

let options = GMSMapViewOptions()
options.camera = GMSCameraPosition.camera(withLatitude: -33.8683, longitude: 151.2086, zoom: 6)
let mapView = GMSMapView(options:options)
mapView.mapType = .satellite

Objective-C

GMSMapViewOptions *options = [[GMSMapViewOptions alloc] init];
options.camera = [GMSCameraPosition cameraWithLatitude:-33.8683
                                                  longitude:151.2086
                                                        zoom:6];
GMSMapView *mapView = [[GMSMapView alloc] initWithOptions:options];
mapView.mapType = kGMSTypeSatellite;

يعرض أداة الاختيار أدناه مقارنةً بين الخرائط العادية وخرائط التضاريس والخرائط الهجينة للموقع الجغرافي نفسه:

خرائط داخلية

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

يمكنك إيقاف الخرائط الداخلية من خلال ضبط السمة indoorEnabled لملف ‎ GMSMapView على NO.

Swift

mapView.isIndoorEnabled = false
      

Objective-C

mapView.indoorEnabled = NO;
      

بدلاً من ذلك، يمكنك إيقاف عنصر التحكّم في أداة اختيار الطوابق فقط.

إضافة مخطّطات الطوابق

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

طبقة كثافة حركة المرور

يمكنك منح المستخدمين إمكانية عرض الخريطة مع معلومات كثافة حركة المرور المتراكبة عليها. يوفّر هذا الملخّص المرئي معلومات عن حركة المرور المحلية. يمكنك تفعيل طبقة حركة المرور وإيقافها من خلال استدعاء trafficEnabled الطريقة. يوضّح المثال التالي كيفية ظهور طبقة حركة المرور على الخريطة.

خريطة على Google تعرض تضاريس سطح الأرض

تسهيل الاستخدام

تكون عناصر تسهيل الاستخدام على الخريطة مخفية تلقائيًا. يمكنك تفعيل تسهيل الاستخدام من خلال ضبط سمة accessibilityElementsHidden لسمة GMSMapView على NO. يؤدي ذلك إلى إنشاء عناصر تسهيل الاستخدام لعناصر التراكب (مثل GMSMarker ونوافذ المعلومات وGMSPolyline وما إلى ذلك).

Swift

mapView.accessibilityElementsHidden = false
      

Objective-C

mapView.accessibilityElementsHidden = NO;
      

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

موقعي الجغرافي

لا تظهر أي بيانات موقع جغرافي على الخريطة تلقائيًا. يمكنك تفعيل النقطة الزرقاء "موقعي" واتجاه البوصلة من خلال ضبط myLocationEnabled على GMSMapView.

Swift

mapView.isMyLocationEnabled = true
      

Objective-C

mapView.myLocationEnabled = YES;
      

يؤدي تفعيل هذه الميزة إلى عرض الموقع الجغرافي الحالي للمستخدم من خلال السمة myLocation. قد لا يكون هذا الموقع متاحًا على الفور، مثلاً إذا طلب نظام التشغيل iOS من المستخدم السماح بالوصول إلى هذه البيانات. وهي nil في هذه الحالة.

Swift

print("User's location: \(String(describing: mapView.myLocation))")
      

Objective-C

NSLog(@"User's location: %@", mapView.myLocation);
      

مبانٍ ثلاثية الأبعاد

عند عرض العديد من المدن عن قرب، ستظهر المباني الثلاثية الأبعاد، كما هو موضّح في صورة سياتل، واشنطن أدناه.

خريطة ثلاثية الأبعاد للمباني في سياتل، واشنطن

يمكنك إيقاف المباني الثلاثية الأبعاد من خلال ضبط السمة GMSMapView المقابلة لها في Swift أو Objective-C، كما هو موضّح أدناه:

Swift

mapView.isBuildingsEnabled = false
      

Objective-C

[mapView setBuildingsEnabled:NO];
      

تحجيم الخريطة

تم تصميم خريطة Google لملء المنطقة بأكملها التي تحدّدها GMSMapView. يتم تحديد العديد من جوانب كيفية ظهور الخريطة وسلوكها من خلال سمات طريقة العرض:

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

يمكنك إضافة مسافة حول حواف الخريطة باستخدام الرمز GMSMapView.خاصية padding. تستمر الخريطة في ملء الحاوية بأكملها، ولكنّ موضع النص وعناصر التحكّم وإيماءات الخريطة وحركات الكاميرا تتصرف كما لو تم وضعها في مساحة أصغر. يؤدّي ذلك إلى إجراء التغييرات التالية:

  • إنّ حركات الكاميرا باستخدام طلبات البيانات من واجهة برمجة التطبيقات أو الضغط على الأزرار (مثل البوصلة و"موقعي الجغرافي") تكون نسبية إلى المنطقة المخصّصة للعرض.
  • تعرِض GMSMapView.projection إسقاطًا يتضمّن المنطقة التي تمّت تعبئتها فقط.
  • يتمّ إزاحة عناصر التحكّم في واجهة المستخدم عن حافة الحاوية بعددٍ محدّد من النقاط.

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

تحجيم الخريطة

لإضافة مسافة بادئة إلى خريطتك، أنشئ عنصرًا من النوع UIEdgeInsets وأرسِله إلى العنصر GMSMapView.padding.

Swift

// Insets are specified in this order: top, left, bottom, right
let mapInsets = UIEdgeInsets(top: 100.0, left: 0.0, bottom: 0.0, right: 300.0)
mapView.padding = mapInsets
      

Objective-C

// Insets are specified in this order: top, left, bottom, right
UIEdgeInsets mapInsets = UIEdgeInsetsMake(100.0, 0.0, 0.0, 300.0);
mapView.padding = mapInsets;
      

الألوان على الخريطة

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

استخدِم GMSMapView overrideUserInterfaceStyle: لضبط مخطط ألوان الخريطة وتعديله.

Swift

let options = GMSMapViewOptions()
// Map is init to use light mode by default.
let mapView = GMSMapView(options: options)
// Set map to use dark mode.
mapView.overrideUserInterfaceStyle = .dark
// Set map to use light mode.
mapView.overrideUserInterfaceStyle = .light
// Set map to use dark/light mode based on the value of traitCollection.userInterfaceStyle
mapView.overrideUserInterfaceStyle = .unspecified

Objective-C

GMSMapViewOptions *options = [[GMSMapViewOptions alloc] init];
// Map is init to always use light mode.
GMSMapView *mapView = [[GMSMapView alloc] initWithOptions:options];
// Set map to use dark mode.
mapView.overrideUserInterfaceStyle = UIUserInterfaceStyleDark;
// Set map to use light mode.
mapView.overrideUserInterfaceStyle = UIUserInterfaceStyleLight;
// Set map to use dark/light mode based on the value of traitCollection.userInterfaceStyle
mapView.overrideUserInterfaceStyle = UIUserInterfaceStyleUnspecified;