توضّح لك هذه الصفحة كيفية التحكّم في سلوك الاصطدام لعلامة.
ضبط سلوك الاصطدام لعلامة
يتحكم سلوك التصادم في كيفية عرض العلامة في حالة تصادم (تداخل) بعلامة أخرى. تُحدِّد طريقة إنشاء العلامات المتقدّمة طريقة عمل سلوك الاصطدام:
محددات متقدمة تم إنشاؤها باستخدام
BitmapDescriptorFactory
يُشار إليها باسم علامات الصور النقطية. يتم رسم هذه العلامات بواسطة الخريطة الأساسية.جميع العلامات المتقدمة الأخرى، بما في ذلك العلامات التي تم إنشاؤها بواسطة باستخدام الطريقة
AdvancedMarkerOptions.iconView()
، يُشار إليها باسم view ويتم رسمها على طبقة أعلى الخريطة الأساسية.
لضبط سلوك التصادم، اضبط
AdvancedMarkerOptions.collisionBehavior
على أحد الخيارَين التاليَين:
CollisionBehavior.REQUIRED
: (تلقائي) عرض العلامة دائمًا بغض النظر عن من التصادم.CollisionBehavior.REQUIRED_AND_HIDES_OPTIONAL
عرض العلامة دائمًا بغض النظر عن حدوث تداخل، وإخفاء أيOPTIONAL_AND_HIDES_LOWER_PRIORITY
علامات أو تصنيفات قد تتداخل مع العلامةCollisionBehavior.OPTIONAL_AND_HIDES_LOWER_PRIORITY
عرض العلامة فقط إذا لم يتداخل مع علامات أخرى.إذا تداخلت علامتي صورة نقطية، فسيتم تحديد العلامة ذات
zIndex
الأعلى كما هو موضح. إذا كان الجهازانzIndex
نفسهما، سيكون النطاق الذي يتضمّن الشاشة العمودية السفلية موضع الإعلان. لمزيد من المعلومات عنzIndex
، يُرجى الاطّلاع على العلامة z-index.إذا تداخلت علامتا عرض، تكون العلامة ذات
zIndex
الأعلى كما هو موضح. في حال استخدامzIndex
نفسها، سيكون آخر محدّد موقع تم إنشاؤه مع أي علامات تم إنشاؤها قبله.نظرًا لأن علامات view مرسومة على طبقة أعلى علامات الصورة النقطية، تتداخل علامات عرض مع علامات الصور النقطية. لذلك، يجب محاولة استخدام علامات من النوع نفسه للتحكّم بشكل أفضل في التصادم.
يوضّح المثال التالي كيفية ضبط سلوك الاصطدام لعلامة:
Kotlin
// Collision behavior can only be changed in the AdvancedMarkerOptions object. // Changes to collision behavior after a marker has been created are not possible val collisionBehavior: Int = CollisionBehavior.REQUIRED_AND_HIDES_OPTIONAL val advancedMarkerOptions: AdvancedMarkerOptions = AdvancedMarkerOptions() .position(LatLng(10.0, 10.0)) .collisionBehavior(collisionBehavior) val marker: Marker = map.addMarker(advancedMarkerOptions) ?: error("Failed to add marker")
Java
// Collision behavior can only be changed in the AdvancedMarkerOptions object. // Changes to collision behavior after a marker has been created are not possible int collisionBehavior = AdvancedMarkerOptions.CollisionBehavior.REQUIRED_AND_HIDES_OPTIONAL; AdvancedMarkerOptions options = new AdvancedMarkerOptions() .position(new LatLng(10.0, 10.0)) .collisionBehavior(collisionBehavior); Marker marker = map.addMarker(options);