1

我认为我的问题与此处相同:

Flutter 在 Google 地图小部件中默认显示标记的 infoWindowText

但是,没有答案,除了指向另一个帖子的链接,这不是我想要做的。

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

在此处输入图像描述

如此处的标记之一所示:

在此处输入图像描述

我正在创建这样的标记:

 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"
    }
    ]
}]

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

4

1 回答 1

2

您可以使用 GoogleMapController 的 showMarkerInfoWindow 属性

final GoogleMapController controller = await _controller.future;
controller.showMarkerInfoWindow(MarkerId('ID_MARKET'));
于 2021-08-24T19:44:21.840 回答