При повторном щелчке по нижнему элементу навигации кажется, что карта и связанные с ней маркеры уничтожаются и перезагружаются. Это приводит к потере маркеров на карте. Я попытался решить эту проблему, используя RememberMarkerPosition и RememberCameraPosition, чтобы сохранить состояние маркеров и положение камеры, но, к сожалению, этот подход не решил проблему.
Я подозреваю, что в Jetpack Compose или библиотеке карт могут быть некоторые базовые сложности управления жизненным циклом или состоянием, которые я не до конца понимаю.
Кто-нибудь еще сталкивался с подобной проблемой при работе с Jetpack Составление и карты, где маркеры удаляются при повторном нажатии на нижний элемент навигации? Если да, то какие стратегии или методы вы использовали, чтобы гарантировать сохранение маркеров даже после таких взаимодействий с пользовательским интерфейсом? Я был бы очень признателен за любую информацию, примеры кода или рекомендации, которые помогут мне решить эту проблему.
Вот упрощенная версия кода, который я использую для справки:
Код: Выделить всё
@Composable
fun LocationMap(latLng: LatLng) {
val mapProperties by remember {
mutableStateOf(
MapProperties(maxZoomPreference = 30f, minZoomPreference = 5f)
)
}
val mapUiSettings by remember {
mutableStateOf(
MapUiSettings(mapToolbarEnabled = false)
)
}
GoogleMap(properties = mapProperties, uiSettings = mapUiSettings, cameraPositionState = rememberCameraPositionState {
position = CameraPosition.fromLatLngZoom(
com.google.android.gms.maps.model.LatLng(
latLng.latitude,
latLng.longitude
), 15f
)
}) {
Marker(
state = MarkerState(
position = com.google.android.gms.maps.model.LatLng(
latLng.latitude,
latLng.longitude
)
),
title = "Title"
)
}
}
В моей функции щелчка по элементу навигации существует saveState, как показано ниже:
Код: Выделить всё
onClick = {navController.navigate(item.screen_route) {
navController.graph.startDestinationRoute?.let { screen_route ->
popUpTo(screen_route) {
saveState = true
}
}
launchSingleTop = true
restoreState = true
}
}
Подробнее здесь: https://stackoverflow.com/questions/768 ... m-re-click