问题描述
我正在使用draw_control
中的ipyleaflet
函数在地图上绘制多边形。我正在收集使用feature_collection
变量绘制的内容,效果很好。但是,当我按地图上的clear all
按钮上的bin
时,feature_collection
变量不会被清空-如何将地图上按clear all
的按钮转换为清除我的{ {1}}变量?目前,它复制了我之前绘制的内容,因此我具有以下工作流程:
- 绘制两个多边形
-
feature_collection
包含有关两个多角形的信息 - 按下地图上的“全部清除
feature_collection
bin”按钮。 - 在地图上绘制两个新的多边形
-
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
请注意,由于“已编辑”未提供有关原始形状的任何信息,因此您无法知道要修改哪个形状