ipyleaflet draw_control无法处理“全部清除”按钮

问题描述

我正在使用draw_control 中的ipyleaflet函数在地图上绘制多边形。我正在收集使用feature_collection变量绘制的内容效果很好。但是,当我按地图上的clear all按钮上的bin时,feature_collection变量不会被清空-如何将地图上按clear all的按钮转换为清除我的{ {1}}变量?目前,它复制了我之前绘制的内容,因此我具有以下工作流程:

  1. 绘制两个多边形
  2. feature_collection包含有关两个多角形的信息
  3. 按下地图上的“全部清除feature_collection bin”按钮。
  4. 在地图上绘制两个新的多边形
  5. on现在包含6(!)项,将1.操作重复了两次!

这里是要复制的代码!基本上,我不理解如何通过feature_collection按钮来收集clear_all动作来清除我的bin变量。

feature_control

解决方法

handle_draw 方法中,除了 geo_json 功能之外,还有一个 action 参数可以帮助您处理 DrawingControl 中发生的事情。

清除后,action 将为 deleted

因此要调整您的代码,您可以执行以下操作:

#Handling items drawn on map: 
def handle_draw(self,action,geo_json):
    """Do something with the GeoJSON when it's drawn on the map""" 

    if action in ['created','edited']:
        feature_collection['features'].append(geo_json)

    elif action == 'deleted':
        feature_collection['features'].remove(geo_json)

    return 

请注意,由于“已编辑”未提供有关原始形状的任何信息,因此您无法知道要修改哪个形状