Как использовать карту Google на странице сведений о списке.Android

Форум для тех, кто программирует под Android
Ответить
Anonymous
 Как использовать карту Google на странице сведений о списке.

Сообщение Anonymous »

У меня есть список, и когда пользователь выбирает элемент списка, деталь представляет собой карту Google с некоторыми маркерами этого выбранного элемента.
Если я отображаю Это на портрете, все работает, но если я покажу его в ландшафте, список и детали видны одновременно, а затем работает правильно один раз. < /p>
, когда я выбираю для первого Время, когда отображается элемент, карта, и анимация для центра камеры работает отлично (у меня есть запускающий эффект , которая сосредотачивает его после загрузки маркеров). Но когда я выбираю другой элемент, карта не центрирует камеру, а старые маркеры не удаляются, вместо этого более новые нарисованы на карте, а камера не перемещается.
Как это решить?ListDetailPaneScaffold(
modifier = Modifier.fillMaxSize(),
directive = navigator.scaffoldDirective,
value = navigator.scaffoldValue,
listPane = {
AnimatedPane {
LinesList(
lines = uiState.lines,
onItemClick = { index ->
navigator.navigateTo(ListDetailPaneScaffoldRole.Detail, index)
},
)
}
},
detailPane = {
AnimatedPane {
navigator.currentDestination?.content?.let { index ->
vm.selectLine(uiState.lines[index])
MapPanel(mapState = uiState.mapState)
}
}
},
)
< /code>
Моя карта: < /p>
@Composable
fun MapPanel(
mapState: MapState,
modifier: Modifier = Modifier
) {
val showMarkers: Boolean by remember { derivedStateOf { cameraPositionState.position.zoom > minZoomForVisibleMarkers } } // default 15
val boundsBuilder = LatLngBounds.builder()

GoogleMap(
modifier = modifier.fillMaxSize(),
cameraPositionState = cameraPositionState
) {
val bitmapDescriptor: BitmapDescriptor by remember { mutableStateOf(BitmapDescriptorFactory.fromResource(R.drawable.place)) }
for (busStop in mapState.busStops) {
val markerState = rememberMarkerState(
position = LatLng(busStop.lat, busStop.lon)
)

Marker(
state = markerState,
icon = bitmapDescriptor,
visible = showMarkers,
onClick = {
selectBusStop(busStop)
false
}
)

boundsBuilder.include(markerState.position)
}

if (centerInMarkers && mapState.busStops.isNotEmpty()) {
LaunchedEffect(key1 = true ) {
cameraPositionState.animate(
update = CameraUpdateFactory.newLatLngBounds(bounds, 100)
)
}
}
}
}


Подробнее здесь: https://stackoverflow.com/questions/794 ... etail-page
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Android»