看了"Let's make a map"(很好的教程!)后,我决定制作一个省的地图,并为该省的所有市政府上色。我做了shapefile的工作,并成功地将整个省投影为黑色。你能帮助理解svg.selectAll(“。subunit”)函数,这样我可以改变它来从我的geojson文件中提取GM_CODE吗?如果需要,我可以发送geojson文件。
<!DOCTYPE html>
<meta charset="utf-8">
<style>
.GM_CODE.GM0003 { fill: #ddc; }
.GM_CODE.GM0005 { fill: #cdd; }
.GM_CODE.GM0007 { fill: #cdc; }
.GM_CODE.GM0009 { fill: #dcd; }
</style>
<body>
<script src="http://d3js.org/d3.v3.min.js"></script>
<script src="http://d3js.org/topojson.v1.min.js"></script>
<script>
var width = 960,
height = 640;
var projection = d3.geo.albers()
.center([0, 53.2])
.rotate([-6.5, 0])
.parallels([50, 60])
.scale(40000)
.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("groningen.json", function(error, json) {
svg.selectAll(".subunit")
.data(topojson.feature(json, json.objects.gemeente).features)
.enter.append("path")
.attr("class", function(d) { return "GM_CODE " + d.GM_CODE; })
.attr("d", path);
});
</script>
答案 0 :(得分:0)
首先,如果您使用的是GeoJSON文件,则应直接使用这些功能。
svg.selectAll('.subunits')
.data(json.features)
.enter()
.append('path')
.attr('class', function(d) { return 'GM_CODE ' + d.properties.GM_CODE; })
.attr('d', path);
假设您的要素属性具有属性GM_CODE
,您可以使用此代码分配类GM_CODE
和GM0003
(例如)。如果您添加GeoJSON文件的示例,我可以在此更新确切的代码。