如何删除所有标记并在onPress上添加新标记?

时间:2019-05-06 17:06:39

标签: flutter google-maps-markers

我想显示足迹标记,并更改为事件标记,然后在按下按钮时返回。 当我清除标记时,大小为0,但不会从地图中删除。 因此,当我添加新的时,什么也没发生。

我的initState

modelo10 = @(t,y) [ y(2) - y(3); -3*y(2) - 5*sin(omega*y(1)); y(1)*y(2) ];
[t,y] = ode45(modelo10, [0,20], [0,4,1]);

我的地图在堆栈中

@override
void initState() {
    super.initState();
    _listToMarkersTrails();
    isTrailsMode = true;
    message = "Go to Events";
}

我的_getbutton()方法

Stack(
    children: <Widget>[
      map,
      Positioned(top: 5, right: 5, child: _getButton())
    ],
  ),

我的_changeMarkers()方法

RaisedButton _getButton() {
    if (isTrailsMode) {
      return RaisedButton(
        color: Colors.green,
        onPressed: () => _changeMarkers(),
        child: Text("Change to Events"),
      );
    } else {
      return RaisedButton(
        color: Colors.blue,
        onPressed: () => _changeMarkers(),
        child: Text("Change to Trails"),
      );
    }
  }

我的listToMarkers-方法

void _changeMarkers() {
    setState(() => map.markers.clear());
    if (isTrailsMode) _listToMarkersTrails();
    else _listToMarkersEvents();
    setState(() => isTrailsMode = !isTrailsMode);
  }

当我检查值时,清除后,markers.lenght = 0,但地图上的所有标记均未删除。 我应该添加什么?控制器?

提前谢谢!

编辑 我忘了补充,这是Flutter(飞镖)。

1 个答案:

答案 0 :(得分:0)

您不需要控制器。 GoogleMap软件包的版本0.3.0已更改,标记现在是小部件,并且GoogleMap小部件在其markers属性中采用了Set of Markers。

您需要做的是,在您的状态下设置一组标记,将其设置为GoogleMap小部件的markers属性,然后调用setState对该集合进行突变。

这将使框架计划重新生成,因此将使用新的标记集再次构建GoogleMap。检查我在这篇文章中的答案以查看代码:Adding markers dynamically to flutter google map

注意:根据此meta post,我已将我的评论发布为答案。