block by rveciana 5181026

D3 tutorial III: Projection transition

Full Screen

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

index.html

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

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

<script src="//d3js.org/d3.v3.min.js"></script>
<script src="//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>