إعداد خريطة

اختَر النظام الأساسي: 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;
      

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

إضافة مخططات المباني

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

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

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

يمكنك منح المستخدمين القدرة على عرض الخريطة بمعلومات كثافة حركة المرور المتراكبة فوقها. يوفر هذا ملخصًا مرئيًا لوضع حركة المرور المحلية. يمكنك تفعيل طبقة حركة المرور وإيقافها من خلال استدعاء الطريقة 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;