不能在D3旋转地球上绘制折线

时间:2016-06-03 02:35:41

标签: javascript d3.js

我正在尝试在Mike Bostock旋转地球上绘制折线路径并沿其设置圆形动画。到目前为止,我已经学会了如何沿多边形做到这一点,例如下面的示例中有一个沿俄罗斯边界行进的圆:http://jsfiddle.net/xqmevpjg/11/

使用与上述小提琴相同的代码,我尝试添加折线(例如亚洲的海上航线)。我的坐标插入如下:

{"type":"Feature","properties":{"name":"AsiaRoute"},"geometry":{"type":"polyline","coordinates":[[

[93.36182, 19.83325], 
[92.92236, 18.58833], 
[89.01123, 16.02932], 
[88.26416, 12.96642], 
[88.13232, 10.94591], 
[90.02197, 9.47548], 
[94.021, 9.43213], 
[94.72412, 12.2803], 
[97.36084, 12.62359], 
[97.49268, 11.42013], 
[96.70166, 9.17192], 
[96.43799, 6.99663], 
[98.41553, 5.86126], 
[99.38232, 4.54836], 
[100.12939, 3.23307]


]]},"id":"RML"}, 

然而,这不起作用。动画不会出现,甚至不会在地球上绘制路径。我唯一能做的就是如下:

(a)将折线更改为多边形,但是它将路径的开头连接到路径的末尾并混淆动画,或者

(b)再次将几何类型更改为多边形,但这次"镜像"坐标回到前面,这样我最终得到一个看起来像一条线的多边形。这会使不必要的坐标数量增加一倍,然后我被迫将路径长度除以2,以便动画在中途停止。

为什么我不能简单地根据需要绘制折线?请帮助:)

1 个答案:

答案 0 :(得分:1)

无论是GeoJSON还是TopoJSON,这些都是几何体的可接受值:

  • 多点
  • 线段形式
  • MULTILINESTRING
  • 多边形
  • 的MultiPolygon
  • 的GeometryCollection

因此,在您的情况下,请将polyline更改为LineStringMultiLineString

以下是GeoJSON的规范:http://geojson.org/geojson-spec.html#appendix-a-geometry-examples

对于TopoJSON:https://github.com/mbostock/topojson-specification/blob/master/README.md#22-geometry-objects