Отображение LazyRow ElevatedCards внизу карты GoogleMap в Jetpack ComposeAndroid

Форум для тех, кто программирует под Android
Ответить Пред. темаСлед. тема
Anonymous
 Отображение LazyRow ElevatedCards внизу карты GoogleMap в Jetpack Compose

Сообщение Anonymous »

Я пытаюсь реализовать компоновку GoogleMap в Jetpack Compose. У меня есть карта, работающая с кнопкой для сброса камеры к местоположению пользователя и некоторыми ElevatedCards в LazyRow.
Я хочу, чтобы эти две (кнопка + повышенные карты) отображались как содержимое в GoogleMap, чтобы кнопки масштабирования GoogleMap автоматически возвращались в правильное положение на экране.
Код имеет следующий вид:
@Composable
fun GoogleMapView(
modifier: Modifier = Modifier,
context: Context,
location: LatLng,
bounds: LatLngBounds,
listOne: List,
listTwo: List,
onMapLoaded: () -> Unit = {},
content: @Composable () -> Unit = {}
) {
[...]

Box(
modifier = Modifier.fillMaxSize()
) {
Box(Modifier.fillMaxSize()) {
LaunchedEffect(key1 = true) {
cameraPositionState.move(
update = CameraUpdateFactory.newLatLngBounds(bounds, 100)
)
cameraPositionState.move(
update = CameraUpdateFactory.zoomOut()
)
}
GoogleMap(
modifier = modifier,
cameraPositionState = cameraPositionState,
properties = mapProperties,
uiSettings = uiSettings,
onMapLoaded = onMapLoaded
) {
/** Add custom marker that displays user location on the Map */
MarkerComposable(
state = locationState
) {
LocationMarker()
}

val markerClick: (Marker) -> Boolean = {
Log.d(TAG, "${it.title} was clicked")
cameraPositionState.projection?.let { projection ->
Log.d(TAG, "The current projection is: $projection")
}
false
}

markers.forEach { marker ->
AdvancedMarker(
state = marker,
onClick = markerClick,
collisionBehavior = 1
)
}

content()
}
}
}

/** Add go home button */
Column(
modifier = Modifier
.padding(bottom = 100.dp, end = 5.dp)
.fillMaxSize(),
verticalArrangement = Arrangement.Bottom,
horizontalAlignment = Alignment.End
) {
Button(
onClick = {
cameraPositionState.move(
update = CameraUpdateFactory.newLatLngBounds(bounds, 100)
)
cameraPositionState.move(
update = CameraUpdateFactory.zoomOut()
)
cameraPositionState.move(
update = CameraUpdateFactory.zoomOut()
)
cameraPositionState.move(
update = CameraUpdateFactory.zoomOut()
)
cameraPositionState.move(
update = CameraUpdateFactory.zoomOut()
)
}
) {
Box(
modifier = Modifier
.rotate(65f)
) {
Icon(
Icons.Rounded.PlayArrow,
contentDescription = null
)
}
}
}

/** Elevated cards */
ElevatedCards(
objects = objects,
onObjectClick = { }
)

где ElevatedCards можно составить просто:
@Composable
fun ElevatedCards(
modifier: Modifier = Modifier,
objects: List,
onObjectClick: () -> Unit
) {
LazyRow(
modifier = modifier.fillMaxWidth(),
contentPadding = PaddingValues(20.dp)
) {
items(objects) { object ->
if (object != null) {
MapsElevatedCard(
object = object,
onObjectClick = onObjectClick
)
}
}
}
}

и MapsElevatedCard отображает составную ElevatedCard.

Вопрос
Как перенести кнопку и карточки с повышенными правами в качестве контента в GoogleMaps? Прямо сейчас я накладываю поверх GoogleMap и использую отступы для перемещения по полям, содержащим составные элементы, но, как вы можете себе представить, это не масштабируется и не безопасно для устройств, поскольку разные устройства могут иметь разные размеры экрана.
Я хочу включить кнопки и подсказки с повышенными уровнями в элементы управления GoogleMap и позволить GoogleMap корректировать их расположение по мере необходимости.
Я приложил скриншот того, как это выглядит сейчас
Изображение

Я' Мне хотелось бы, чтобы повышенные карточки располагались внизу экрана с гарантированным заполнением.

Что я пробовал
Я пробовал использовать контент, а также напрямую вызывать компонуемые элементы внутри тела GoogleMap. Однако при попытке я получаю эту ошибку:
java.lang.ClassCastException: androidx.compose.ui.node.LayoutNode cannot be cast to com.google.maps.android.compose.MapNode


Подробнее здесь: https://stackoverflow.com/questions/785 ... tpack-comp
Реклама
Ответить Пред. темаСлед. тема

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

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

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

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

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Jetpack Compose GoogleMap: MarkerComposable выдает исключение
    Anonymous » » в форуме Android
    0 Ответы
    12 Просмотры
    Последнее сообщение Anonymous
  • Jetpack Compose GoogleMap: MarkerComposable выдает исключение
    Anonymous » » в форуме Android
    0 Ответы
    13 Просмотры
    Последнее сообщение Anonymous
  • Jetpack Compose GoogleMap: MarkerComposable выдает исключение
    Anonymous » » в форуме Android
    0 Ответы
    20 Просмотры
    Последнее сообщение Anonymous
  • Как панорамировать компонуемый GoogleMap внутри ModalBottomSheet в JetPack Compose
    Anonymous » » в форуме Android
    0 Ответы
    11 Просмотры
    Последнее сообщение Anonymous
  • Как панорамировать компонуемый GoogleMap внутри ModalBottomSheet в JetPack Compose
    Anonymous » » в форуме Android
    0 Ответы
    16 Просмотры
    Последнее сообщение Anonymous

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