Я пытаюсь реализовать следующее, используя JetPack Compose: < /p>
Показать изображение о карте < /li>
Добавьте несколько маркеров поверх этой карты в определенные позиции < /li>
Когда пользователь увеличивает или подводит карту, маркеры должны придерживаться их исходных позиций относительно карты и сохранять свой исходный размер < /li>
< /ul>
У меня есть следующий код для этого: < /p>
@Composable
fun ZoomableImageWithMarkers(
imageUrl: String,
markers: List
>
) {
var scale by remember { mutableStateOf(1f) }
var offset by remember { mutableStateOf(Offset.Zero) }
Box(
modifier = Modifier
.fillMaxSize()
.pointerInput(Unit) {
detectTransformGestures { _, pan, zoom, _ ->
scale *= zoom
offset += pan
}
},
contentAlignment = Alignment.Center
) {
Image(
painter = rememberAsyncImagePainter(imageUrl),
contentDescription = null,
modifier = Modifier
.graphicsLayer(
scaleX = scale,
scaleY = scale,
translationX = offset.x,
translationY = offset.y
)
.fillMaxWidth()
)
markers.forEach { (normalizedX, normalizedY) ->
Image(
painter = painterResource(id = R.drawable.marker),
contentDescription = "Marker",
modifier = Modifier
.graphicsLayer(
// scaleX = scale, // If this is here, markers scale along with the image and stick to their place
// scaleY = scale,
translationX = offset.x,
translationY = offset.y
)
.offset(
x = (normalizedX * 100).dp,
y = (normalizedY * 100).dp
)
.size(24.dp)
)
}
}
}
< /code>
И я называю это так: < /p>
val exampleMarkers = listOf(
Pair(0.3f, 0.5f), // 30% X, 50% Y (relative to image size)
)
< /code>
Когда я позволяю масштабировать маркеры вместе с картой, она работает нормально, но когда я этого не сделаю, происходит следующая проблема:
Значит, маркер движется вверх (по сравнению с картой), когда я Увеличение, вниз, когда я увеличиваю масштаб. Насколько я вижу, он сохраняет свое положение относительно моих уменьшающихся пальцев, но мне нужно, чтобы он сохранил свою позицию относительно карты.
Подробнее здесь: https://stackoverflow.com/questions/794 ... id-compose
Увеличье изображение с изображениями маркеров с помощью Android Compose ⇐ Android
Форум для тех, кто программирует под Android
1739998782
Anonymous
Я пытаюсь реализовать следующее, используя JetPack Compose: < /p>
Показать изображение о карте < /li>
Добавьте несколько маркеров поверх этой карты в определенные позиции < /li>
Когда пользователь увеличивает или подводит карту, маркеры должны придерживаться их исходных позиций относительно карты и сохранять свой исходный размер < /li>
< /ul>
У меня есть следующий код для этого: < /p>
@Composable
fun ZoomableImageWithMarkers(
imageUrl: String,
markers: List
>
) {
var scale by remember { mutableStateOf(1f) }
var offset by remember { mutableStateOf(Offset.Zero) }
Box(
modifier = Modifier
.fillMaxSize()
.pointerInput(Unit) {
detectTransformGestures { _, pan, zoom, _ ->
scale *= zoom
offset += pan
}
},
contentAlignment = Alignment.Center
) {
Image(
painter = rememberAsyncImagePainter(imageUrl),
contentDescription = null,
modifier = Modifier
.graphicsLayer(
scaleX = scale,
scaleY = scale,
translationX = offset.x,
translationY = offset.y
)
.fillMaxWidth()
)
markers.forEach { (normalizedX, normalizedY) ->
Image(
painter = painterResource(id = R.drawable.marker),
contentDescription = "Marker",
modifier = Modifier
.graphicsLayer(
// scaleX = scale, // If this is here, markers scale along with the image and stick to their place
// scaleY = scale,
translationX = offset.x,
translationY = offset.y
)
.offset(
x = (normalizedX * 100).dp,
y = (normalizedY * 100).dp
)
.size(24.dp)
)
}
}
}
< /code>
И я называю это так: < /p>
val exampleMarkers = listOf(
Pair(0.3f, 0.5f), // 30% X, 50% Y (relative to image size)
)
< /code>
Когда я позволяю масштабировать маркеры вместе с картой, она работает нормально, но когда я этого не сделаю, происходит следующая проблема:
Значит, маркер движется вверх (по сравнению с картой), когда я Увеличение, вниз, когда я увеличиваю масштаб. Насколько я вижу, он сохраняет свое положение относительно моих уменьшающихся пальцев, но мне нужно, чтобы он сохранил свою позицию относительно карты.
Подробнее здесь: [url]https://stackoverflow.com/questions/79452767/zoomable-image-with-markers-images-on-it-using-android-compose[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия