D3
OG
Old school D3 from simpler times
All examples
By author
By category
About
mbostock
Full window
Github gist
Tile Viewer
<!DOCTYPE html> <meta charset="utf-8"> <style> body { margin: 0; } .map { position: relative; overflow: hidden; } .tiles { position: absolute; } .tile { pointer-events: none; position: absolute; width: 256px; height: 256px; border-top: solid 1px red; border-left: solid 1px red; font: 13px sans-serif; padding: 10px; box-sizing: border-box; } </style> <body> <script src="//d3js.org/d3.v3.min.js"></script> <script src="d3.geo.tile.min.js"></script> <script> var width = Math.max(960, window.innerWidth), height = Math.max(500, window.innerHeight), transform = ["", "-webkit-", "-moz-", "-ms-", "-o-"].reduce(function(p, v) { return v + "transform" in document.body.style ? v : p; }) + "transform"; var tiler = d3.geo.tile() .size([width, height]); var projection = d3.geo.mercator(); var zoom = d3.behavior.zoom() .scale(1 << 12) .scaleExtent([1 << 9, 1 << 23]) .translate([width / 2, height / 2]) .on("zoom", zoomed); var map = d3.select("body").append("div") .attr("class", "map") .style("width", width + "px") .style("height", height + "px") .call(zoom); var tileContainer = map.append("div") .attr("class", "tiles"); zoomed(); function zoomed() { var tiles = tiler .scale(zoom.scale()) .translate(zoom.translate()) (); projection .scale(zoom.scale() / 2 / Math.PI) .translate(zoom.translate()); var tile = tileContainer .style(transform, matrix3d(tiles.scale, tiles.translate)) .selectAll(".tile") .data(tiles, function(d) { return d; }); tile.exit() .remove(); tile.enter().append("div") .attr("class", "tile") .style("left", function(d) { return (d[0] << 8) + "px"; }) .style("top", function(d) { return (d[1] << 8) + "px"; }) .text(function(d) { return d.join("/"); }); } function matrix3d(scale, translate) { var k = scale / 256, r = scale % 1 ? Number : Math.round; return "matrix3d(" + [k, 0, 0, 0, 0, k, 0, 0, 0, 0, k, 0, r(translate[0] * scale), r(translate[1] * scale), 0, 1] + ")"; } </script>
https://d3js.org/d3.v3.min.js