2323
2424from branca .element import Figure , JavascriptLink , CssLink
2525from ..map import Layer
26+ from ..features import WmsTileLayer
2627
2728
2829class 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