Control collision behavior

  • Collision behavior dictates how markers are displayed when they overlap on the map.

  • You can configure a marker's collision behavior using the GMSAdvancedMarker.collisionBehavior property with three options: GMSCollisionBehaviorRequired, GMSCollisionBehaviorOptionalAndHidesLowerPriority, and GMSCollisionBehaviorRequiredAndHidesOptional.

  • GMSCollisionBehaviorRequired is the default, always displaying the marker regardless of overlap.

  • GMSCollisionBehaviorOptionalAndHidesLowerPriority displays the marker only if it doesn't overlap with others, prioritizing higher zIndex and lower screen position in case of conflicts.

  • GMSCollisionBehaviorRequiredAndHidesOptional always displays the marker and hides any with GMSCollisionBehaviorOptionalAndHidesLowerPriority behavior.

Select platform: Android iOS JavaScript

Collision behavior controls how a marker displays if it collides (overlaps) with another marker.

Set the collision behavior for a marker

To set collision behavior, set GMSAdvancedMarker.collisionBehavior to one of the following:

  • GMSCollisionBehaviorRequired (Default): Always display the marker regardless of collision. This is the default behavior. Has no impact on whether any other markers or basemap labels show.

  • GMSCollisionBehaviorOptionalAndHidesLowerPriority: Display the marker only if it does not overlap with other markers. If two markers of this type would overlap, the one with the higher zIndex is shown. If they have the same zIndex, the one with the lower vertical screen position is shown.

  • GMSCollisionBehaviorRequiredAndHidesOptional: Always display the marker regardless of collision, and hide any GMSCollisionBehaviorOptionalAndHidesLowerPriority. Display the marker only if it does not overlap with other markers. Does not GMSCollisionBehaviorRequired. If two markers of this type would overlap, the one with the higher zIndex is shown. Collision rules for markers with the same zIndex are undefined.

Swift

// Defines a marker to always display and hide any marker or label overlay with this marker in the base map
marker.collisionBehavior = .requiredAndHidesOptional

Objective-C

// Defines a marker to always display and hide any marker or label overlay with this marker in the base map
marker.collisionBehavior = GMSCollisionBehaviorRequiredAndHidesOptional