D3.js多个GeoJSON对象

3

我想要在两个GeoJSON对象之间进行过渡,但是一直无法找到关于如何包含多个GeoJSON文件的信息。我对最终转换结果感到满意,但是找不到任何关于多个GeoJSON文件的信息。

我目前可以这样绘制一个地图:

d3.json("goldatt2.json", function (data) {

    var group = canvas.selectAll("g")
        .data(data.features)
        .enter()
        .append("g")

    var path = d3.geo.path().projection(d3.geo.equirectangular());

    var areas = group.append("path")
        .attr("d", path)

我该如何更改这个代码,以便调用两个GeoJSON文件并进行转换?

我发现了这个例子:http://bl.ocks.org/mbostock/3081153,但在这个例子中,只有一个GeoJSON对象被转换成了圆形。


对于第二个GeoJSON,模式几乎相同,只是需要处理更新选择。也就是说,将第一个中的路径转换为第二个中的路径。就加载GeoJSON而言,您需要完全相同的操作。 - Lars Kotthoff
1个回答

0

获取数据和转换数据是两个独立的任务。

因此,您可以理论上使用多个ajax调用来获取所需的数据,在决定对该数据执行任何操作之前。

Mike Bostock为此目的实现了队列。如果您正在使用D3的JQuery,则可以查看Deferred,此处有一个示例here

一旦您拥有所需的数据集,您现在可以决定如何转换数据或在它们之间提供转换效果。

伪代码:

var files = ["file1.json", "file2.json"];

//Fetch Data for both files and create a data set object of this format
var dataset = {
    "file1.json": {/*geojson data for file1*/},
    "file2.json": {/*geojson data for file2*/}
}

for(var item in dataset) {
    var data = dataset[item];
    //Do whatever transformation you need
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接