سلوك التصادم

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

    • في حال تداخل علامتَي عرض، يتم عرض العلامة التي تتضمّن 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);