تتيح لك نافذة المعلومات عرض المعلومات للمستخدم عند النقر على أداة التحديد.
تظهر نافذة المعلومات بشكل موجَّه على شاشة الجهاز، وهي في وسط الشاشة لعلامة محدّدة. وتحتوي نافذة المعلومات التلقائية على العنوان بالخط الغامق مع نص المقتطف أسفل العنوان.
يتم تحديد محتوى نافذة المعلومات من خلال السمتَين 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:MarkInfoWindow:. يتم استدعاء أداة معالجة الحدث هذه عندما توشك علامة
على الاختيار، وتسمح لك بعرض مثيل من فئة UIView
المخصّصة
لتحديد نافذة المعلومات المخصّصة التي تستخدمها العلامة.
تعرض الصور أدناه نافذة معلومات تلقائية ونافذة معلومات تتضمن محتوى مخصّصًا ونافذة معلومات ذات إطار وخلفية مخصّصَين.

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