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

google_maps_flutter在iOS端不显示缩放及路线按钮问题求助

问题原因

这是Google Maps SDK的平台原生差异导致的默认行为不一致,和基础配置无关:

  • zoomControlsEnabled参数仅对Android平台生效,iOS原生Google Maps SDK未提供内置缩放控制按钮,所以即使设为true也不会显示
  • 点击地图弹出的路线相关操作工具栏由toolbarEnabled参数控制,Android端默认开启,iOS端默认关闭,所以iOS点击POI/地图点位不会弹出对应按钮
解决方案

1. 开启iOS端路线工具栏

在GoogleMap构造参数中主动添加toolbarEnabled: true即可,修正后的地图创建代码如下:

GoogleMap createGoogleMap(
    double latitude, double longitude, Set<Marker> markers) {

  return GoogleMap(
    mapType: MapType.normal,
    initialCameraPosition: initialPos,
    zoomControlsEnabled: true, // 仅Android生效,保留不影响iOS
    toolbarEnabled: true, // 新增这一行,开启iOS端点击POI后的操作工具栏
    onMapCreated: (GoogleMapController controller) {
      _controller.complete(controller);
      _googleMapController = controller;
    },
    markers: markers.isEmpty ? <Marker>{} : markers,
  );
}

2. 自定义实现iOS端缩放控制按钮

iOS端没有内置缩放按钮,需要自己在地图层上叠加自定义缩放按钮实现功能,参考实现代码:

Stack(
  children: [
    createGoogleMap(latitude, longitude, markers),
    // 自定义缩放按钮组,可调整位置放在页面任意区域
    Positioned(
      right: 16,
      bottom: 100,
      child: Column(
        children: [
          FloatingActionButton(
            mini: true,
            child: Icon(Icons.add),
            onPressed: () {
              _googleMapController?.animateCamera(CameraUpdate.zoomIn());
            },
          ),
          SizedBox(height: 8),
          FloatingActionButton(
            mini: true,
            child: Icon(Icons.remove),
            onPressed: () {
              _googleMapController?.animateCamera(CameraUpdate.zoomOut());
            },
          ),
        ],
      ),
    )
  ],
)

如果要实现和Android一致的点击地图才显示缩放按钮的效果,增加状态变量监听onTap回调,控制按钮的显示/隐藏逻辑即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.09 20:51:03