You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Compose版Google Maps中修改AdvancedMarker图标?

修改Android Maps Compose中AdvancedMarker的自定义图标

谷歌官方推荐在Android Maps Compose中使用AdvancedMarker组件添加地图标记,但官方文档未说明如何替换为drawable文件夹中的自定义图标,以下是具体实现步骤:

  • 确保目标图标已放入项目的drawable资源目录(例如命名为ic_custom_marker.png)
  • 通过BitmapDescriptorFactory.fromResource()将Drawable资源转换为BitmapDescriptor对象,传递给AdvancedMarker的icon参数

完整代码示例:

import com.google.android.gms.maps.model.BitmapDescriptorFactory
import com.google.maps.android.compose.GoogleMap
import com.google.maps.android.compose.AdvancedMarker
import com.google.maps.android.compose.MarkerState
import com.google.android.gms.maps.model.LatLng

// ...

GoogleMap(
    googleMapOptionsFactory = {
        GoogleMapOptions().mapId("DEMO_MAP_ID")
    },
    // 其他配置参数
) {
    AdvancedMarker(
        state = MarkerState(position = LatLng(-34, 151)),
        title = "Marker in Sydney",
        icon = BitmapDescriptorFactory.fromResource(R.drawable.ic_custom_marker)
    )
    AdvancedMarker(
        state = MarkerState(position = LatLng(35.66, 139.6)),
        title = "Marker in Tokyo",
        icon = BitmapDescriptorFactory.fromResource(R.drawable.ic_custom_marker)
    )
}

如果需要对图标做缩放、tint等自定义处理,可以先将Drawable转为Bitmap再调整,示例如下:

import android.graphics.Bitmap
import android.graphics.Canvas
import android.graphics.drawable.BitmapDrawable
import android.graphics.drawable.Drawable
import com.google.android.gms.maps.model.BitmapDescriptor
import com.google.android.gms.maps.model.BitmapDescriptorFactory

fun getCustomMarkerIcon(drawable: Drawable, size: Int): BitmapDescriptor {
    val bitmap = Bitmap.createBitmap(size, size, Bitmap.Config.ARGB_8888)
    val canvas = Canvas(bitmap)
    drawable.setBounds(0, 0, canvas.width, canvas.height)
    drawable.draw(canvas)
    return BitmapDescriptorFactory.fromBitmap(bitmap)
}

// 使用时
AdvancedMarker(
    state = MarkerState(position = LatLng(-34, 151)),
    title = "Marker in Sydney",
    icon = getCustomMarkerIcon(resources.getDrawable(R.drawable.ic_custom_marker, null), 100)
)

内容的提问来源于stack exchange,提问作者NullPointerException

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.14 13:18:17