Skip to content

Instantly share code, notes, and snippets.

@osoken
Last active February 6, 2016 10:07
Show Gist options
  • Save osoken/a43c0a2b5de3b29bc284 to your computer and use it in GitHub Desktop.
Save osoken/a43c0a2b5de3b29bc284 to your computer and use it in GitHub Desktop.
japan.topojson with labels

Yuichi Yazaki 作の日本の topojson。 各 feature の中点に、県名を示すラベルを表示した。

使用しているデータのリポジトリ: https://github.com/dataofjapan/land

データの出典元:地球地図日本

<!DOCTYPE html>
<meta charset='utf-8'>
<script src='https://d3js.org/d3.v3.min.js'></script>
<script src='https://d3js.org/topojson.v1.min.js'></script>
<body>
<div id='map_canvas' style='position:absolute'></div>
<script>
var map={};
map.width = 960;
map.height = 500;
map.scale = 862.5420350331074;
map.translate = [-1607.5029017610468, 824.1369223542354];
map.zoom = d3.behavior.zoom();
map.zoomed = function()
{
map.translate = map.zoom.translate();
map.scale = map.zoom.scale();
map.draw();
}
map.zoom.on('zoom',map.zoomed);
map.zoom.translate(map.translate);
map.zoom.scale(map.scale);
map.canvas = d3.select('#map_canvas')
.append('svg')
.attr('width', map.width)
.attr('height',map.height)
.call(map.zoom);
map.draw = function()
{
map.projection.scale(map.scale);
map.projection.translate(map.translate);
map.canvas.selectAll('path')
.attr('d',map.path);
map.prefectures.forEach(function(d)
{
d.centroid = map.path.centroid(d);
});
map.canvas.selectAll('text')
.style('font-size', (map.scale*0.004))
.attr('x', function(d){return d.centroid[0];})
.attr('y', function(d){return d.centroid[1];});
}
d3.json('/osoken/raw/b8e5859295757bb2ec5b/japan.topojson',function(error,data)
{
if (error)
{
console.log(error);
return;
}
map.canvas.append('rect')
.attr('x',0).attr('y',0).attr('height',map.height).attr('width',map.width).attr('fill','#F8F8F8');
map.prefectures = topojson.feature(data, data.objects.japan).features;
map.projection = d3.geo.mercator()
.scale(map.scale)
.translate(map.translate);
map.path = d3.geo.path().projection(map.projection);
map.prefectures.forEach(function(d)
{
d.centroid = map.path.centroid(d);
});
map.layer = map.canvas.append('g')
.attr('class', 'prefectures');
map.layer.selectAll('path')
.data(map.prefectures)
.enter().append('path')
.style('fill', '#ccc')
.style('stroke', '#888')
.style('stroke-width', '1.2px')
.attr('d', map.path);
map.layer.selectAll('text')
.data(map.prefectures)
.enter().append('text')
.attr('x', function(d){return d.centroid[0];})
.attr('y', function(d){return d.centroid[1];})
.attr('text-anchor', 'middle')
.style('font-family', 'sans-serif')
.style('font-size', (map.scale*0.004))
.text(function(d){return d.properties.nam_ja;});
map.draw();
});
</script>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment