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

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

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