如何使用 Google Maps Flutter 默认显示地图标签

Posted

技术标签:

【中文标题】如何使用 Google Maps Flutter 默认显示地图标签【英文标题】:How to display map labels by default with Google Maps Flutter 【发布时间】:2021-04-10 01:44:57 【问题描述】:

我想我的问题和这里一样:

Flutter show marker's infoWindowText by default in Google map widget

但是,没有答案,除了指向另一篇文章的链接,这不是我想要做的。

当我的地图在我的应用程序中打开时,它会正确显示标记,但我还希望在打开时默认显示所有标签...

正如此处的标记之一所示:

我正在创建这样的标记:

 for (Location location in _locations) 
      final locationMarker = Marker(
          markerId: MarkerId(location.id),
          position: LatLng(location.geoY, location.geoX),
          infoWindow: InfoWindow(
            title: location.name,
          ),
          onTap: () => _onTap(location),
          icon: _mapMarkers.icon(location.slug),
          draggable: false);

      markers.add(locationMarker);
    

那么地图是这样的:

 Widget _map(Set<Marker> markers) => GoogleMap(
        mapType: MapType.normal,
        initialCameraPosition: CameraPosition(target: widget.mapCentre),
        markers: markers,
        ...
        onMapCreated: (controller) => _onMapCreated(controller, markers),
      );

在 _onMapCreated 中,我尝试显示所有标签,但实际上只显示了标记列表中的最后一个:

 _onMapCreated(GoogleMapController controller, Set<Marker> markers) 
    if (mounted) 
      setState(() 
        _controller.complete(controller);
        controller.setMapStyle(_mapStyle);
        for (var marker in markers) 
          controller.showMarkerInfoWindow(marker.markerId);
        
      );
...

我正在使用:

[
    "featureType": "poi",
    "stylers": [
    
        "visibility": "off"
    
    ]
]

从地图中删除兴趣点,我希望我可以做一些类似的事情来让标记标签默认显示,但到目前为止我在搜索谷歌时没有找到任何东西,或者还有另一种解决方案。

【问题讨论】:

您提供minimal reproducible example 怎么样?什么是“地图标签”(如您的问题标题)?什么是“标记标签”(如您的问题文本中)?你如何创造它们?你都尝试了些什么?等 在我看来,您希望每个标记都有一个单独的 InfoWindow,默认打开。这在 Google Maps javascript API v3 中是可能的(相关问题:google maps auto open infoWindow,how to open all infoWIndows with button),但我不知道颤振。如果您提供minimal reproducible example,您将更有可能获得有用的答案。 好的,添加了最小示例。还将查看 API v3。 根据github issue,方法showMarkerInfoWindow();一次只能在地图上显示一个信息窗口。 【参考方案1】:

您可以使用 GoogleMapController 的 showMarkerInfoWindow 属性

final GoogleMapController controller = await _controller.future;
controller.showMarkerInfoWindow(MarkerId('ID_MARKET'));

【讨论】:

以上是关于如何使用 Google Maps Flutter 默认显示地图标签的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 Google Maps Flutter 默认显示地图标签

Flutter:如何使用新的 Marker API 向 Google Maps 添加标记?

Flutter:如何将 mylocation 按钮放在 Google Maps 上的不同位置?

Flutter:Google Maps 如何从 Firestore 设置图标

从 google_maps_flutter 中删除多余的标记和圆圈

在 google_maps_flutter 中获取可见标记