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

Flutter谷歌地图自定义标记内添加数字的代码修改方法咨询

解决方案

你当前使用的CustomMarkerIcon.fromIcon()方法仅支持生成纯图标样式的标记,要实现带数字的自定义标记,改用该库提供的CustomMarkerIcon.fromWidget()方法即可,该方法可以将任意Flutter Widget直接转换为谷歌地图可用的标记图标,修改方案如下:

修改_addMarkers方法逻辑

将原来生成纯蓝色圆形图标的逻辑替换为自定义带数字的圆形Widget,完整修改后的代码如下:

import 'package:flutter/material.dart';
import 'package:google_maps_flutter/google_maps_flutter.dart';
import 'package:custom_marker_icon/custom_marker_icon.dart';

class FlutterAnimarkerExample extends StatefulWidget {
  @override
  _FlutterAnimarkerExampleState createState() => _FlutterAnimarkerExampleState();
}

class _FlutterAnimarkerExampleState extends State<FlutterAnimarkerExample> {
  final LatLng _latLng = LatLng(28.7041, 77.1025);
  final double _zoom = 15.0;
  Set<Marker> _markers = {};

  void _addMarkers() async {
    // 自定义带数字的圆形标记Widget
    Widget customMarkerWidget = Container(
      width: 100,
      height: 100,
      decoration: BoxDecoration(
        color: Colors.blue,
        shape: BoxShape.circle,
        // 可选配置:添加白色边框增强辨识度
        border: Border.all(color: Colors.white, width: 2),
      ),
      child: const Center(
        child: Text(
          "5", // 此处可替换为动态业务数字变量
          style: TextStyle(
            color: Colors.white,
            fontSize: 32,
            fontWeight: FontWeight.bold,
          ),
        ),
      ),
    );

    // 将Widget转换为谷歌地图可用的BitmapDescriptor
    BitmapDescriptor markerIcon = await CustomMarkerIcon.fromWidget(
      customMarkerWidget,
      context: context,
    );

    setState(() {
      _markers.add(
        Marker(
          markerId: const MarkerId("marker_id"),
          position: _latLng,
          icon: markerIcon,
        ),
      );
    });
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: const Text('Custom Marker Icon Example'),
        backgroundColor: Colors.red,
      ),
      body: GoogleMap(
        onMapCreated: (GoogleMapController controller) {
          _addMarkers();
        },
        markers: _markers,
        initialCameraPosition: CameraPosition(
          target: _latLng,
          zoom: _zoom,
        ),
      ),
    );
  }
}

可自定义调整项

  • 修改Container的width/height参数可以调整标记整体尺寸
  • 修改Text组件的字符串内容即可替换展示的数字,支持动态绑定业务变量
  • 调整BoxDecoration的颜色、阴影、圆角参数可以自定义标记外观
  • 修改Text的style参数可以调整数字的大小、颜色、粗细效果

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 10:54:02