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

Android开发中如何将Google Map当前位置蓝色图标替换为自定义图标

你现在调用map.isMyLocationEnabled = true启用的是地图SDK自带的默认定位图标,自定义图标可以按你使用的地图SDK类型对应操作:

谷歌地图 Android SDK 实现方案

谷歌地图自带的定位层不支持直接修改图标,需要自己实现自定义定位标记:

  • 先关闭自带定位层:将原有代码里的map.isMyLocationEnabled = true改为false
  • 接入FusedLocationProviderClient获取实时位置更新,不需要自己处理定位逻辑
  • 自定义位置Marker,每次拿到新位置后更新Marker坐标即可,参考代码:
// 存储当前位置的Marker实例,避免重复添加
private var currentLocationMarker: Marker? = null

// 生成自定义Marker配置
private fun buildCustomMarker(latLng: LatLng): MarkerOptions {
    return MarkerOptions()
        .position(latLng)
        // 替换成你自己的图标资源
        .icon(BitmapDescriptorFactory.fromResource(R.drawable.custom_location_icon))
        // 锚点设为0.5,0.5保证图标中心对准坐标点
        .anchor(0.5f, 0.5f)
}

// 位置更新时调用这个方法刷新地图上的定位图标
private fun refreshLocationMarker(latLng: LatLng) {
    currentLocationMarker?.remove()
    currentLocationMarker = map.addMarker(buildCustomMarker(latLng))
    // 需要自动居中到当前位置可以加上下面这行,缩放级别可自行调整
    // map.animateCamera(CameraUpdateFactory.newLatLngZoom(latLng, 16f))
}

高德/百度地图 Android SDK 实现方案

国内地图SDK自带的定位层支持直接修改样式,不需要自己实现位置监听:
以高德地图为例,只需在开启定位层前设置自定义样式即可:

val customLocationStyle = MyLocationStyle()
// 设置自定义定位图标
customLocationStyle.myLocationIcon(BitmapDescriptorFactory.fromResource(R.drawable.custom_location_icon))
// 不需要默认精度圈的话可以设为透明
customLocationStyle.strokeColor(Color.TRANSPARENT)
customLocationStyle.radiusFillColor(Color.TRANSPARENT)
// 把自定义样式设置给地图
map.myLocationStyle = customLocationStyle
// 再开启定位就会显示自定义图标
map.isMyLocationEnabled = true

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.23 14:24:02