Javascript 在d3.js中绘制点之间的直线
我正在尝试使用d3.js在绘制的点之间绘制线 示例geojson(3行字符串的FeatureCollection): 现有完整代码: 我对代码块有问题:Javascript 在d3.js中绘制点之间的直线,javascript,d3.js,polymaps,Javascript,D3.js,Polymaps,我正在尝试使用d3.js在绘制的点之间绘制线 示例geojson(3行字符串的FeatureCollection): 现有完整代码: 我对代码块有问题: lines.append("g").selectAll("path") .data(d3.entries(data.features)).enter() .append("svg:path") .attr("d", path) 圆圈正在出现,但不是将它们连接在一起的线 任何帮助都将不胜感激 错误1: 在topojson中 {
lines.append("g").selectAll("path")
.data(d3.entries(data.features)).enter()
.append("svg:path")
.attr("d", path)
圆圈正在出现,但不是将它们连接在一起的线
任何帮助都将不胜感激 错误1:
在topojson中
{
"geometry": {
"type": "LineString",
"coordinates": [
[
103.79971,
1.3013115
],
[
103.8071998,
1.2932586
]
]
},
"type": "Feature",//this is wrong
"properties": {}
}
应该是:
{
"geometry": {
"type": "LineString",
"coordinates": [
[
103.79971,
1.3013115
],
[
103.8071998,
1.2932586
]
]
},
"properties": {}
}
错误2:
lines.append("g").selectAll("path")
.data(d3.entries(data.features)).enter()
.append("svg:path")
.attr("d", path)
.style("fill", "none")
.style("stroke-width", "2px")
您不能创建这样的行,要创建行,您必须使用一个层,并向其中添加这样的功能(注意这些功能来自test.geojson):
完整的工作代码。谢谢cyril!这帮了大忙!但问题是!为什么不能像在正常的d3图形中那样添加行(使用enter、exit)呢?似乎如果我想要地图上的线条,它们必须作为一个附加层引入(我认为这只适用于地形层、形状文件等)。geojson中的错误很奇怪,我使用python中的geojson包创建geojson文件。从示例代码中,有一个FeatureCollection示例(虽然没有使用LineString),这似乎是类似的。与问题相关,但更多的是数据格式:将线的点放在1 LineString而不是3(当前示例数据)中是否更昂贵/更有意义如果点是针对单个组/用户的。@iukie是的,错误2下所示的添加线不起作用的原因是该线没有给出起始和结束位置,可能很难获得该点。(当地图缩放和平移时,您将不得不处理平移+比例)因此,最好的方法是使用图层并将功能传递给它。我认为在D3中不可能实现同样的效果……最好也使用geojson文件通过层处理这些点。这将是一本好书
d3.json("test.geojson", function(data) {
layer1.features(data.features);//adding the features to the layer
map.add(layer1);