【问题标题】:Flutter - How to remove a marker in google maps?Flutter - 如何删除谷歌地图中的标记?
【发布时间】:2020-04-02 18:01:05
【问题描述】:

我希望能够通过模态删除标记,我尝试了clearMarkers()removeMarkers(),但它们似乎不再起作用了。

我也试过这个

Flutter - How to remove an individual google_maps_flutter ^0.5.21 marker?

但是当我点击删除标记时它给了我:Bad state: No element

  _handleTap(LatLng point) async {
    if (_markers.isEmpty) {
      FirebaseUser users = await FirebaseAuth.instance.currentUser();
      Firestore.instance
          .collection("markers")
          .document(users.uid)
          .setData({
        "coordinates": point.toString(),
      });
      setState(() {
        _markers.add(Marker(
          markerId: MarkerId(point.toString()),
          position: point,
          onTap: () {
            showModalBottomSheet<void>(
                context: context,
            builder: (BuildContext context) {
              return Container(
                child: new Wrap(
                  children: <Widget>[
                    new ListTile(
                        leading: new Icon(Icons.delete),
                        title: new Text('Remove marker'),
                        onTap: () =>
                        {
                           _markers.remove(_markers.firstWhere((Marker marker) => marker.markerId.value == point))
                        }
                    ),
                  ],
                ),
              );
            });
          },

【问题讨论】:

    标签: google-maps flutter marker


    【解决方案1】:

    你需要在 _markers.remove() 之后调用这个 setState()。

    _handleTap(LatLng point) async {
        if (_markers.isEmpty) {
          FirebaseUser users = await FirebaseAuth.instance.currentUser();
          Firestore.instance
              .collection("markers")
              .document(users.uid)
              .setData({
            "coordinates": point.toString(),
          });
          setState(() {
            _markers.add(Marker(
              markerId: MarkerId(point.toString()),
              position: point,
              onTap: () {
                showModalBottomSheet<void>(
                    context: context,
                builder: (BuildContext context) {
                  return Container(
                    child: new Wrap(
                      children: <Widget>[
                        new ListTile(
                            leading: new Icon(Icons.delete),
                            title: new Text('Remove marker'),
                            onTap: () =>
                            {
                               _markers.remove(_markers.firstWhere((Marker marker) => marker.markerId.value == point))
                            }
                        ),
                      ],
                    ),
                  );
                });
              },
    

    【讨论】:

    • 我不确定你的意思,我确实尝试了 setState() 但在 _markers.remove() 之后,但它似乎没有什么不同,我也得到了同样的错误你回答的代码和我的一模一样。
    猜你喜欢
    • 2012-10-17
    • 2021-07-31
    • 1970-01-01
    • 2013-12-09
    • 2011-01-28
    • 1970-01-01
    • 2018-10-13
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多