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

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

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