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

Flutter中是否有可在Google Maps默认Marker内加图标的第三方Package?

Flutter中创建内嵌图标的Google Maps自定义Marker方案

是的,有多种方式可以实现你要的这种在默认Marker内部添加图标的效果,既可以基于官方包原生实现,也有第三方工具包简化流程:

1. 基于官方google_maps_flutter原生实现(无需额外包)

你可以通过将自定义Widget(组合默认Marker样式+内嵌图标)转换为BitmapDescriptor来实现:

  • 先创建一个包含默认Marker形状和内嵌图标的Widget,比如用Stack堆叠带三角形底部的圆形容器与目标图标;
  • 通过RepaintBoundary和图片编码工具将Widget转为字节数组;
  • 把字节数组转为BitmapDescriptor,赋值给Marker的icon属性。

示例代码片段:

// 生成自定义Marker的BitmapDescriptor
Future<BitmapDescriptor> createCustomMarker() async {
  final ui.PictureRecorder pictureRecorder = ui.PictureRecorder();
  final Canvas canvas = Canvas(pictureRecorder);
  
  // 绘制默认Marker的红色圆形主体
  Paint paint = Paint()..color = Colors.red;
  canvas.drawCircle(const Offset(25, 25), 25, paint);
  // 绘制底部三角形
  Path trianglePath = Path();
  trianglePath.moveTo(0, 50);
  trianglePath.lineTo(25, 70);
  trianglePath.lineTo(50, 50);
  trianglePath.close();
  canvas.drawPath(trianglePath, paint);
  
  // 绘制内嵌图标(以本地asset图标为例)
  final ByteData data = await rootBundle.load('assets/icons/your_icon.png');
  final ui.Codec codec = await ui.instantiateImageCodec(data.buffer.asUint8List());
  final ui.FrameInfo frameInfo = await codec.getNextFrame();
  final ui.Image image = frameInfo.image;
  canvas.drawImage(image, const Offset(15, 15), Paint());
  
  final ui.Picture picture = pictureRecorder.endRecording();
  final ui.Image img = await picture.toImage(50, 70);
  final ByteData? byteData = await img.toByteData(format: ui.ImageByteFormat.png);
  return BitmapDescriptor.fromBytes(byteData!.buffer.asUint8List());
}

// 使用自定义Marker
Marker(
  markerId: const MarkerId('custom_marker'),
  position: const LatLng(37.4219999, -122.0840575),
  icon: await createCustomMarker(),
)

2. 第三方包简化流程

如果不想手动编写画布绘制逻辑,可以用以下第三方包快速实现:

  • flutter_custom_marker:支持直接将Widget转为Marker图标,可轻松组合默认Marker样式与内嵌图标,省去手动编码的繁琐;
  • marker_generator:提供预设Marker模板,允许在模板内添加自定义图标、文字等内容,直接生成符合需求的Marker。

这类包的核心逻辑和原生实现一致,都是将自定义Widget转为BitmapDescriptor,但封装了重复代码,能提升开发效率。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.01 11:37:25