سلوك التصادم

اختَر النظام الأساسي: 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، فإن آخر علامة تم إنشاؤها تتداخل مع أي علامات تم إنشاؤها قبلها.

    • نظرًا لأن علامات view يتم رسمها على طبقة أعلى علامات الصورة النقطية، تتداخل علامات 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);