首页 > 解决方案 > Flutter Maps:如何更改标记点击上的标记图标

问题描述

我正在尝试找到一种解决方案,用于在点击标记时更改标记图标,以便提供视觉反馈。不过,我还没有弄清楚如何做到这一点。第一个想法是通过索引访问标记,但由于标记排列在 aSet<Markers>中,因此无法以正确的方式访问它。那么用新的标记交换旧标记很容易。有没有一种通用的方法可以做到这一点?

编辑:

使用 Java,有类似的选项。setIcon用于标记。这不是 Flutter 的追求。

像这样:

marker.setIcon(BitmapDescriptorFactory.fromResource(R.drawable.ic_selected_user_mark_icon));

快乐编码:)

标签: google-mapsflutterflutter-layoutflutter-dependencies

解决方案


我有同样的问题。Google Maps API 没有这个选项。我手动解决了。

您可以在 Marker 的 onTap 和 GoogleMap 的 onTap 属性中创建一个标志并更改图标 Marker。

int markerFlag = null;
List<Marker> _allMarkers = [];

标记的 onTap:

onTap: () {
            if (markerFlag != idMarker) {                  
              setState(() {
                if (markerFlag != null) {
                  _allMarkers[markerFlag] = _allMarkers[markerFlag].copyWith(iconParam: defaultMarkerIcon);
                }
               _allMarkers[idMarker] = _allMarkers[idMarker].copyWith(iconParam: selectedMarkerIcon);
               markerFlag = idMarker;
              });                
            }
          }

GoogleMap 的 onTap:

onTap: (value){
    if (markerFlag != null) {
      setState(() {
        _allMarkers[markerFlag] = _allMarkers[markerFlag].copyWith(iconParam: defaultMarkerIcon);
        markerFlag = null;
      });
    }
  }

推荐阅读