Javascript 在d3.js中绘制点之间的直线

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中 {

我正在尝试使用d3.js在绘制的点之间绘制线

示例geojson(3行字符串的FeatureCollection):

现有完整代码:

我对代码块有问题:

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);