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

تنظيم صفحاتك في مجموعات يمكنك حفظ المحتوى وتصنيفه حسب إعداداتك المفضّلة.
اختيار نظام أساسي: 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 المتوفرة في حزمة تطوير البرامج (SDK) للخرائط لنظام التشغيل iOS نماذج لنوافذ المعلومات المخصّصة. على سبيل المثال، يمكنك الاطّلاع على تعريف MarkerInfoWindowViewController.m (Goal-C) أو MarkerInfoWindowViewController.swift (Swift).

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