این صفحه به شما نشان میدهد که چگونه رفتار برخورد یک نشانگر را کنترل کنید.
تنظیم رفتار برخورد برای یک نشانگر
رفتار برخورد، نحوه نمایش یک نشانگر را در صورت برخورد (همپوشانی) با نشانگر دیگر کنترل میکند. نحوه ایجاد نشانگرهای پیشرفته، نحوه عملکرد رفتار برخورد را تعیین میکند:
نشانگرهای پیشرفتهای که با استفاده از
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);