googlemaps / android-maps-compose

Jetpack Compose composables for the Maps SDK for Android
https://developers.google.com/maps/documentation/android-sdk/maps-compose
Apache License 2.0
1.16k stars 142 forks source link

fix: improve MarkerState API #515

Closed bubenheimer closed 5 months ago

bubenheimer commented 10 months ago

This is a non-breaking change following suggestions from @arriolac for addressing #149: https://github.com/googlemaps/android-maps-compose/pull/150#discussion_r1016963262

This PR does not add an onDrag callback parameter to Marker(), which would be a somewhat breaking change; this functionality is not strictly necessary and I see alternatives that may be preferable.

Summary of changes:

  1. Deprecate MarkerState.dragState and DragState enum. These were carried over from GoogleMap SDK; they are events that were mischaracterized as states.
  2. Replace with MarkerState.isDragging boolean.
  3. Clarify KDoc in several places.
  4. Add several examples providing patterns for common use cases.
  5. Organize Marker-related examples into their own folder.

Fixes #149

bubenheimer commented 10 months ago

To be clear: replacing MarkerState.dragState (START/DRAG/END) with MarkerState.isDragging does not lose information, because the information was not valid in the first place, due to the State vs. Event mismatch in dragState.

The MarkerDragEventsActivity example doubles as a proof of concept demonstrating how to recreate DragState events from MarkerState.isDragging plus MarkerState.position. It is equally lossy about DragState events as MarkerState.dragState, short of relying on data race details.

bubenheimer commented 9 months ago

@wangela can I get a review for this PR, please? I'd really like to use these improvements. Thanks.

googlemaps-bot commented 5 months ago

:tada: This PR is included in version 5.0.3 :tada:

The release is available on:

Your semantic-release bot :package::rocket: