В этой статье рассказывается, как настроить поведение маркера при наложении.
Как настроить поведение маркера при наложении
Настройки поведения при наложении определяют, как маркер будет отображаться в случае совпадения с другим. Поведение при наложении зависит от способа создания расширенных маркеров:
Расширенные маркеры, созданные с помощью
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
отображается маркер, созданный последним.Маркеры вида накладываются на маркеры битовой карты, поскольку отображаются на более высоком слое. Именно поэтому, чтобы лучше контролировать наложение, используйте маркеры одного типа.
В примере ниже показано, как настроить поведение маркера при наложении.
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 = AdvancedMarkerOptions.CollisionBehavior.REQUIRED_AND_HIDES_OPTIONAL val advancedMarkerOptions: AdvancedMarkerOptions = AdvancedMarkerOptions() .position(latLng) .collisionBehavior(collisionBehavior)
val marker: Marker = map.addMarker(advancedMarkerOptions)
Java
// 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(latLng) .collisionBehavior(collisionBehavior);
Marker marker = map.addMarker(options);