d3.geoPath(投影)不起作用

时间:2017-04-08 18:45:20

标签: javascript d3.js geo

我正在研究Mike Bostock的代码(d3 v4):https://bl.ocks.org/mbostock/4136647。另外,在jsfiddle中如果你想运行它:https://jsfiddle.net/r3bxmhLe/

在此代码中,他没有使用任何明确的投影。

var path = d3.geoPath();

但是我需要使用显式投影,因为我必须将一些long,lat转换为x,y。我想使用相同的投影来绘制地图。所以我想把上面一行改为:

var proj = d3.AlbersUsa();
var path = d3.geoPath(proj);

我也试过

var proj = d3.AlbersUsa();
var path = d3.geoPath().projection(proj);

这会产生大量随机线而不是地图。因此,预测不起作用。我错过了什么?

请注意,当我执行proj([long, lat])

时,上述投影可以正常工作

1 个答案:

答案 0 :(得分:0)

问题是,您正在使用topJSON,如果您将其他任何内容传递给它,则将它与geoPath方法一起使用,这会使项目变得一团糟。

我碰到了

似乎默认的投影是 const projection = d3.geoAlbersUsa()。scale(1280).translate([480,300]);

具有d3默认topoJSON。