Поведение при наложении

Выберите платформу: Android iOS JavaScript

В этой статье рассказывается, как настроить поведение маркера при наложении.

Как настроить поведение маркера при наложении

Настройки поведения при наложении определяют, как маркер будет отображаться в случае совпадения с другим. Поведение при наложении зависит от способа создания расширенных маркеров:

  • Расширенные маркеры, созданные с помощью 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);