Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.
self._add_unit(name, factor, decimals)
def add_area_unit(self, name, factor, decimals=0):
self._area_units.append(name)
self._add_unit(name, factor, decimals)
def _add_unit(self, name, factor, decimals):
self._custom_units_dict[name] = {
'factor': factor,
'display': name,
'decimals': decimals
}
self._custom_units = dict(**self._custom_units_dict)
class SplitMapControl(Control):
_view_name = Unicode('LeafletSplitMapControlView').tag(sync=True)
_model_name = Unicode('LeafletSplitMapControlModel').tag(sync=True)
left_layer = Union((Instance(Layer), List(Instance(Layer)))).tag(sync=True, **widget_serialization)
right_layer = Union((Instance(Layer), List(Instance(Layer)))).tag(sync=True, **widget_serialization)
@default('left_layer')
def _default_left_layer(self):
return TileLayer()
@default('right_layer')
def _default_right_layer(self):
return TileLayer()
def __init__(self, **kwargs):
super(SplitMapControl, self).__init__(**kwargs)
self.send({'msg': 'clear_polygons'})
def clear_circles(self):
self.send({'msg': 'clear_circles'})
def clear_circle_markers(self):
self.send({'msg': 'clear_circle_markers'})
def clear_rectangles(self):
self.send({'msg': 'clear_rectangles'})
def clear_markers(self):
self.send({'msg': 'clear_markers'})
class ZoomControl(Control):
_view_name = Unicode('LeafletZoomControlView').tag(sync=True)
_model_name = Unicode('LeafletZoomControlModel').tag(sync=True)
zoom_in_text = Unicode('+').tag(sync=True, o=True)
zoom_in_title = Unicode('Zoom in').tag(sync=True, o=True)
zoom_out_text = Unicode('-').tag(sync=True, o=True)
zoom_out_title = Unicode('Zoom out').tag(sync=True, o=True)
class AttributionControl(Control):
_view_name = Unicode('LeafletAttributionControlView').tag(sync=True)
_model_name = Unicode('LeafletAttributionControlModel').tag(sync=True)
prefix = Unicode('Leaflet').tag(sync=True, o=True)
def __add__(self, item):
if isinstance(item, Layer):
self.add_layer(item)
elif isinstance(item, Control):
self.add_control(item)
return self
options = List(trait=Unicode()).tag(sync=True)
position = Enum(
['topright', 'topleft', 'bottomright', 'bottomleft'],
default_value='topleft',
help="""Possible values are topleft, topright, bottomleft
or bottomright"""
).tag(sync=True, o=True)
@default('options')
def _default_options(self):
return [name for name in self.traits(o=True)]
class WidgetControl(Control):
_view_name = Unicode('LeafletWidgetControlView').tag(sync=True)
_model_name = Unicode('LeafletWidgetControlModel').tag(sync=True)
widget = Instance(DOMWidget).tag(sync=True, **widget_serialization)
max_width = Int(default_value=None, allow_none=True).tag(sync=True)
min_width = Int(default_value=None, allow_none=True).tag(sync=True)
max_height = Int(default_value=None, allow_none=True).tag(sync=True)
min_height = Int(default_value=None, allow_none=True).tag(sync=True)
class FullScreenControl(Control):
_view_name = Unicode('LeafletFullScreenControlView').tag(sync=True)
_model_name = Unicode('LeafletFullScreenControlModel').tag(sync=True)
return [name for name in self.traits(o=True)]
class WidgetControl(Control):
_view_name = Unicode('LeafletWidgetControlView').tag(sync=True)
_model_name = Unicode('LeafletWidgetControlModel').tag(sync=True)
widget = Instance(DOMWidget).tag(sync=True, **widget_serialization)
max_width = Int(default_value=None, allow_none=True).tag(sync=True)
min_width = Int(default_value=None, allow_none=True).tag(sync=True)
max_height = Int(default_value=None, allow_none=True).tag(sync=True)
min_height = Int(default_value=None, allow_none=True).tag(sync=True)
class FullScreenControl(Control):
_view_name = Unicode('LeafletFullScreenControlView').tag(sync=True)
_model_name = Unicode('LeafletFullScreenControlModel').tag(sync=True)
class LayersControl(Control):
_view_name = Unicode('LeafletLayersControlView').tag(sync=True)
_model_name = Unicode('LeafletLayersControlModel').tag(sync=True)
class MeasureControl(Control):
_view_name = Unicode('LeafletMeasureControlView').tag(sync=True)
_model_name = Unicode('LeafletMeasureControlModel').tag(sync=True)
_length_units = ['feet', 'meters', 'miles', 'kilometers']
_area_units = ['acres', 'hectares', 'sqfeet', 'sqmeters', 'sqmiles']
_custom_units_dict = {}
def remove_layer(self, layer):
if layer.model_id not in self._layer_ids:
raise LayerException('layer not on map: %r' % layer)
self.layers = tuple([l for l in self.layers if l.model_id != layer.model_id])
def substitute_layer(self, old, new):
if isinstance(new, dict):
new = basemap_to_tiles(new)
if old.model_id not in self._layer_ids:
raise LayerException('Could not substitute layer: layer not on map.')
self.layers = tuple([new if l.model_id == old.model_id else l for l in self.layers])
def clear_layers(self):
self.layers = ()
controls = Tuple().tag(trait=Instance(Control), sync=True, **widget_serialization)
_control_ids = List()
@validate('controls')
def _validate_controls(self, proposal):
'''Validate controls list.
Makes sure only one instance of any given layer can exist in the
controls list.
'''
self._control_ids = [c.model_id for c in proposal.value]
if len(set(self._control_ids)) != len(self._control_ids):
raise ControlException('duplicate control detected, only use each control once')
return proposal.value
def add_control(self, control):
if control.model_id in self._control_ids:
def clear_markers(self):
self.send({'msg': 'clear_markers'})
class ZoomControl(Control):
_view_name = Unicode('LeafletZoomControlView').tag(sync=True)
_model_name = Unicode('LeafletZoomControlModel').tag(sync=True)
zoom_in_text = Unicode('+').tag(sync=True, o=True)
zoom_in_title = Unicode('Zoom in').tag(sync=True, o=True)
zoom_out_text = Unicode('-').tag(sync=True, o=True)
zoom_out_title = Unicode('Zoom out').tag(sync=True, o=True)
class AttributionControl(Control):
_view_name = Unicode('LeafletAttributionControlView').tag(sync=True)
_model_name = Unicode('LeafletAttributionControlModel').tag(sync=True)
prefix = Unicode('Leaflet').tag(sync=True, o=True)
class MapStyle(Style, Widget):
""" Map Style Widget """
_model_name = Unicode('LeafletMapStyleModel').tag(sync=True)
_model_module = Unicode("jupyter-leaflet").tag(sync=True)
_model_module_version = Unicode(EXTENSION_VERSION).tag(sync=True)
cursor = Enum(values=allowed_cursor, default_value='grab').tag(sync=True)
_model_name = Unicode('LeafletWidgetControlModel').tag(sync=True)
widget = Instance(DOMWidget).tag(sync=True, **widget_serialization)
max_width = Int(default_value=None, allow_none=True).tag(sync=True)
min_width = Int(default_value=None, allow_none=True).tag(sync=True)
max_height = Int(default_value=None, allow_none=True).tag(sync=True)
min_height = Int(default_value=None, allow_none=True).tag(sync=True)
class FullScreenControl(Control):
_view_name = Unicode('LeafletFullScreenControlView').tag(sync=True)
_model_name = Unicode('LeafletFullScreenControlModel').tag(sync=True)
class LayersControl(Control):
_view_name = Unicode('LeafletLayersControlView').tag(sync=True)
_model_name = Unicode('LeafletLayersControlModel').tag(sync=True)
class MeasureControl(Control):
_view_name = Unicode('LeafletMeasureControlView').tag(sync=True)
_model_name = Unicode('LeafletMeasureControlModel').tag(sync=True)
_length_units = ['feet', 'meters', 'miles', 'kilometers']
_area_units = ['acres', 'hectares', 'sqfeet', 'sqmeters', 'sqmiles']
_custom_units_dict = {}
_custom_units = Dict().tag(sync=True)
primary_length_unit = Enum(
values=_length_units,
default_value='feet',
@default('right_layer')
def _default_right_layer(self):
return TileLayer()
def __init__(self, **kwargs):
super(SplitMapControl, self).__init__(**kwargs)
self.on_msg(self._handle_leaflet_event)
def _handle_leaflet_event(self, _, content, buffers):
if content.get('event', '') == 'dividermove':
event = content.get('event')
self.x = event.x
class DrawControl(Control):
_view_name = Unicode('LeafletDrawControlView').tag(sync=True)
_model_name = Unicode('LeafletDrawControlModel').tag(sync=True)
# Enable each of the following drawing by giving them a non empty dict of options
# You can add Leaflet style options in the shapeOptions sub-dict
# See https://github.com/Leaflet/Leaflet.draw#polylineoptions
# TODO: mutable default value!
polyline = Dict({'shapeOptions': {}}).tag(sync=True)
# See https://github.com/Leaflet/Leaflet.draw#polygonoptions
# TODO: mutable default value!
polygon = Dict({'shapeOptions': {}}).tag(sync=True)
circlemarker = Dict({'shapeOptions': {}}).tag(sync=True)
# Leave empty to disable these
circle = Dict().tag(sync=True)
rectangle = Dict().tag(sync=True)
min_width = Int(default_value=None, allow_none=True).tag(sync=True)
max_height = Int(default_value=None, allow_none=True).tag(sync=True)
min_height = Int(default_value=None, allow_none=True).tag(sync=True)
class FullScreenControl(Control):
_view_name = Unicode('LeafletFullScreenControlView').tag(sync=True)
_model_name = Unicode('LeafletFullScreenControlModel').tag(sync=True)
class LayersControl(Control):
_view_name = Unicode('LeafletLayersControlView').tag(sync=True)
_model_name = Unicode('LeafletLayersControlModel').tag(sync=True)
class MeasureControl(Control):
_view_name = Unicode('LeafletMeasureControlView').tag(sync=True)
_model_name = Unicode('LeafletMeasureControlModel').tag(sync=True)
_length_units = ['feet', 'meters', 'miles', 'kilometers']
_area_units = ['acres', 'hectares', 'sqfeet', 'sqmeters', 'sqmiles']
_custom_units_dict = {}
_custom_units = Dict().tag(sync=True)
primary_length_unit = Enum(
values=_length_units,
default_value='feet',
help="""Possible values are feet, meters, miles, kilometers or any user
defined unit"""
).tag(sync=True, o=True)
secondary_length_unit = Enum(