Skip to content

Instantly share code, notes, and snippets.

@KristinHenry
Created June 26, 2016 23:39
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save KristinHenry/83335000259b942258aec5c5749db92f to your computer and use it in GitHub Desktop.
Save KristinHenry/83335000259b942258aec5c5749db92f to your computer and use it in GitHub Desktop.
WWSD #6: d3.js projections
<!DOCTYPE html>
<head>
<meta charset="utf-8">
<script src="https://cdnjs.cloudflare.com/ajax/libs/d3/3.5.5/d3.min.js"></script>
<script src="//d3js.org/topojson.v1.min.js"></script>
<style>
body { margin:0;position:fixed;top:0;right:0;bottom:0;left:0; }
svg { width:100%; height: 100% }
</style>
</head>
<body>
<script>
var width = 960;
var height = 500;
var svg = d3.select("body").append("svg")
var projection = d3.geo.mercator()
.scale(width / 2 / Math.PI)
//.scale(100)
.translate([width / 2, height / 2])
// var projection = d3.geo.azimuthalEquidistant()
// .scale(50)
// .translate([width / 2, height / 2])
// .clipAngle(180 - 1e-3)
// .rotate([0, 25])
// .precision(.1);
function cylindrical(width, height) {
return d3.geo.projection(function(λ, φ) { return [λ, φ * 2 / width * height]; })
.scale(width / 2 / Math.PI)
.translate([width / 2, height / 2]);
}
var projection = cylindrical(width, height)
var path = d3.geo.path()
.projection(projection);
var url = "http://enjalot.github.io/wwsd/data/world/world-110m.geojson";
d3.json(url, function(err, geojson) {
svg.append("path")
.attr("d", path(geojson))
})
var point = projection([0,52])
svg.append('circle')
.attr({
cx: point[0],
cy: point[1],
r: 5,
fill: 'red'
})
//37.7749° N, 122.4194° W
var point2 = projection([-122.4194,37.7749])
svg.append('circle')
.attr({
cx: point2[0],
cy: point2[1],
r: 15,
fill: 'red'
})
</script>
</body>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment