在使用Flutter的Google Maps首次单击标记后,如何更新InfoWindowText?

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

用户在Android设备上的flutter应用程序上点击Google地图上的标记

出现预期的信息窗口

用户单击信息窗口,没有任何反应

应该会看到标题和片段已更新

我尝试了多个版本和代码。

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"));
);

预期结果是信息窗口显示新标题并被剪断

google-maps-api-3 flutter infowindow
1个回答
0
投票
以下代码段位于Flutter Google Maps Package(https://pub.dartlang.org/packages/google_maps_flutter)文件“ place_marker.dart”中的示例应用程序中:

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.