rveciana - d3-tutorial-iii-projection-transition

D3 tutorial III: Projection transition

Open raw page in new tab

This example belongs to the presentation made to the OSGeo local group in Barcelona Geoinquiets The example is an adaptation from Mike Bostock’s Symbol Map example

<!DOCTYPE html>
<meta charset="utf-8">
<style>

.states {
  fill: #ccc;
  stroke: #fff;
}
</style>
<body>
<button type="button" id="change">Change</button>

<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 states;
var projection = d3.geo.mercator()
    .center([-97,37])
    .scale(4000 / 2 / Math.PI)
    .translate([width / 2, height / 2]);


var path = d3.geo.path()
.projection(projection);

var svg = d3.select("body").append("svg")
    .attr("width", width)
    .attr("height", height);

d3.json("/mbostock/raw/4090846/us.json", function(error, us) {
   states = svg.append("path")
      .attr("class", "states")
      .datum(topojson.object(us, us.objects.states))
      .attr("d", path);

  
});

d3.select("#change").on("click", function() {
  projection = d3.geo.albers();
path.projection(projection);
states.transition()
      .duration(10000)
      .attr("d", path);
});


</script>