این صفحه به شما نشان میدهد که چگونه رفتار برخورد یک نشانگر را کنترل کنید.
تنظیم رفتار برخورد برای یک نشانگر
رفتار برخورد، نحوه نمایش یک نشانگر را در صورت برخورد (همپوشانی) با نشانگر دیگر کنترل میکند. نحوه ایجاد نشانگرهای پیشرفته، نحوه عملکرد رفتار برخورد را تعیین میکند:
نشانگرهای پیشرفتهای که با استفاده از
BitmapDescriptorFactoryایجاد میشوند، نشانگرهای بیتمپ نامیده میشوند. این نشانگرها توسط نقشه اصلی ترسیم میشوند.All other advanced markers, including those created by using the
AdvancedMarkerOptions.iconView()method, are referred to as view markers and are drawn on a layer above the core map.
برای تنظیم رفتار برخورد، 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 مراجعه کنید.If two view markers overlap, the one with the higher
zIndexis shown. If they have the samezIndex, the last created marker overlaps any markers created before it.از آنجا که نشانگرهای نما روی لایهای بالاتر از نشانگرهای بیتمپ رسم میشوند، نشانگرهای نما روی نشانگرهای بیتمپ همپوشانی دارند. بنابراین، برای کنترل بهتر برخورد، باید سعی کنید از نشانگرهایی از یک نوع استفاده کنید.
مثال زیر تنظیم رفتار برخورد برای یک نشانگر را نشان میدهد:
کاتلین
// 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);