Skip to content

Instantly share code, notes, and snippets.

@vanhoesenj
Last active December 25, 2015 13:29
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save vanhoesenj/6984233 to your computer and use it in GitHub Desktop.
Save vanhoesenj/6984233 to your computer and use it in GitHub Desktop.
GSA - new
<!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