如何删除我所有的标记并添加新的 onPress?
How to remove all my markers and add new ones onPress?
我想显示轨迹标记并更改为事件标记并在按下按钮时返回。
当我清除标记时,大小为 0,但它们不会从地图中删除。
所以当我添加新的时,没有任何反应。
我的初始化状态
@override
void initState() {
super.initState();
_listToMarkersTrails();
isTrailsMode = true;
message = "Go to Events";
}
我的地图在堆栈中
Stack(
children: <Widget>[
map,
Positioned(top: 5, right: 5, child: _getButton())
],
),
我的 _getbutton() 方法
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"),
);
}
}
我的 _changeMarkers() 方法
void _changeMarkers() {
setState(() => map.markers.clear());
if (isTrailsMode) _listToMarkersTrails();
else _listToMarkersEvents();
setState(() => isTrailsMode = !isTrailsMode);
}
我的 listToMarkers- 方法
void _listToMarkersTrails() {
for (var i = 0; i < widget.trailList.length; i++) {
setState(() {
map.markers.add(Marker(
icon: BitmapDescriptor.defaultMarkerWithHue(50.0),
infoWindow: InfoWindow(
title: widget.trailList[i].trailName,
onTap: () => _navigateToTrail(widget.trailList[i])),
markerId: MarkerId("id{$i}_trails"),
position: widget.trailList[i].markers[0].position,
));
});
}
}
void _listToMarkersEvents() {
for (var i = 0; i < widget.eventList.length; i++) {
setState(() {
map.markers.add(Marker(
icon: BitmapDescriptor.defaultMarkerWithHue(150.0),
infoWindow: InfoWindow(
title: widget.eventList[i].date,
onTap: () => _navigateToEvent(widget.eventList[i])),
markerId: MarkerId("id{$i}_events"),
position: widget.eventList[i].trail.markers[0].position,
));
});
}
}
当我检查这些值时,在清除之后,markers.lenght = 0,但是没有从地图中的标记中删除任何内容。
我应该添加什么?控制器?
提前致谢!
编辑
忘了补充,这是Flutter(dart)
我想显示轨迹标记并更改为事件标记并在按下按钮时返回。 当我清除标记时,大小为 0,但它们不会从地图中删除。 所以当我添加新的时,没有任何反应。
我的初始化状态
@override
void initState() {
super.initState();
_listToMarkersTrails();
isTrailsMode = true;
message = "Go to Events";
}
我的地图在堆栈中
Stack(
children: <Widget>[
map,
Positioned(top: 5, right: 5, child: _getButton())
],
),
我的 _getbutton() 方法
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"),
);
}
}
我的 _changeMarkers() 方法
void _changeMarkers() {
setState(() => map.markers.clear());
if (isTrailsMode) _listToMarkersTrails();
else _listToMarkersEvents();
setState(() => isTrailsMode = !isTrailsMode);
}
我的 listToMarkers- 方法
void _listToMarkersTrails() {
for (var i = 0; i < widget.trailList.length; i++) {
setState(() {
map.markers.add(Marker(
icon: BitmapDescriptor.defaultMarkerWithHue(50.0),
infoWindow: InfoWindow(
title: widget.trailList[i].trailName,
onTap: () => _navigateToTrail(widget.trailList[i])),
markerId: MarkerId("id{$i}_trails"),
position: widget.trailList[i].markers[0].position,
));
});
}
}
void _listToMarkersEvents() {
for (var i = 0; i < widget.eventList.length; i++) {
setState(() {
map.markers.add(Marker(
icon: BitmapDescriptor.defaultMarkerWithHue(150.0),
infoWindow: InfoWindow(
title: widget.eventList[i].date,
onTap: () => _navigateToEvent(widget.eventList[i])),
markerId: MarkerId("id{$i}_events"),
position: widget.eventList[i].trail.markers[0].position,
));
});
}
}
当我检查这些值时,在清除之后,markers.lenght = 0,但是没有从地图中的标记中删除任何内容。 我应该添加什么?控制器?
提前致谢!
编辑 忘了补充,这是Flutter(dart)