Skip to content

Commit a32370c

Browse files
committed
support to override the timeInterval in leaflet.timeDimension setting
1 parent 6f87a1d commit a32370c

1 file changed

Lines changed: 38 additions & 15 deletions

File tree

folium/plugins/timestamped_wmstilelayer.py

Lines changed: 38 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -23,11 +23,12 @@
2323

2424
from branca.element import Figure, JavascriptLink, CssLink
2525
from ..map import Layer
26+
from ..features import WmsTileLayer
2627

2728

2829
class TimestampedWmsTileLayers(Layer):
2930
def __init__(self, data, transition_time=200, loop=False, auto_play=False,
30-
period="P1D"):
31+
period="P1D", time_interval=False):
3132
"""Creates a TimestampedWmsTileLayer subclass of Layer that takes a
3233
WmsTileLayer and adds time control with the Leaflet.TimeDimension
3334
plugin.
@@ -42,7 +43,7 @@ def __init__(self, data, transition_time=200, loop=False, auto_play=False,
4243
4344
examples :
4445
# Create WmsTileLayer
45-
w = features.WmsTileLayer(
46+
w1 = features.WmsTileLayer(
4647
"http://this.wms.server/ncWMS/wms",
4748
name="Test WMS Data",
4849
styles="",
@@ -52,11 +53,24 @@ def __init__(self, data, transition_time=200, loop=False, auto_play=False,
5253
COLORSCALERANGE="0,10",
5354
)
5455
# Add to map
55-
w.add_to(m)
56+
w1.add_to(m)
5657
57-
# Add WmsTileLayer to time control
58-
time = plugins.TimestampedWmsTileLayers(w)
59-
time.add_to([m,])
58+
# Create WmsTileLayer
59+
w2 = features.WmsTileLayer(
60+
"http://this.wms.server/ncWMS/wms",
61+
name="Test WMS Data",
62+
styles="",
63+
format="image/png",
64+
transparent=True,
65+
layers="test_data_2",
66+
COLORSCALERANGE="0,5",
67+
)
68+
# Add to map
69+
w2.add_to(m)
70+
71+
# Add WmsTileLayers to time control
72+
time = plugins.TimestampedWmsTileLayers([w1,w2])
73+
time.add_to(m)
6074
6175
transition_time : int, default 200.
6276
The duration in ms of a transition from between timestamps.
@@ -76,19 +90,28 @@ def __init__(self, data, transition_time=200, loop=False, auto_play=False,
7690
Note: this seems to be overridden by the WMS Tile Layer
7791
GetCapabilities.
7892
"""
79-
super(TimestampedWmsTileLayer, self).__init__(overlay=True,
80-
control=data.control,
81-
name=data.layer_name)
82-
self._name = 'TimestampedWmsTileLayer'
93+
super(TimestampedWmsTileLayers, self).__init__(overlay=True,
94+
control=False,
95+
name="timestampedwms")
96+
self._name = 'TimestampedWmsTileLayers'
8397

8498
self.transition_time = int(transition_time)
8599
self.loop = bool(loop)
86100
self.auto_play = bool(auto_play)
87101
self.period = period
88-
self.layers = data
102+
self.time_interval = time_interval
103+
if isinstance(data, WmsTileLayer):
104+
self.layers = [data]
105+
else:
106+
self.layers = data # Assume iterable
89107
self._template = Template("""
90108
{% macro script(this, kwargs) %}
91-
{{this._parent.get_name()}}.timeDimension = L.timeDimension({period:"{{this.period}}"});
109+
{{this._parent.get_name()}}.timeDimension = L.timeDimension({
110+
period:"{{this.period}}",
111+
{% if this.time_interval %}
112+
timeInterval: "{{ this.time_interval }}",
113+
{% endif %}
114+
});
92115
{{this._parent.get_name()}}.timeDimensionControl = L.control.timeDimension({
93116
position: 'bottomleft',
94117
autoPlay: {{'true' if this.auto_play else 'false'}},
@@ -99,8 +122,8 @@ def __init__(self, data, transition_time=200, loop=False, auto_play=False,
99122
{{this._parent.get_name()}}.addControl({{this._parent.get_name()}}.timeDimensionControl);
100123
101124
{% for layer in this.layers %}
102-
var {{this.get_name()}} = L.timeDimension.layer.wms({{ layer.get_name() }},
103-
{updateTimeDimension: true,
125+
var {{ layer.get_name() }} = L.timeDimension.layer.wms({{ layer.get_name() }},
126+
{updateTimeDimension: false,
104127
wmsVersion: '{{ layer.version }}',
105128
}
106129
).addTo({{this._parent.get_name()}});
@@ -109,7 +132,7 @@ def __init__(self, data, transition_time=200, loop=False, auto_play=False,
109132
""")
110133

111134
def render(self, **kwargs):
112-
super(TimestampedWmsTileLayer, self).render()
135+
super(TimestampedWmsTileLayers, self).render()
113136

114137
figure = self.get_root()
115138
assert isinstance(figure, Figure), ("You cannot render this Element "

0 commit comments

Comments
 (0)