我正在研究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])
时,上面的投影工作正常
问题是你正在使用topJSON,它专门用于geoPath方法,如果你传递任何其他东西,你加倍的项目得到混乱。
我碰到了这个
似乎默认投影是const projection = d3.geoAlbersUsa()。scale(1280).translate([480,300]);
使用d3默认topoJSON。