تتيح لك نافذة المعلومات عرض المعلومات للمستخدم عند نقره على محدد.
يتم رسم نافذة معلومات موجَّهة فوق شاشة الجهاز في وسط الشاشة والعلامة المرتبطة به. تحتوي نافذة المعلومات الافتراضية على العنوان بالخط العريض، مع نص المقتطف أسفل العنوان.
يحدّد 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 (سريع)
يمكنك الاطّلاع على نماذج التعليمات البرمجية للحصول على معلومات حول التنزيل والتشغيل. هذه العينات.