基于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/