将 ImageVector 从 Jetpack Compose 转换为 BitmapDescriptor

Posted

技术标签:

【中文标题】将 ImageVector 从 Jetpack Compose 转换为 BitmapDescriptor【英文标题】:Converting ImageVector from Jetpack Compose to BitmapDescriptor 【发布时间】:2021-08-12 09:04:25 【问题描述】:

我正在尝试将我拥有的 ImageVector 图标(例如,创建为 Icons.Default.Home)添加到 Google 地图中的标记。我目前拥有的是这样的:

val opt = MarkerOptions()
opt.position(LatLng(lat, lng))          // lat and lng are defined above
opt.title(title)                        // title as well
opt.icon(BitmapDescriptorFactory.?????) // and there the problem occurs.

我发现BitmapDescriptorFactory 可以通过传递资源或位图(分别为BitmapDescriptorFactory.fromResource(resourceId: Int)BitmapDescriptorFactory.fromBitmap(image: Bitmap))来创建请求的BitmapDescriptor

问题是我不知道如何将我从Icons.Default.Home 获得的 ImageVector 转换为上述任何一种。我在堆栈上发现了一些关于将可绘制矢量转换为位图的问题,但仍然没有一个涵盖转换 ImageVector 的问题。我还检查了 ImageVector 的实例是否有任何可能有用的方法,但它只能 - 如果我没记错的话 - 将其转换为字符串,这在我的情况下完全没用。

我们将不胜感激任何帮助

【问题讨论】:

【参考方案1】:

好吧,我想我用了一个(不是那么)肮脏的把戏。 我从 Google Material Icons 网站 (https://fonts.google.com/icons?selected=Material+Icons) 下载了我需要的图标并将它们导入到我的项目中。后来我在这里使用了@Leo Droidcoder 提供的一个sn-p:Custom marker in google maps in android with vector asset icon 来使用这些图标作为标记。

这样我的标记看起来就像我想要的图标,但我相信一定有更好的解决方案。

【讨论】:

以上是关于将 ImageVector 从 Jetpack Compose 转换为 BitmapDescriptor的主要内容,如果未能解决你的问题,请参考以下文章

Jetpack Compose 1.1 现已进入稳定版!

Jetpack Compose 从入门到入门

Jetpack Compose 从入门到入门

Jetpack Compose 从入门到入门

Jetpack Compose 从入门到入门

Jetpack Compose:将数据从惰性列传递到另一个可组合