Skip to content

Instantly share code, notes, and snippets.

@maning
Last active December 21, 2015 20:29
Show Gist options
  • Save maning/6361454 to your computer and use it in GitHub Desktop.
Save maning/6361454 to your computer and use it in GitHub Desktop.
Compare OSM
<!DOCTYPE html>
<html>
<head>
<script src='http://api.tiles.mapbox.com/mapbox.js/v0.6.7/mapbox.js'></script>
<link href='http://api.tiles.mapbox.com/mapbox.js/v0.6.7/mapbox.css' rel='stylesheet' />
<style>
body { margin:0; padding:0; }
#map { position:absolute; top:0; bottom:0; width:100%; }
</style>
</head>
<body>
<style type='text/css'>
body {
font:20px/20px 'Helvetica Neue',sans-serif;
background:#f2efe9;
}
#swipe {
background:#222;
position:absolute;
bottom:0;
left:0;
right:0;
z-index:1000;
padding:10px;
height:30px;
}
#swipe #handle {
position:absolute;
height:20px;
padding:5px;
background:#fff;
font-weight:bold;
border:1px solid #333;
color:blue;
cursor:pointer;
-webkit-user-select: none;
}
.map-attribution {
bottom: 50px;
}
#osm1 {
position:absolute;
left:10px;
top:0px;
z-index:99;
}
#osm2 {
position:absolute;
right:10px;
top:0px;
z-index:99;
}
</style>
<div id='swipe'>
<div id='handle'>drag</div>
</div>
<div id='map'></div>
<h1 id='osm1'>After</h1>
<h1 id='osm2'>Before</h1>
<script>
var map = mapbox.map('map'),
layers = document.getElementById('layers');
map.setZoomRange([5,17])
map.addLayer(MM.TemplatedLayer('http://map.fosm.org/default/{Z}/{X}/{Y}.png'));
map.addLayer(MM.TemplatedLayer('http://tile.openstreetmap.org/{Z}/{X}/{Y}.png'));
map.zoom(12).center({ lat: 14.9509, lon: 120.6205 });
map.ui.hash.add();
map.ui.attribution.add()
.content('<a href="http://mapbox.com/about/maps">Terms &amp; Feedback</a>');
var l_parent = map.getLayerAt(1).parent,
handle = document.getElementById('handle'),
dragging = false;
handle.onmousedown = function() { dragging = true; return false;}
document.onmouseup = function() { dragging = false; }
document.onmousemove = function(e) {
if (!dragging) return;
setDivide(MM.getMousePoint(e, map).x);
}
function setDivide(x) {
x = Math.max(0, Math.min(x, map.dimensions.x));
handle.style.left = (x - 20) + 'px';
l_parent.style.clip = 'rect(0px ' + x + 'px 9999999px 0px)';
}
setDivide(400);
</script>
</body>
</html>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment