توضح هذه الصفحة كيفية التحكم في سلوك التصادم لإحدى العلامات.
تعيين سلوك التصادم لعلامة
يتحكم سلوك التصادم في كيفية عرض العلامة في حالة اصطدامها (تداخلها) بعلامة أخرى. تحدد طريقة إنشاء علامات متقدمة كيفية عمل سلوك التصادم:
يُشار إلى العلامات المتقدمة التي يتم إنشاؤها باستخدام
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
، يُرجى الاطّلاع على Marker z-index.إذا تداخلت علامتا view، سيتم عرض العلامة التي تحمل علامة
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 = AdvancedMarkerOptions.CollisionBehavior.REQUIRED_AND_HIDES_OPTIONAL val advancedMarkerOptions: AdvancedMarkerOptions = AdvancedMarkerOptions() .position(latLng) .collisionBehavior(collisionBehavior)
val marker: Marker = map.addMarker(advancedMarkerOptions)
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(latLng) .collisionBehavior(collisionBehavior);
Marker marker = map.addMarker(options);