رفتار برخورد

پلتفرم مورد نظر را انتخاب کنید: اندروید، iOS، جاوا اسکریپت

این صفحه به شما نشان می‌دهد که چگونه رفتار برخورد یک نشانگر را کنترل کنید.

تنظیم رفتار برخورد برای یک نشانگر

رفتار برخورد، نحوه نمایش یک نشانگر را در صورت برخورد (همپوشانی) با نشانگر دیگر کنترل می‌کند. نحوه ایجاد نشانگرهای پیشرفته، نحوه عملکرد رفتار برخورد را تعیین می‌کند:

  • نشانگرهای پیشرفته‌ای که با استفاده از BitmapDescriptorFactory ایجاد می‌شوند، نشانگرهای بیت‌مپ نامیده می‌شوند. این نشانگرها توسط نقشه اصلی ترسیم می‌شوند.

  • تمام نشانگرهای پیشرفته دیگر، از جمله آنهایی که با استفاده از متد AdvancedMarkerOptions.iconView() ایجاد شده‌اند، به عنوان نشانگرهای نما (view markers) شناخته می‌شوند و روی لایه‌ای بالاتر از نقشه اصلی ترسیم می‌شوند.

برای تنظیم رفتار برخورد، 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 مراجعه کنید.

    • اگر دو نشانگر نما با هم همپوشانی داشته باشند، نشانگری که zIndex بالاتری دارد نمایش داده می‌شود. اگر zIndex آنها یکسان باشد، آخرین نشانگر ایجاد شده با هر نشانگر ایجاد شده قبل از خود همپوشانی دارد.

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

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

کاتلین

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