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