1 | goog.require('ol.Map');
|
2 | goog.require('ol.View');
|
3 | goog.require('ol.extent');
|
4 | goog.require('ol.layer.Tile');
|
5 | goog.require('ol.proj');
|
6 | goog.require('ol.source.Stamen');
|
7 | goog.require('ol.source.TileWMS');
|
8 |
|
9 | function threeHoursAgo() {
|
10 | return new Date(Math.round(Date.now() / 3600000) * 3600000 - 3600000 * 3);
|
11 | }
|
12 |
|
13 | var extent = ol.proj.transformExtent([-126, 24, -66, 50], 'EPSG:4326', 'EPSG:3857');
|
14 | var startDate = threeHoursAgo();
|
15 | var frameRate = 0.5;
|
16 | var animationId = null;
|
17 |
|
18 | var layers = [
|
19 | new ol.layer.Tile({
|
20 | source: new ol.source.Stamen({
|
21 | layer: 'terrain'
|
22 | })
|
23 | }),
|
24 | new ol.layer.Tile({
|
25 | extent: extent,
|
26 | source: new ol.source.TileWMS( ({
|
27 | attributions: ['Iowa State University'],
|
28 | url: 'https://mesonet.agron.iastate.edu/cgi-bin/wms/nexrad/n0r-t.cgi',
|
29 | params: {'LAYERS': 'nexrad-n0r-wmst'}
|
30 | }))
|
31 | })
|
32 | ];
|
33 | var map = new ol.Map({
|
34 | layers: layers,
|
35 | target: 'map',
|
36 | view: new ol.View({
|
37 | center: ol.extent.getCenter(extent),
|
38 | zoom: 4
|
39 | })
|
40 | });
|
41 |
|
42 | function updateInfo() {
|
43 | var el = document.getElementById('info');
|
44 | el.innerHTML = startDate.toISOString();
|
45 | }
|
46 |
|
47 | function setTime() {
|
48 | startDate.setMinutes(startDate.getMinutes() + 15);
|
49 | if (startDate > Date.now()) {
|
50 | startDate = threeHoursAgo();
|
51 | }
|
52 | layers[1].getSource().updateParams({'TIME': startDate.toISOString()});
|
53 | updateInfo();
|
54 | }
|
55 | setTime();
|
56 |
|
57 | var stop = function() {
|
58 | if (animationId !== null) {
|
59 | window.clearInterval(animationId);
|
60 | animationId = null;
|
61 | }
|
62 | };
|
63 |
|
64 | var play = function() {
|
65 | stop();
|
66 | animationId = window.setInterval(setTime, 1000 / frameRate);
|
67 | };
|
68 |
|
69 | var startButton = document.getElementById('play');
|
70 | startButton.addEventListener('click', play, false);
|
71 |
|
72 | var stopButton = document.getElementById('pause');
|
73 | stopButton.addEventListener('click', stop, false);
|
74 |
|
75 | updateInfo();
|