Removes a widget from the map.
(self, widget: Any)
| 1026 | super().add(basemap_control) |
| 1027 | |
| 1028 | def remove(self, widget: Any) -> None: # pytype: disable=signature-mismatch |
| 1029 | """Removes a widget from the map.""" |
| 1030 | basic_controls = { |
| 1031 | "search_control": map_widgets.SearchBar, |
| 1032 | "zoom_control": ipyleaflet.ZoomControl, |
| 1033 | "fullscreen_control": ipyleaflet.FullScreenControl, |
| 1034 | "scale_control": ipyleaflet.ScaleControl, |
| 1035 | "attribution_control": ipyleaflet.AttributionControl, |
| 1036 | "toolbar": toolbar.Toolbar, |
| 1037 | "inspector": map_widgets.Inspector, |
| 1038 | "layer_manager": map_widgets.LayerManager, |
| 1039 | "layer_editor": map_widgets.LayerEditor, |
| 1040 | "draw_control": MapDrawControl, |
| 1041 | "basemap_selector": map_widgets.BasemapSelector, |
| 1042 | } |
| 1043 | widget_type = basic_controls.get(widget, None) |
| 1044 | |
| 1045 | # First, try removing the widget from any layout boxes. |
| 1046 | child_to_remove = None |
| 1047 | for child in self.top_right_layout_box.children: |
| 1048 | if child == widget or isinstance(child, type(widget_type)): |
| 1049 | child_to_remove = child |
| 1050 | if child_to_remove: |
| 1051 | self.top_right_layout_box.children = [ |
| 1052 | x for x in self.top_right_layout_box.children if x != child_to_remove |
| 1053 | ] |
| 1054 | |
| 1055 | if widget_type: |
| 1056 | if control := self._find_widget_of_type(widget_type, return_control=True): |
| 1057 | self.remove(control) |
| 1058 | control.close() |
| 1059 | return |
| 1060 | |
| 1061 | if hasattr(widget, "name") and widget.name in self.ee_layers: |
| 1062 | self.ee_layers.pop(widget.name) |
| 1063 | |
| 1064 | if ee_layer := self.ee_layers.pop(widget, None): |
| 1065 | tile_layer = ee_layer.get("ee_layer", None) |
| 1066 | if tile_layer is not None: |
| 1067 | self.remove_layer(tile_layer) |
| 1068 | if legend := ee_layer.get("legend", None): |
| 1069 | self.remove(legend) |
| 1070 | if colorbar := ee_layer.get("colorbar", None): |
| 1071 | self.remove(colorbar) |
| 1072 | return |
| 1073 | |
| 1074 | super().remove(widget) |
| 1075 | if isinstance(widget, ipywidgets.Widget): |
| 1076 | widget.close() |
| 1077 | |
| 1078 | def add_layer( |
| 1079 | self, |