UNPKG

1.81 kBJavaScriptView Raw
1goog.require('ol.Map');
2goog.require('ol.View');
3goog.require('ol.extent');
4goog.require('ol.layer.Tile');
5goog.require('ol.proj');
6goog.require('ol.source.Stamen');
7goog.require('ol.source.TileWMS');
8
9function threeHoursAgo() {
10 return new Date(Math.round(Date.now() / 3600000) * 3600000 - 3600000 * 3);
11}
12
13var extent = ol.proj.transformExtent([-126, 24, -66, 50], 'EPSG:4326', 'EPSG:3857');
14var startDate = threeHoursAgo();
15var frameRate = 0.5; // frames per second
16var animationId = null;
17
18var 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];
33var 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
42function updateInfo() {
43 var el = document.getElementById('info');
44 el.innerHTML = startDate.toISOString();
45}
46
47function 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}
55setTime();
56
57var stop = function() {
58 if (animationId !== null) {
59 window.clearInterval(animationId);
60 animationId = null;
61 }
62};
63
64var play = function() {
65 stop();
66 animationId = window.setInterval(setTime, 1000 / frameRate);
67};
68
69var startButton = document.getElementById('play');
70startButton.addEventListener('click', play, false);
71
72var stopButton = document.getElementById('pause');
73stopButton.addEventListener('click', stop, false);
74
75updateInfo();