基于d3(版本1.4)文档https://github.com/d3/d3-geo/blob/master/README.md#geoProjection,应将d3投影设置为null以使用数据的原始坐标。如果使用null投影看起来正确,如何缩放?这是代码:

var path = d3.geoPath()
    .projection(null)
    .context(context);

bands.features.forEach(function(d, i) {
  context.beginPath();
  context.fillStyle = colors[i];
  context.globalAlpha = .5;
  path(d);
  context.fill();
});

我尝试定义自己的投影,但投影看起来不正确。这是代码
var project = d3.geoProjection(function(x,y){
    return [x,y]
});

var path = d3.geoPath()
    .projection(project)
    .context(context);

最佳答案

我将看一下d3.geoTransform,它比d3.projection更适合于显示已经投影的笛卡尔数据。来自Mike Bostock:

要查看比我在这里可以做的更好的示例(并阅读引言的其余部分),请参见this Bl.ock
例如,对于您的情况,您可以使用类似:

    function scale (scaleFactor) {
        return d3.geoTransform({
            point: function(x, y) {
                this.stream.point(x * scaleFactor, y  * scaleFactor);
            }
        });
    }

    path = d3.geoPath().projection(scale(2));

至于为什么显示自定义投影
var project = d3.geoProjection(function(x,y){
return [x,y] });
我不知道更改/扭曲投影(测试此答案的结果相似),但是如果此投影的输出可用,则可以轻松缩放:
var project = d3.geoProjection(function(x,y){
return [x,y] }).scale(1000);

关于javascript - 需要使用d3 geoPath.projection(null)缩放已经投影的数据,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/41229756/

10-16 00:29