Skip to content

Commit

Permalink
Adding proxy and updating timedimension fork
Browse files Browse the repository at this point in the history
  • Loading branch information
eflowbeach committed Sep 2, 2015
1 parent e69721d commit 36c9355
Show file tree
Hide file tree
Showing 3 changed files with 64 additions and 22 deletions.
7 changes: 5 additions & 2 deletions js/mobileweather.js
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,8 @@ var map = L.map('map', {
},
timeDimensionOptions: {
timeInterval: "PT30M/" + endDate.toISOString(),
period: "PT5M"
period: "PT5M",
loadingTimeout: 5000
},
loop: true
});
Expand All @@ -39,7 +40,8 @@ var layer = L.esri.basemapLayer("DarkGray", {
map.locate({setView: true, maxZoom: 16});

// Radar time-enabled WMS
var wmsUrl = "http://new.nowcoast.noaa.gov/arcgis/services/nowcoast/radar_meteo_imagery_nexrad_time/MapServer/WMSServer"
var wmsUrl = "http://new.nowcoast.noaa.gov/arcgis/services/nowcoast/radar_meteo_imagery_nexrad_time/MapServer/WMSServer";
var proxy = 'server/proxy.php';
var radarWMS = L.nonTiledLayer.wms(wmsUrl, {
layers: '1',
format: 'image/png',
Expand All @@ -48,6 +50,7 @@ var radarWMS = L.nonTiledLayer.wms(wmsUrl, {
attribution: 'nowCOAST'
});
var testTimeLayer = L.timeDimension.layer.wms(radarWMS, {
proxy: proxy,
updateTimeDimension: true
});
testTimeLayer.addTo(map);
Expand Down
59 changes: 39 additions & 20 deletions js/timedimension/leaflet.timedimension.layer.wms.js
Original file line number Diff line number Diff line change
Expand Up @@ -79,7 +79,7 @@ L.TimeDimension.Layer.WMS = L.TimeDimension.Layer.extend({
}
},

setParams: function (params, noRedraw) {
setParams: function(params, noRedraw) {
L.extend(this._baseLayer.options, params);
this._baseLayer.setParams(params, noRedraw);
if (this._currentLayer) {
Expand All @@ -98,7 +98,7 @@ L.TimeDimension.Layer.WMS = L.TimeDimension.Layer.extend({
}
this._currentLayer = layer;
console.log('Show layer ' + layer.wmsParams.layers + ' with time: ' + new Date(time).toISOString());
// Cache management
// Cache management
var times = this._getLoadedTimes();
var strTime = String(time);
var index = times.indexOf(strTime);
Expand Down Expand Up @@ -205,7 +205,7 @@ L.TimeDimension.Layer.WMS = L.TimeDimension.Layer.extend({
this._setDefaultTime = this._setDefaultTime || (this._timeDimension && this._timeDimension.getAvailableTimes().length == 0);
this.setAvailableTimes(this._parseTimeDimensionFromCapabilities(data));
if (this._setDefaultTime && this._timeDimension) {
this._timeDimension.setCurrentTime(this._defaultTime);
this._timeDimension.setCurrentTime(this._defaultTime);
}
}).bind(this));
},
Expand All @@ -219,14 +219,23 @@ L.TimeDimension.Layer.WMS = L.TimeDimension.Layer.extend({
var times = null;
if (layerNameElement) {
var layer = layerNameElement.parent();
var dimension = layer.find("Dimension[name='time']");
if (dimension && dimension.text().length) {
times = dimension.text().trim();
} else {
var extent = layer.find("Extent[name='time']");
if (extent && extent.text().length) {
times = extent.text().trim();
}
times = this._getTimesFromLayerCapabilities(layer);
if (!times) {
times = this._getTimesFromLayerCapabilities(layer.parent());
}
}
return times;
},

_getTimesFromLayerCapabilities: function(layer) {
var times = null;
var dimension = layer.find("Dimension[name='time']");
if (dimension && dimension.length && dimension[0].textContent.length) {
times = dimension[0].textContent.trim();
} else {
var extent = layer.find("Extent[name='time']");
if (extent && extent.length && extent[0].textContent.length) {
times = extent[0].textContent.trim();
}
}
return times;
Expand All @@ -241,25 +250,35 @@ L.TimeDimension.Layer.WMS = L.TimeDimension.Layer.extend({
var defaultTime = 0;
if (layerNameElement) {
var layer = layerNameElement.parent();
var dimension = layer.find("Dimension[name='time']");
if (dimension && dimension.attr("default")) {
defaultTime = dimension.attr("default");
} else {
var extent = layer.find("Extent[name='time']");
if (extent && extent.attr("default")) {
defaultTime = extent.attr("default");
}
defaultTime = this._getDefaultTimeFromLayerCapabilities(layer);
if (defaultTime == 0) {
defaultTime = this._getDefaultTimeFromLayerCapabilities(layer.parent());
}
}
return defaultTime;
},

_getDefaultTimeFromLayerCapabilities: function(layer) {
var defaultTime = 0;
var dimension = layer.find("Dimension[name='time']");
if (dimension && dimension.attr("default")) {
defaultTime = dimension.attr("default");
} else {
var extent = layer.find("Extent[name='time']");
if (extent && extent.attr("default")) {
defaultTime = extent.attr("default");
}
}
return defaultTime;
},


setAvailableTimes: function(times) {
this._availableTimes = L.TimeDimension.Util.parseTimesExpression(times);
this._updateTimeDimensionAvailableTimes();
},

_updateTimeDimensionAvailableTimes: function(){
_updateTimeDimensionAvailableTimes: function() {
if ((this._timeDimension && this._updateTimeDimension) ||
(this._timeDimension && this._timeDimension.getAvailableTimes().length == 0)) {
this._timeDimension.setAvailableTimes(this._availableTimes, this._updateTimeDimensionMode);
Expand Down
20 changes: 20 additions & 0 deletions server/proxy.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
<?php
$url = $_GET['url'];
$result = "";
if (strpos($url, "GetCapabilities") >= 0){
$result = file_get_contents($url);
$nlines = count($http_response_header);
for ($i = $nlines-1; $i >= 0; $i--) {
$line = $http_response_header[$i];
if (substr_compare($line, 'Content-Type', 0, 12, true) == 0) {
$content_type = $line;
break;
}
}
header($content_type);
echo $result;
} else{
header('HTTP/1.0 400 Bad Request');
echo 'Request not valid';
}
?>

0 comments on commit 36c9355

Please sign in to comment.