[OpenLayers-Commits] r12238 - sandbox/mpriour/temporal_map/openlayers/lib/OpenLayers/Control/TimeManager

commits-20090109 at openlayers.org commits-20090109 at openlayers.org
Fri Aug 12 15:24:24 EDT 2011


Author: mpriour
Date: 2011-08-12 12:24:23 -0700 (Fri, 12 Aug 2011)
New Revision: 12238

Modified:
   sandbox/mpriour/temporal_map/openlayers/lib/OpenLayers/Control/TimeManager/WMS.js
Log:
working time manager control for wms layer types

Modified: sandbox/mpriour/temporal_map/openlayers/lib/OpenLayers/Control/TimeManager/WMS.js
===================================================================
--- sandbox/mpriour/temporal_map/openlayers/lib/OpenLayers/Control/TimeManager/WMS.js	2011-08-12 04:00:58 UTC (rev 12237)
+++ sandbox/mpriour/temporal_map/openlayers/lib/OpenLayers/Control/TimeManager/WMS.js	2011-08-12 19:24:23 UTC (rev 12238)
@@ -42,14 +42,67 @@
 	initialize:function(options){
 		options = options||{};
 		OpenLayers.Util.extend(this,options);
-		this.range = this.buildRange(this.layers);
+		var timeConfig = this.buildRangeAndIntervals(this.layers);
+		this.range = timeConfig.range;
+		this.intervals = timeConfig.intervals;
 	},
 	
 	onTick:function(evt){
 		this.currentTime = evt.currentTime;
 		if(this.currentTime<=this.range[1] && this.currentTime>=this.range[0]){
-			//TODO: Implement time tick for WMS layers
+			for(var i=0,len=this.layers.length;i<len;i++){
+				this.applyTime(layers[i],currentTime);
+			}
+		}else{
+			for(var i=0,len=this.layers.length;i<len;i++){
+				layers[i].setVisibility(false);
+			}
 		}
 	},
+	
+	buildRangeAndIntervals:function(layer){
+		var range = [], intervals=[];
+		for(var i=0,len=layers.length;i<len;i++){
+			var lyr = layers[i];
+			if(lyr.timeInterval&&lyr.timeInterval.length==2){
+				if(!range[0]||lyr.timeInterval[0]<range[0]){
+					range[0]=lyr.timeInterval[0];
+				}
+				if(!range[1]||lyr.timeInterval[1]>range[1]){
+					range[1]=lyr.timeInterval[1];
+				}
+			}
+			else if(lyr.timeInterval&&lyr.timeInterval.length>2){
+				for(var j=0;j<lyr.timeInterval.length;j++){
+					if(OpenLayers.Util.indexOf(intervals,lyr.timeInterval[j])==-1){
+						intervals.push(lyr.timeInterval[j])
+					}
+				}
+				intervals.sort(function(a,b){
+					return (a>b)?-1:1
+				})
+			}
+		}
+		if(intervals.length){
+			if (!range[0] || intervals[0] < range[0]) {
+				range[0] = intervals[0];
+			}
+			if (!range[1] || intervals[1] > range[1]) {
+				range[1] = intervals[1];
+			}
+		}
+		return {'range':range,'intervals':intervals}
+	},
+	
+	applyTime:function(layer,time){
+		if(layer.timeIntervals.length>2 && this.useLastValidInterval){
+			//TODO implement special case handling
+		}else{
+			//format time in ISO:8601 format
+			var isotime = OpenLayers.Date.toISOString(time);
+			layer.mergeNewParams({time:isotime});
+		}
+	},
+	
 	CLASS_NAME:'OpenLayers.Control.TimeManager.WMS'
 });
\ No newline at end of file



More information about the Commits mailing list