我想根据用户输入的值动态更改圆半径。我怎样才能做到这一点? googleMapController 不是提供了一种简单的方法来动态更改圆圈和标记配置吗?
这是我的代码:
...
List _items = [];
GoogleMapController _mapController;
Set<Circle> _circles = HashSet<Circle>();
Set<Marker> _markers = HashSet<Marker>();
@override
void initState() {
super.initState();
this._loadItems().then((value) {
this._createCircles(60000);
});
}
@override
Widget build(BuildContext context) {
return Scaffold(
body: Stack(
alignment: Alignment.topCenter,
children: <Widget>[
GoogleMap(
circles: _circles,
initialCameraPosition: CameraPosition(
target: LatLng(47,45),
zoom: 6,
),
markers: _markers,
myLocationButtonEnabled: false,
onMapCreated: _onMapCreated,
zoomControlsEnabled: false,
),
],
),
);
}
void _createCircles(double radius) {
_items.forEach((item) {
setState(() {
_circles.add(
Circle(
circleId: CircleId(item.id),
center: LatLng(item.lat, item.long),
radius: radius,
strokeWidth: 1,
),
);
});
});
}
Future<void> _loadItems() async {
var jsonString = await rootBundle.loadString('assets/data.json');
setState(() {
_items = itemsFromJson(jsonString);
});
}
void _onMapCreated(GoogleMapController controller) {
_mapController = controller;
}
...
我正在使用 google_maps_flutter 。每次用户更改值时生成所有圆不会使半径更改平滑。我怎样才能做到这一点?