سلوك التصادم

اختيار النظام الأساسي: 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، يُرجى الاطّلاع على Marker z-index.

    • إذا تداخلت علامتا view، سيتم عرض العلامة التي تحمل علامة zIndex الأعلى. إذا كانت العلامتان تتضمّنان القيمة نفسها zIndex، تتراكب العلامة التي تم إنشاؤها أخيرًا مع أي علامات تم إنشاؤها قبلها.

    • نظرًا لأن علامات 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 = 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);