رفتار تصادم

پلاتفرم را انتخاب کنید: 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")

      

جاوا

// 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);