1

在看了“让我们制作地图”(很好的教程!)之后,我决定制作我们省的地图并为该省的所有市镇着色。我做了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>
4

1 回答 1

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_CODEGM0003(例如)。如果您添加 GeoJSON 文件的示例,我可以在此处更新确切的代码。

于 2013-07-29T01:23:03.933 回答