javascript - D3 - 带有自定义 json 的 map

标签 javascript json d3.js polygon

我想使用从网络服务获取的 json 来绘制自定义 map ,因此不在文件中。

json 可能看起来像这样

{
    "areas" : [
        {
            "name" : "A",
            "borders" : [[4,50], [4.5,51],...],
            "otherProperty" : "red"
        },
        {
            "name" : "B",
            "borders" : [[3,48] , [3.5,49],...],
            "otherProperty" : "yellow"
        }
    ]
}

边界将绘制一个多边形,作为该区域的边界。

是否可以使用这样的Json来绘制 map ?如果需要我可以更改 json

如何使用这个 json 而不是文件?

 d3.json("myFile.json", function(error, data) {...}

编辑

可以直接使用

g.selectAll('path')
.data(data.areas)

但没有显示任何内容,也没有错误

编辑2

我对点使用 ConicConformal 坐标

[181096,163474],[180722,164173],[180280,164925],

编辑3

这是一个不工作的JSFiddle

最佳答案

我不确定我是否明白您问题的要点。

无论 json 来自文件还是来自网络服务器,您都可以在 d3.json 调用中给出路径或 uri。或者,正如您在编辑中发布的那样,您可以直接使用该变量。

您提供的结构可以毫无问题地使用。

我假设您使用的是 D3 v3。 Here你可以在API文档中找到相应的部分。使用this tutorial关于我创建的 svg 路径 a jsfiddle它显示具有给定 json 结构的多边形(我更改了数字以获得更明显的结果)。

以下函数负责获取您在生成将用作多边形边界的路径时所提供的数据的正确部分。

var lineFunction = d3.svg.line()
                     .x(function(d) { return d[0]; })
                     .y(function(d) { return d[1]; })
                     .interpolate("linear");

这就是将其传递给行生成器的方式:

.attr("d",function(d) {return lineFunction(d.borders);})

请参阅上面链接的 fiddle 以获取完整的代码。

关于javascript - D3 - 带有自定义 json 的 map ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39406538/

相关文章:

javascript - 当一个类添加到另一个div中时如何模糊一个div?

javascript - 使用对象数组编辑方法

javascript - 跨多个文件的 Javascript 中的全局变量

javascript - 如何计算 Json 中的不同值

javascript - 来自 d3.stack() 的 d3,max 给出了错误的最大值

javascript - 文本相对于 SVG 中的父 G 右对齐

javascript - 如何从 d3 导入子模块以轻松创建图例?

Javascript - 如何在循环中查找不匹配?

json - 如何使用DSL在Elasticsearch中检查JSON对象是否具有 key ?

java - 设置bean进行序列化