سلوك التصادم

اختيار النظام الأساسي: 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);