Navigation Menu

Skip to content

Instantly share code, notes, and snippets.

@slattery
Forked from HarryStevens/.block
Last active April 16, 2019 13:32
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 slattery/f9dd8701765c95d607b8ab8a6e5f7bc9 to your computer and use it in GitHub Desktop.
Save slattery/f9dd8701765c95d607b8ab8a6e5f7bc9 to your computer and use it in GitHub Desktop.
World Tour
license: gpl-3.0
<!DOCTYPE html>
<meta charset="utf-8">
<style>
h1 {
position: absolute;
top: 134px;
font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
font-size: 18px;
font-weight: 400;
text-align: center;
text-shadow: 1px 1px 1px rgba(255,255,255,1), 1px 1px 2px rgba(255,255,255,.4), -0.5px -0.5px 1px rgba(255,255,255,1), -1px -1px 2px rgba(255,255,255,.4);
width: 240px;
}
</style>
<h1></h1>
<script src="https://d3js.org/d3.v3.min.js"></script>
<script src="https://d3js.org/queue.v1.min.js"></script>
<script src="https://d3js.org/topojson.v1.min.js"></script>
<script>
var width = 240,
height = 240;
var projection = d3.geo.orthographic()
.translate([width / 2, height / 2])
.scale(width / 2 - 20)
.clipAngle(90)
.precision(0.6);
var canvas = d3.select("body").append("canvas")
.attr("width", width)
.attr("height", height);
var c = canvas.node().getContext("2d");
var path = d3.geo.path()
.projection(projection)
.context(c);
var title = d3.select("h1");
queue()
.defer(d3.json, "world-110m.json")
.defer(d3.tsv, "world-country-names.tsv")
.await(ready);
function ready(error, world, names) {
if (error) throw error;
var globe = {type: "Sphere"},
land = topojson.feature(world, world.objects.land),
countries = topojson.feature(world, world.objects.countries).features,
borders = topojson.mesh(world, world.objects.countries, function(a, b) { return a !== b; }),
i = -1,
n = countries.length;
countries = countries.filter(function(d) {
return names.some(function(n) {
if (d.id == n.id) return d.name = n.name;
});
}).sort(function(a, b) {
return a.name.localeCompare(b.name);
});
(function transition() {
d3.transition()
.duration(1250)
.each("start", function() {
title.text(countries[i = (i + 1) % n].name);
})
.tween("rotate", function() {
var p = d3.geo.centroid(countries[i]),
r = d3.interpolate(projection.rotate(), [-p[0], -p[1]]);
return function(t) {
projection.rotate(r(t));
c.clearRect(0, 0, width, height);
c.fillStyle = "#ddd", c.beginPath(), path(land), c.fill();
c.fillStyle = "#196ea4", c.beginPath(), path(countries[i]), c.fill();
c.strokeStyle = "#fff", c.lineWidth = .5, c.beginPath(), path(borders), c.stroke();
c.strokeStyle = "#ccc", c.lineWidth = 1, c.beginPath(), path(globe), c.stroke();
};
})
.transition()
.each("end", transition);
})();
}
d3.select(self.frameElement).style("height", height + "px");
</script>
Display the source blob
Display the rendered blob
Raw
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
id name
12 Algeria
36 Australia
50 Bangladesh
76 Brazil
84 Belize
104 Myanmar
108 Burundi
112 Belarus
116 Cambodia
120 Cameroon
140 Central African Republic
170 Colombia
180 Congo (DRC)
188 Costa Rica
214 Dominican Republic
218 Ecuador
222 El Salvador
231 Ethiopia
232 Eritrea
266 Gabon
288 Ghana
320 Guatemala
324 Guinea
328 Guyana
332 Haiti
340 Honduras
356 India
360 Indonesia
388 Jamaica
418 Lao PDR
450 Madagascar
454 Malawi
458 Malaysia
484 Mexico
508 Mozambique
524 Nepal
558 Nicaragua
562 Niger
566 Nigeria
591 Panama
598 Papua New Guinea
604 Peru
608 Philippines
630 Puerto Rico
646 Rwanda
686 Senegal
702 Singapore
706 Somalia
710 South Africa
728 South Sudan
764 Thailand
768 Togo
834 Tanzania UR
840 United States
862 Venezuela BR
894 Zambia
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment