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

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

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

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

  • mapView:markerInfoWindow: — يتم استدعاء هذه العلامة عندما تكون العلامة على وشك أن يتم اختيارها. يمكنك اختياريًا عرض نافذة معلومات مخصّصة، مثل UIView، لاستخدامها مع محدّد الموقع. راجِع نوافذ المعلومات المخصّصة أدناه للاطّلاع على مزيد من المعلومات.

  • mapView:markerInfoContents: — يتم استدعاء هذه الدالة عندما تعرض القيمة mapView:markerInfoWindow صفرًا.

  • mapView:didCloseInfoWindowOfMarker: — يتم استدعاء هذه الدالة عند إغلاق نافذة معلومات محدّد الموقع.

  • mapView:didLongPressInfoWindowOfMarker: - يتم استدعاء هذا الإجراء بعد الضغط لفترة طويلة على نافذة معلومات العلامة.

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

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

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

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

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

تعرض الصور أدناه نافذة معلومات افتراضية ونافذة معلومات ذات محتويات مخصصة ونافذة معلومات بإطار وخلفية مخصصين.

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

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

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