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

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

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

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

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

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