PointerPinButton

@Composable
fun PointerPinButton(    cameraState: CameraState,     targetPosition: Position,     modifier: Modifier = Modifier,     onClick: () -> Unit = {},     enabled: Boolean = true,     colors: ButtonColors = ButtonDefaults.elevatedButtonColors(),     elevation: ButtonElevation? = ButtonDefaults.elevatedButtonElevation(),     border: BorderStroke? = null,     contentPadding: PaddingValues = PaddingValues(12.dp),     interactionSource: MutableInteractionSource? = null,     content: @Composable BoxScope.() -> Unit)(source)

An elevated button in the shape of a pointer pin on the edge of an ellipsis drawn inside the parent layout, pointing towards some targetPosition off-screen. Only shown if the targetPosition is outside of the ellipsis.

Note that this composable should fill the whole area in which the pointer pin button will be placed, i.e. usually the whole map screen.

Parameters

onClick

called when this button is clicked

cameraState

used to calculate where the given targetPosition is in screen coordinates

targetPosition

position (off-screen) the pin should point at

modifier

the Modifier to be applied to this button

enabled

controls the enabled state of this button. When false, this component will not respond to user input, and it will appear visually disabled and disabled to accessibility services.

colors

ButtonColors that will be used to resolve the colors for this button in different states. See ButtonDefaults.elevatedButtonColors.

elevation

ButtonElevation used to resolve the elevation for this button in different states. This controls the size of the shadow below the button. Additionally, when the container color is ColorScheme.surface, this controls the amount of primary color applied as an overlay. See ButtonDefaults.elevatedButtonElevation.

border

the border to draw around the container of this button

contentPadding

the spacing values to apply internally between the container and the content

interactionSource

an optional hoisted MutableInteractionSource for observing and emitting Interactions for this button. You can use this to change the button's appearance or preview the button in different states. Note that if null is provided, interactions will still happen internally.