سلوك التصادم

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

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

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

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

  • يُشار إلى العلامات المتقدّمة التي تم إنشاؤها باستخدام BitmapDescriptorFactory باسم علامات صورة نقطية. ويتم رسم هذه العلامات بواسطة الخريطة الأساسية.

  • يُشار إلى جميع العلامات المتقدّمة الأخرى، بما في ذلك تلك التي تم إنشاؤها باستخدام طريقة AdvancedMarkerOptions.iconView()، باسم علامات عرض ويتم رسمها على طبقة أعلى الخريطة الأساسية.

لضبط سلوك التداخل، اضبط AdvancedMarkerOptions.collisionBehavior على أحد الخيارات التالية:

  • CollisionBehavior.REQUIRED: (الإعداد التلقائي) عرض العلامة دائمًا بغض النظر عن التداخل.
  • CollisionBehavior.REQUIRED_AND_HIDES_OPTIONAL عرض العلامة دائمًا بغض النظر عن التداخل، وإخفاء أي علامات أو تصنيفات OPTIONAL_AND_HIDES_LOWER_PRIORITY تتراكب مع العلامة.
  • CollisionBehavior.OPTIONAL_AND_HIDES_LOWER_PRIORITY عرض العلامة فقط إذا لم تتراكب مع علامات أخرى.

    • إذا تراكبت علامتان صورة نقطية، يتم عرض العلامة التي تتضمّن zIndex أعلى. إذا كانتا تتضمّنان zIndex نفسه، يتم عرض العلامة التي تتضمّن موضع شاشة عموديًا أقل. لمزيد من المعلومات حول zIndex، يُرجى الاطّلاع على مقالة ترتيب العلامات حسب المحور z.

    • إذا تراكبت علامتان عرض، يتم عرض العلامة التي تتضمّن zIndex أعلى. إذا كانتا تتضمّنان zIndex نفسه، تتراكب العلامة التي تم إنشاؤها مؤخرًا مع أي علامات تم إنشاؤها قبلها.

    • بما أنّ علامات العرض يتم رسمها على طبقة أعلى علامات الصورة النقطية، فإنّ علامات العرض تتراكب مع علامات الصورة النقطية. لذلك، عليك محاولة استخدام علامات من النوع نفسه للتحكّم بشكل أفضل في التداخل.

يوضّح المثال التالي كيفية ضبط سلوك التداخل لعلامة:

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")

      

جافا

// 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);