Last active
December 25, 2015 13:29
-
-
Save vanhoesenj/6984233 to your computer and use it in GitHub Desktop.
GSA - new
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<!DOCTYPE html> | |
<html> | |
<head> | |
<meta name="viewport" content="initial-scale=1.0, user-scalable=no" /> | |
<meta http-equiv="content-type" content="text/html; charset=UTF-8"/> | |
<title>CartoDB + Time</title> | |
<link rel="shortcut icon" href="http://cartodb.com/favicon/favicon_32x32.ico" /> | |
<link href="http://code.google.com/apis/maps/documentation/javascript/examples/default.css" rel="stylesheet" type="text/css" /> | |
<link rel="stylesheet" href="http://code.jquery.com/ui/1.10.3/themes/smoothness/jquery-ui.css"> | |
<link rel="stylesheet" href="examples/vendor/codemirror.css"> | |
<style> | |
a.cartodb_logo { | |
background: url("http://cartodb.s3.amazonaws.com/embed/embed_sprite.png") no-repeat scroll -61px 0 rgba(0, 0, 0, 0); | |
bottom: 30px; | |
display: block; | |
font-size: 0; | |
height: 27px; | |
left: 3px; | |
line-height: 0; | |
position: absolute; | |
text-indent: -9999px; | |
width: 69px; | |
} | |
#torque-slider { | |
position:absolute; | |
bottom:18px; | |
right:25px; | |
width:300px; | |
} | |
#torque-pause { | |
position:absolute; | |
bottom:12px; | |
right:345px; | |
width:28px; | |
height: 26px; | |
padding: 1px 2px 2px 2px; | |
z-index: 1000; | |
border-radius: 3px; | |
cursor: pointer; | |
background-color: white; | |
background-image: url(https://dl.dropboxusercontent.com/u/4100236/Share/Torque/play.png); | |
background-repeat:no-repeat; | |
background-position:center; | |
} | |
#torque-pause.playing { | |
background-color: white; background-image: url(https://dl.dropboxusercontent.com/u/4100236/Share/Torque/pause.png); background-repeat:no-repeat; background-position:center; | |
} | |
#torque-time { | |
position: absolute; | |
top: 100px; | |
left: 50%; | |
color: white; | |
font-size: 31px; | |
font-family: Georgia, serif; | |
} | |
body, #map_canvas { | |
height: 100%; | |
} | |
</style> | |
</head> | |
<body> | |
<div id="map_canvas"></div> | |
<textarea id="code"></textarea> | |
<div id="torque-slider"></div> | |
<a id="torque-pause" class="playing"></a> | |
<div id="torque-time"></div> | |
<a class="cartodb_logo" href="http://www.cartodb.com" target="_blank">CartoDB</a> | |
<script id="default-style" type="text/torque-cartocss"> | |
#layer { | |
marker-width: 6; | |
marker-fill: #FEE391; | |
[value > 2] { marker-fill: #FEC44F; } | |
[value > 3] { marker-fill: #FE9929; } | |
[value > 4] { marker-fill: #EC7014; } | |
[value > 5] { marker-fill: #CC4C02; } | |
[value > 6] { marker-fill: #993404; } | |
[value > 7] { marker-fill: #662506; } | |
[frame-offset = 1] { | |
marker-width: 6; | |
marker-fill-opacity: 0.05; | |
} | |
[frame-offset = 2] { | |
marker-width: 20; | |
marker-fill-opacity: 0.02; | |
} | |
} | |
</script> | |
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"></script> | |
<script type="text/javascript" src="http://code.jquery.com/ui/1.10.3/jquery-ui.js"></script> | |
<script type="text/javascript" src="http://maps.googleapis.com/maps/api/js?sensor=false&v=3.12"></script> | |
<script src="https://dl.dropboxusercontent.com/u/4100236/Share/Torque/leaflet.js"></script> | |
<script src="https://dl.dropboxusercontent.com/u/4100236/Share/Torque/underscore.js"></script> | |
<script src="https://dl.dropboxusercontent.com/u/4100236/Share/Torque/carto.js"></script> | |
<script src="https://dl.dropboxusercontent.com/u/4100236/Share/Torque/codemirror.js"></script> | |
<script src="https://dl.dropboxusercontent.com/u/4100236/Share/Torque/css.js"></script> | |
<script src="https://dl.dropboxusercontent.com/u/4100236/Share/Torque/torque.uncompressed.js"></script> | |
<script type="text/javascript" src="https://dl.dropboxusercontent.com/u/4100236/Share/Torque/dat.gui.min.js"></script> | |
<script type="text/javascript"> | |
var torqueLayer; | |
var state = location.hash ? JSON.parse(atob(location.hash.substring(1))): {}; | |
var DEFAULT_CARTOCSS = state.cartocss || $('#default-style').html(); | |
function init_torque(map, options) { | |
// init torque layer | |
torqueLayer = new torque.GMapsTorqueLayer(_.extend({ | |
user: 'vanhoesenj', | |
table: 'gsa', | |
column: 'date', | |
countby: 'count(cartodb_id)', | |
resolution: 4, | |
cumulative: true, | |
is_time: true, | |
steps: 500, | |
blendmode: 'source-over', | |
animationDuration: 90, | |
trails: true, | |
point_type :'circle', | |
map: map | |
}, options)); | |
torqueLayer.setMap(map); | |
torqueLayer.setCartoCSS(DEFAULT_CARTOCSS); | |
init_slider(torqueLayer); | |
torqueLayer.on('change:bounds', function(changes) { | |
var bounds = changes.bounds; | |
var b = new google.maps.LatLngBounds( | |
new google.maps.LatLng( | |
bounds[0][0], | |
bounds[0][1] | |
), | |
new google.maps.LatLng( | |
bounds[1][0], | |
bounds[1][1] | |
) | |
) | |
map.fitBounds(b); | |
}); | |
torqueLayer.play(); | |
} | |
function init_ui(map, torqueLayer) { | |
var TorqueOptions = _.clone(torqueLayer.options); | |
dat.GUI.DEFAULT_WIDTH = 0; | |
if (ui) { | |
ui.destroy(); | |
ui = null; | |
} | |
ui = new dat.GUI(); | |
ui.remember(TorqueOptions); | |
ui.add(TorqueOptions, 'user') | |
ui.add(TorqueOptions, 'table') | |
ui.add(TorqueOptions, 'column') | |
ui.add(TorqueOptions, 'is_time') | |
ui.add(TorqueOptions, 'countby') | |
ui.add(TorqueOptions, 'resolution', [1, 2, 4, 8, 16, 32]) | |
ui.add(TorqueOptions, 'steps', 10, 1024).listen() | |
ui.add(TorqueOptions, 'animationDuration', 5, 120).onChange(function(d) { | |
torqueLayer.animator.duration(d); | |
saveState(); | |
}); | |
ui.add({ | |
update: function() { | |
if (torqueLayer) { | |
torqueLayer.setMap(null); | |
torqueLayer.off('change:time'); | |
torqueLayer.off('change:bounds'); | |
torqueLayer = null; | |
} | |
init_torque(map, TorqueOptions); | |
saveState(); | |
} | |
}, 'update'); | |
if (!editor) { | |
var textarea = document.getElementById('code') | |
textarea.value = DEFAULT_CARTOCSS; | |
editor = CodeMirror.fromTextArea(textarea, { mode: "text/css" }); | |
editor.on('change', _.debounce(function() { | |
window.torqueLayer.setCartoCSS(editor.getValue()); | |
saveState(); | |
}, 500)) | |
} | |
editor | |
} | |
/** | |
* inits slider and a small play/pause button | |
*/ | |
function init_slider(torqueLayer) { | |
var torqueTime = $('#torque-time'); | |
$("#torque-slider").slider({ | |
min: 0, | |
max: torqueLayer.options.steps, | |
value: 0, | |
step: 1, | |
slide: function(event, ui){ | |
var step = ui.value; | |
torqueLayer.setStep(step); | |
} | |
}); | |
// each time time changes, move the slider | |
torqueLayer.on('change:time', function(changes) { | |
$("#torque-slider" ).slider({ value: changes.step }); | |
var month_year = changes.time.toString().substr(4).split(' '); | |
torqueTime.text(month_year[0] + " - " + month_year[2]); | |
}); | |
// play-pause toggle | |
$("#torque-pause").click(function(){ | |
torqueLayer.toggle(); | |
$(this).toggleClass('playing'); | |
}); | |
}; | |
function initialize() { | |
// initialise the google map | |
var map = new google.maps.Map(document.getElementById('map_canvas'), { | |
center: new google.maps.LatLng(38, -92), | |
zoom: 5, | |
mapTypeId: google.maps.MapTypeId.SATELLITE, | |
mapTypeControl: false, | |
minZoom: 5 | |
}); | |
// dark map style | |
var gmaps_style = [{ stylers:[ { invert_lightness: true }, { weight:1 }, { saturation:-100 }, { lightness:-40 } ] | |
}, { | |
elementType:"labels", | |
stylers:[ { visibility:"simplified" } ] | |
} | |
]; | |
map.setMapTypeId(google.maps.MapTypeId.ROADMAP); | |
map.setOptions({ styles: gmaps_style }); | |
init_torque(map, state.options); | |
} | |
window.onload = initialize; | |
</script> | |
</body> | |
</html> |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment