سلوك التصادم

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

    • إذا تداخلت علامتا عرض، تكون العلامة ذات 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 = 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);