نوافذ المعلومات

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

نافذة معلومات تظهر فوق علامة

تتيح لك نافذة المعلومات عرض معلومات للمستخدم عندما ينقر على علامة.

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

يتم تحديد محتوى نافذة المعلومات من خلال السمتَين title وsnippet الخاصة بالعلامة. لا يؤدي النقر على العلامة إلى عرض نافذة معلومات إذا كانت كل من السمتَين title وsnippet فارغة أو nil.

لا يتم عرض سوى نافذة معلومات واحدة في كل مرة. إذا نقر المستخدم على علامة أخرى، سيتم إخفاء النافذة الحالية وفتح نافذة المعلومات الجديدة. إذا نقر المستخدم على علامة تعرض حاليًا نافذة معلومات، سيتم إغلاق نافذة المعلومات هذه وإعادة فتحها.

أنشئ نافذة معلومات مخصّصة لإضافة نصوص أو صور إضافية. تمنحك نافذة المعلومات المخصّصة إمكانية التحكّم الكامل في مظهر النافذة المنبثقة.

إضافة نافذة معلومات

تنشئ المقتطفة البرمجية التالية علامة بسيطة تتضمّن عنوانًا فقط لنص نافذة المعلومات.

Swift

let position = CLLocationCoordinate2D(latitude: 51.5, longitude: -0.127)
let london = GMSMarker(position: position)
london.title = "London"
london.map = mapView
      

Objective-C

CLLocationCoordinate2D position = CLLocationCoordinate2DMake(51.5, -0.127);
GMSMarker *london = [GMSMarker markerWithPosition:position];
london.title = @"London";
london.map = mapView;
      

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

Swift

london.title = "London"
london.snippet = "Population: 8,174,100"
london.map = mapView
      

Objective-C

london.title = @"London";
london.snippet = @"Population: 8,174,100";
london.map = mapView;
      

إظهار/إخفاء نافذة معلومات

تم تصميم نوافذ المعلومات للاستجابة لأحداث اللمس التي يجريها المستخدم على العلامة. يمكنك عرض نافذة معلومات أو إخفاؤها آليًا من خلال ضبط السمة selectedMarker الخاصة بالعنصر GMSMapView:

  • اضبط selectedMarker على اسم العلامة لإظهارها.
  • اضبط قيمة selectedMarker على nil لإخفائها.

Swift

london.title = "London"
london.snippet = "Population: 8,174,100"
london.map = mapView
// Show marker
mapView.selectedMarker = london
// Hide marker
mapView.selectedMarker = nil
      

Objective-C

london.title = @"London";
london.snippet = @"Population: 8,174,100";
london.map = mapView;
// Show marker
mapView.selectedMarker = london;
// Hide marker
mapView.selectedMarker = nil;
      

ضبط نافذة معلومات على التحديث تلقائيًا

اضبط tracksInfoWindowChanges على العلامة على YES أو true إذا كنت تريد عرض الخصائص الجديدة أو محتوى نافذة المعلومات فور تغييرهما، بدلاً من الانتظار إلى أن يتم إخفاء نافذة المعلومات ثم عرضها مرة أخرى. القيمة التلقائية هي NO أو false.

Swift

london.tracksInfoWindowChanges = true
      

Objective-C

london.tracksInfoWindowChanges = YES;
      

لتحديد الوقت المناسب لضبط السمة tracksInfoWindowChanges، عليك الموازنة بين اعتبارات الأداء ومزايا إعادة رسم نافذة المعلومات تلقائيًا. على سبيل المثال:

  • إذا كان لديك سلسلة من التغييرات التي تريد إجراؤها، يمكنك تغيير الموقع إلى YES ثم إعادته إلى NO.
  • عندما يكون هناك رسم متحرك قيد التشغيل أو يتم تحميل المحتوى بشكل غير متزامن، يجب إبقاء السمة مضبوطة على YES إلى أن تكتمل الإجراءات.

يُرجى الرجوع أيضًا إلى الملاحظات التي يجب أخذها في الاعتبار عند استخدام السمة iconView الخاصة بالعلامة.

تغيير موضع نافذة المعلومات

يتم رسم نافذة المعلومات بشكل عمودي على شاشة الجهاز، مع توسيطها فوق العلامة المرتبطة بها. يمكنك تغيير موضع نافذة المعلومات بالنسبة إلى العلامة من خلال ضبط السمة infoWindowAnchor. تقبل هذه السمة قيمة CGPoint، ويتم تعريفها على أنّها إزاحة (x,y) يتراوح فيها كل من x وy بين 0.0 و1.0. الإزاحة التلقائية هي (0.5, 0.0)، أي أعلى المنتصف. يُعدّ ضبط infoWindowAnchor الإزاحة مفيدًا لمحاذاة نافذة المعلومات مع رمز مخصّص.

Swift

london.infoWindowAnchor = CGPoint(x: 0.5, y: 0.5)
london.icon = UIImage(named: "house")
london.map = mapView
      

Objective-C

london.infoWindowAnchor = CGPointMake(0.5, 0.5);
london.icon = [UIImage imageNamed:@"house"];
london.map = mapView;
      

التعامل مع الأحداث في نوافذ المعلومات

يمكنك الاستماع إلى أحداث نافذة المعلومات التالية:

للاستماع إلى الأحداث، يجب تنفيذ البروتوكول GMSMapViewDelegate. اطّلِع على دليل الأحداث وقائمة الطرق في GMSMapViewDelegate.

يتضمّن GitHub نماذج توضّح كيفية التعامل مع أحداث نافذة المعلومات:

نوافذ المعلومات المخصّصة

خصِّص محتوى نوافذ المعلومات من خلال إنشاء فئة فرعية من UIView تحدّد تصميم نافذة المعلومات المخصّصة. في هذه الفئة الفرعية، حدِّد طريقة عرض البيانات التي تريدها. على سبيل المثال، يمكنك استخدام مثيلات مخصّصة UILabel لعرض العنوان ونص المقتطف وطرق عرض أخرى، مثل مثيلات UIImageView لإضافة الصور المعروضة في نافذة المعلومات.

تأكَّد من أنّ ViewController تنفّذ البروتوكول GMSIndoorDisplayDelegate وتحدّد معالجًا للحدث mapView:markerInfoWindow:‎. يتم استدعاء أداة معالجة الحدث هذه عندما يكون على وشك أن يصبح العلامة محدّدة، وتتيح لك عرض مثيل لفئة UIView المخصّصة لتحديد نافذة المعلومات المخصّصة التي تستخدمها العلامة.

تعرض الصور أدناه نافذة معلومات تلقائية ونافذة معلومات ذات محتوى مخصّص ونافذة معلومات ذات إطار وخلفية مخصّصَين.

مقارنة نوافذ المعلومات

تتضمّن نماذج الرموز البرمجية المتوفّرة على GitHub والمقدَّمة مع حزمة تطوير البرامج بالاستناد إلى بيانات "خرائط Google" لأجهزة iOS نماذج لنوافذ معلومات مخصّصة. على سبيل المثال، اطّلِع على تعريف MarkerInfoWindowViewController.m (Objective-C) أو MarkerInfoWindowViewController.swift (Swift).

اطّلِع على أمثلة الرموز البرمجية للحصول على معلومات حول تنزيل هذه الأمثلة وتشغيلها.