سلوك التصادم

اختيار النظام الأساسي: Android iOS JavaScript

توضّح لك هذه الصفحة كيفية التحكّم في سلوك الاصطدام لعلامة.

ضبط سلوك الاصطدام لعلامة

يتحكم سلوك التصادم في كيفية عرض العلامة في حالة تصادم (تداخل) بعلامة أخرى. تُحدِّد طريقة إنشاء العلامات المتقدّمة طريقة عمل سلوك الاصطدام:

  • محددات متقدمة تم إنشاؤها باستخدام 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);