Google maps 颤振贴图:如何在标记点上更改标记图标

Google maps 颤振贴图:如何在标记点上更改标记图标,google-maps,flutter,flutter-layout,flutter-dependencies,Google Maps,Flutter,Flutter Layout,Flutter Dependencies,我试图找到一个解决方案,在点击标记时改变标记图标,以便提供视觉反馈。不过,我还不知道怎么做。第一个想法是通过索引访问标记,但由于标记是按集合排列的,因此以正确的方式访问它没有任何变化。那么就很容易用新的来交换旧的标记了。有没有一个共同的方法来做到这一点 编辑: onTap: () { if (markerFlag != idMarker) { setState(() { if

我试图找到一个解决方案,在点击标记时改变标记图标,以便提供视觉反馈。不过,我还不知道怎么做。第一个想法是通过索引访问标记,但由于标记是按
集合排列的
,因此以正确的方式访问它没有任何变化。那么就很容易用新的来交换旧的标记了。有没有一个共同的方法来做到这一点

编辑:

onTap: () {
            if (markerFlag != idMarker) {                  
              setState(() {
                if (markerFlag != null) {
                  _allMarkers[markerFlag] = _allMarkers[markerFlag].copyWith(iconParam: defaultMarkerIcon);
                }
               _allMarkers[idMarker] = _allMarkers[idMarker].copyWith(iconParam: selectedMarkerIcon);
               markerFlag = idMarker;
              });                
            }
          }
onTap: (value){
    if (markerFlag != null) {
      setState(() {
        _allMarkers[markerFlag] = _allMarkers[markerFlag].copyWith(iconParam: defaultMarkerIcon);
        markerFlag = null;
      });
    }
  }
使用Java,有如下选项<代码>设置图标用于标记。这不是对弗利特的追逐

像这样:

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

快乐编码:)

我也有同样的问题。谷歌地图API没有这个选项。我手动解决了它

您可以在标记的onTap和Google地图的onTap属性中创建标志并更改图标标记

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;
              });                
            }
          }
onTap: (value){
    if (markerFlag != null) {
      setState(() {
        _allMarkers[markerFlag] = _allMarkers[markerFlag].copyWith(iconParam: defaultMarkerIcon);
        markerFlag = null;
      });
    }
  }

你必须建立一个新的
谷歌地图
,并在propertyHey中传递你的标记,谢谢你的回答。这绝对是不可能的,但我不想重新渲染整个地图,因为它看起来很糟糕。@Flacon,你找到解决方案了吗?这是一个很好的解决方案。作为提醒,标记需要作为一个集合,而不是一个列表,因此我在GoogleMap小部件中使用了
标记:\u markers.toSet(),
。此解决方案是否有任何性能成本?