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