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

اختيار النظام الأساسي: نظام التشغيل 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، التي يتم تعريفها على أنّها إزاحة (س، ص)، حيث إنّ ص وص تتراوح بين 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;
      

التعامل مع الأحداث في نوافذ المعلومات

يمكنك الاستماع إلى الأحداث التالية عبر نافذة المعلومات:

  • mapView:markerInfoWindow: — يتم استدعاء هذا الإجراء عندما تكون العلامة على وشك أن يتم تحديدها. يمكن اختياريًا عرض نافذة معلومات مخصّصة، مثل UIView، لاستخدامها في محدد الموقع. راجِع نوافذ المعلومات المخصّصة أدناه للاطّلاع على مزيد من المعلومات.

  • mapView:markerInfoContents: — يتم استدعاء هذه الدالة عندما تعرض mapView:markerInfoWindow صفرًا.

  • mapView:didCloseInfoWindowOfMarker: — يتم استدعاء هذا الإجراء عند إغلاق نافذة معلومات محدّد الموقع.

  • mapView:didLongPressInfoWindowOfMarker: — يتم استدعاء هذا الإجراء بعد الضغط طويلاً على نافذة معلومات العلامة.

للاستماع إلى الأحداث، يجب تنفيذ GMSMapViewDelegate. يمكنك الاطّلاع على دليل الأحداث وقائمة الطرق الواردة في GMSMapViewDelegate

GitHub يتضمن نماذج توضح كيفية التعامل مع أحداث نافذة المعلومات:

نوافذ المعلومات المخصصة

تخصيص محتويات نوافذ المعلومات من خلال إنشاء فئة فرعية من UIView تحدّد تنسيق نافذة المعلومات المخصّصة. في تلك الفئة الفرعية، وتحدد طريقة العرض كيفما تريد. على سبيل المثال، يمكنك استخدام خيار التخصيص UILabel حالات عرض العنوان ونص المقتطف وطرق العرض الأخرى، مثل UIImageView الحالات، إضافة الصور المعروضة في نافذة المعلومات.

تأكَّد من أنّ ViewController ينفِّذ GMSIndoorDisplayDelegate ويحدد مستمعًا mapView:markerInfoWindow: فعالية. يتم استدعاء أداة معالجة الحدث هذه عندما تكون علامة على وشك أن تصبح محدد، ويسمح لك بعرض مثيل لفئة UIView المخصصة إلى تحديد نافذة المعلومات المخصصة التي تستخدمها العلامة.

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

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

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

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