【发布时间】:2015-02-17 00:52:20
【问题描述】:
我正在使用 GeoJson 文件在 svg 对象上绘制 d3 地图多边形。
这样:
var g = svg.append("g")
.style("stroke-width", "1.5px");
d3.json(file, function (error, json) {
g.selectAll("path")
.data(json.features)
.enter()
.append("path")
.attr("class", function (d) {
return "subunit " + d.properties.id + " feature";
})
.attr("d", path)
.on("click", clicked);
});
举个例子,我们可以说这是用国家视图绘制英国地图。
我有一个 GeoJson 文件(文件 2),涵盖英格兰境内的地区。所以我有一个 clicked 函数,你可以看到我处理的是哪个 (.on("click", clicked)。在 clicked 函数中,我处理第二个 geojson 文件并尝试将它的所有多边形(这是它的区域)附加到英格兰国家。我在某处读到 svg 根据填充时间对元素进行排序。我一直在检查元素,我的区域元素肯定会在完整的英国地图元素之后出现。它们只是不会出现。
我试过的:
我尝试将前一个 svg 对象(英格兰)的不透明度设置为 0。我尝试完全删除它,但没有成功。新的多边形不会显示。这是我尝试添加它们的方式。
var region = svg.append("region");
d3.json(scope.json.england_regions, function (error, json) {
// Set the opacity of the England country to 0
d3.select("path").style("opacity", 0);
console.log(json);
region.selectAll("path")
.data(json.features)
.enter()
.append("path")
.attr("class", function (e) {
console.log(e);
return "region " + e.properties.id + " feature";
})
.attr("d", path)
.on("click", function (e) {
reset();
});
});
}
我一直在调试 geojson(第二个 geojson 文件)以确保它确实被填充。哎呀,如果我自己加载它,它工作正常。我可以看到英格兰地区文件中的所有多边形。
还有其他人遇到过这个问题吗?我已经尝试搜索一些类似的场景,但我似乎无法找到其他人试图这样做的地方。
【问题讨论】:
标签: javascript css svg d3.js geo