如何使用带有Flutter的Google地图首次点击标记后更新InfoWindowText?

问题描述 投票:0回答:1

用户在Android设备上的flutter应用上点击谷歌地图上的标记

出现预期的信息窗口

用户点击infowindow,没有任何反应

预计标题和剪辑会更新

尝试了多个版本和代码。

mapController.onInfoWindowTapped.add((marker) {
        _launchURL(data[i]["urlmember"]);
        // options
        print(marker.id.toString());
        print(data[i]["urlmember"]);
        MarkerOptions( infoWindowText: InfoWindowText("counseling","find us on second service"));
);

预期的结果是infowindow显示新标题并剪切

google-maps-api-3 flutter infowindow
1个回答
0
投票

以下代码段位于文件“place_marker.dart”中的Flutter Google Maps Package(https://pub.dartlang.org/packages/google_maps_flutter)中的示例应用中:

void _updateSelectedMarker(MarkerOptions changes) {
    controller.updateMarker(_selectedMarker, changes);
  }


  void _onMarkerTapped(Marker marker) {
    if (_selectedMarker != null) {
      _updateSelectedMarker(
        const MarkerOptions(icon: BitmapDescriptor.defaultMarker),
      );
    }
    setState(() {
      _selectedMarker = marker;
    });
    _updateSelectedMarker(
      MarkerOptions(
        icon: BitmapDescriptor.defaultMarkerWithHue(
          BitmapDescriptor.hueGreen,
        ),
      ),
    );
  }

我相信您目前设置的方式,您点击与预先存在的标记关联的信息窗口,并触发创建另一个没有“位置”的标记(即; LatLng值,这是必需的标记对象),但有infoWindow文本属性。这可以解释为什么单击infoWindow时没有任何反应;它实质上是创造一个标记并将它放在一边;这意味着没有任何地方可以显示相应的infoWindow文本。

我相信您要实现的逻辑是:当用户点击infoWindow时,它应该触发对现有标记的更新。要实现这一点,您可以实现类似于我上面共享的代码片段,除了使用onInfoWindowTapped而不是onMarkerTapped。

© www.soinside.com 2019 - 2024. All rights reserved.