سلوك التصادم

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

      

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(new LatLng(10.0, 10.0))
        .collisionBehavior(collisionBehavior);

Marker marker = map.addMarker(options);