تتيح لك نافذة المعلومات عرض معلومات للمستخدم عندما ينقر على علامة.
يتم رسم نافذة معلومات موجهة نحو شاشة الجهاز، في المنتصف فوق العلامة المرتبطة بها. تحتوي نافذة المعلومات الافتراضية على العنوان بالخط العريض، مع نص المقتطف أسفل العنوان.
يتم تحديد محتويات نافذة المعلومات من خلال السمتَين 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;
التعامل مع الأحداث في نوافذ المعلومات
يمكنك الاستماع إلى أحداث نافذة المعلومات التالية:
mapView:markerInfoWindow:
— يتم الاتصال عندما تكون العلامة على وشك التحديد. يمكن، إن أردت، عرض نافذة معلومات مخصّصة، على شكلUIView
، لاستخدامها مع العلامة. راجع نوافذ المعلومات المخصصة أدناه لمزيد من المعلومات.mapView:markerInfoContents:
— يتم الاتصال عند عودةmapView:markerInfoWindow
إلى الصفر.mapView:didCloseInfoWindowOfMarker:
— يتم الاتصال عند إغلاق نافذة معلومات العلامة.mapView:didLongPressInfoWindowOfMarker:
— يتم الاتصال بعد الضغط على نافذة معلومات محدِّد الموقع لفترة طويلة.
للاستماع إلى الأحداث، يجب تنفيذ بروتوكول
GMSMapViewDelegate
. يمكنك الاطّلاع على
دليل الأحداث وقائمة الطرق المتاحة على
GMSMapViewDelegate
.
يتضمن GitHub نماذج توضح كيفية التعامل مع أحداث نافذة المعلومات:
نوافذ المعلومات المخصصة
يمكنك تخصيص محتوى نوافذ المعلومات من خلال إنشاء فئة فرعية من
UIView
تحدّد تنسيق نافذة المعلومات المخصّصة. في تلك الفئة الفرعية، حدد طريقة العرض التي تريدها. على سبيل المثال، يمكنك استخدام مثيلات
UILabel
المخصصة لعرض نص العنوان والمقتطف وطرق العرض الأخرى، مثل
UIImageView
المثيلات، لإضافة صور معروضة في نافذة المعلومات.
تأكَّد من أن ViewController
ينفِّذ بروتوكول
GMSIndoorDisplayDelegate
ويحدِّد أداة معالجة الحدث
mapView:markerInfoWindow:. يتم استدعاء أداة معالجة الحدث هذه عندما تكون علامة على وشك التحديد، وتسمح لك بإظهار مثيل من فئة UIView
المخصصة لتحديد نافذة المعلومات المخصصة التي تستخدمها العلامة.
تعرض الصور أدناه نافذة معلومات افتراضية ونافذة معلومات تتضمن محتوى مخصصًا ونافذة معلومات بها إطار مخصص وخلفية مخصصة.

تشمل نماذج الرموز على GitHub المتوفرة في حزمة تطوير البرامج (SDK) للخرائط لنظام التشغيل iOS نماذج لنوافذ المعلومات المخصّصة. على سبيل المثال، يمكنك الاطّلاع على تعريف MarkerInfoWindowViewController.m (Goal-C) أو MarkerInfoWindowViewController.swift (Swift).
راجع عيّنات التعليمات البرمجية للحصول على معلومات حول تنزيل هذه النماذج وتشغيلها.