在SVG中拟合D3贴图

时间:2019-05-21 02:21:56

标签: d3.js svg

在这个jsfiddle中,我有一个从here拍摄的D3贴图,但我正尝试将其放入原来大小的一半的svg中。为此,我更改了:

var width = 480;
var height = 300;
.....
var path = d3.geoPath(d3.geoIdentity().translate([width/2, height/2]).scale(height*.5));

但是它不起作用。如何使地图适合svg?

1 个答案:

答案 0 :(得分:1)

D3的geoIdentity几乎公开了d3投影的所有标准方法(在我的头顶上,由于身份假定为笛卡尔数据,因此只能旋转)。在这里最重要的是,它公开了fitSize和fitExtent方法。这些方法根据显示的geojson数据的坐标范围和svg / canvas的像素范围来设置转换和缩放。

要使用地理标识来缩放要素,可以使用:

d3.geoIdentity().fitSize([width,height],geojsonObject)

请注意,geojson特征数组不起作用,但是geojson特征集合或任何单个特征/几何对象也可以工作。宽度和高度是svg /画布的大小。

如果要应用边距,可以使用:

d3.geoIdentity().fitExtent([[margin,margin],[width-margin,height-margin]],geojsonObject)

页边距不需要统一,格式为[[left,top],[right,bottom]],geojsonObject

如果使用fitSize或fitExtent,则无需设置中心,手动平移或缩放比例,然后再进行设置即可更新或重新缩放地图。