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

تنظيم صفحاتك في مجموعات يمكنك حفظ المحتوى وتصنيفه حسب إعداداتك المفضّلة.
اختَر النظام الأساسي: 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:finderInfoWindow:. يتم استدعاء أداة معالجة الحدث هذه عندما تكون العلامة على وشك الاختيار، وتسمح لك بعرض مثيل لصف UIView المخصّص لتحديد نافذة المعلومات المخصصة التي تستخدمها العلامة.

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

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

تتضمن نماذج الرموز المتوفرة في GitHub المتوفرة في حزمة تطوير البرامج (SDK) للخرائط لنظام التشغيل iOS نماذج من نوافذ المعلومات المخصصة. على سبيل المثال، راجِع تعريف MarkerInfoWindowViewController.m (Purpose-C) أو MarkerInfoWindowViewController.swift (Swift).

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