我知道在 D3 中,尺度是从输入数据值(域)到输出数据值(范围)的数学映射。我知道我可以设置一个比例,将域的输入映射到一个范围,如下所示:
var scale = d3.scale.linear().domain([100, 500])
.range([10, 350]);
scale(100); //Returns 10
我知道一旦设置了比例,您就可以使用它来缩放属性,如下所示:
.attr("cx", function(d) {
return scale(d[0]); //Returns scaled value
})
然而,在博斯托克映射教程比例尺的使用略有不同。 Bostock 根据墨卡托投影返回的任何内容调用比例:
var projection = d3.geo.mercator()
.scale(500)
.translate([width / 2, height / 2]);
我试图理解那行代码,但遇到了一些麻烦。mercator()
返回一些东西——从 API 上看不太清楚——然后是scale
使用输入值 500 对该对象调用方法。
在这样的投影上称为“比例”是什么意思?这与将 100 转换为 10 的方式 scale() 有何关系——如上面的示例所示。
更直接的是,如果我将其添加到我的代码中,我的 geojson 地图就会消失!如何使其正确缩放?
var projection = d3.geo.mercator()
.scale(500)
.translate([width / 2, height / 2]);
var path = d3.geo.path()
.projection(projection); //if I add this little bit to the path, my map disappears!
这是我正在使用的 GeoJSON: