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

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

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