سلوك التصادم

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