颤动:谷歌地图颤动:如何动态改变圆半径?

时间:2021-05-27 16:23:49

标签: flutter google-maps dart maps

我想根据用户输入的值动态更改圆半径。我怎样才能做到这一点? 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 。每次用户更改值时生成所有圆不会使半径更改平滑。我怎样才能做到这一点?

0 个答案:

没有答案