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