Viewing an older version of MapBox.js. Check out v1.5.0 for the latest.

Swipe Layers

Swipe between layers
drag
Select all
<!DOCTYPE html>
<html>
<head>
<meta charset=utf-8 />
<title>Swipe Layers</title>
  
  <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'>
  #swipe {
    background:#fff;
    position:absolute;
    bottom:0;
    left:0;
    right:0;
    z-index:1000;
    padding:10px;
    height:30px;
  }
  #swipe #handle {
    position:absolute;
    height:20px;
    padding:5px;
    background:#aaa;
    font-weight:bold;
    border:1px solid #333;
    cursor:pointer;
    -webkit-user-select: none;
  }
  .map-attribution {
    bottom: 50px;
  }
</style>
<div id='swipe'>
    <div id='handle'>drag</div>
</div>
<div id='map'></div>
<script>
  var map = mapbox.map('map'),
      layers = document.getElementById('layers');

  map.addLayer(mapbox.layer().id('examples.map-a1dcgmtr').composite(false));
  map.addLayer(mapbox.layer().id('examples.map-20v6611k').composite(false));
  map.zoom(3);
  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(300);
</script>
The code and documentation to mapbox.js is hosted on GitHub where you can contribute changes and improvements.