رفتار تصادم

پلاتفرم را انتخاب کنید: 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 یکسانی داشته باشند، آخرین نشانگر ایجادشده روی نشانگرهای ایجادشده قبل‌از آن قرار می‌گیرد.

    • چون نشانگرهای view روی لایه‌ای بالاتر از نشانگرهای bitmap ترسیم می‌شوند، نشانگرهای view با نشانگرهای bitmap هم‌پوشانی دارند. بنابراین، برای کنترل بهتر برخورد، باید سعی کنید از نشانگرهای یکسان استفاده کنید.

مثال زیر تنظیم رفتار تصادم را برای نشانگر نشان می‌دهد:

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