This example shows how to create the drop shadow effect in a map using Canvas.
Since the Canvas object already has the tools to do that, the code is really simple.
| <!DOCTYPE html> | |
| <meta charset="utf-8"> | |
| <body> | |
| <script src="http://d3js.org/d3.v3.min.js"></script> | |
| <script src="http://d3js.org/topojson.v0.min.js"></script> | |
| <script> | |
| var width = 960, | |
| height = 500; | |
| var projection = d3.geo.mercator() | |
| .scale(800) | |
| .rotate([80, -20, 0]); | |
| var canvas = d3.select("body").append("canvas") | |
| .attr("width", width) | |
| .attr("height", height); | |
| var context = canvas.node().getContext("2d"); | |
| var path = d3.geo.path() | |
| .projection(projection) | |
| .context(context); | |
| d3.json("https://cdn.rawgit.com/mbostock/4090846/raw/8a7f176072d508218e120773943b595c998991be/world-50m.json", function(error, data) { | |
| var land = topojson.object(data, data.objects.land); | |
| context.fillStyle='#ccc'; | |
| context.strokeStyle = '#aaa'; | |
| context.save(); | |
| context.beginPath(); | |
| context.shadowBlur=5; | |
| context.shadowColor='#000'; | |
| context.shadowOffsetX=5; | |
| context.shadowOffsetY=5; | |
| path(land); | |
| context.fill(); | |
| context.restore(); | |
| context.stroke(); | |
| }); | |
| </script> |