我是非常新的d3.js,所以我道歉,如果这是一个愚蠢的问题。
当迭代一个geojson FeatureCollection列表时,我想改变每个项目的投影。这可能吗?
我的代码看起来像这样:
var width = 200,
var height = 200;
var svg = d3.select('#content g.map')
.append("svg")
.attr("width", width)
.attr("height", height);
var projection = d3.geoAlbers()
.fitExtent(
[
[0, 0],
[width, height],
],
features
);
let geoGenerator = d3.geoPath().projection(projection)
var group = svg.append('g');
group.selectAll('path')
.data(geojson.features)
.enter()
.append('path')
.attr('d', geoGenerator)
.attr('stroke-width', '3')
.attr('stroke', 'black')
.attr('fill', 'none');
我使用了geoAlbers()和.fitExtend(),其中我的投影是根据geojson文件中的所有元素绘制的,但是我想为每个元素单独绘制。
我的目标是创建一个数组中每个元素大小相同的绘图。任何帮助都将不胜感激!
1条答案
按热度按时间xzabzqsa1#
您可以使用
projection.fitSize
或projection.fitExtent
来修改投影,使其投影geojson特征来填充指定的边界框。通常这些方法用于特征集合或单个特征,但没有理由我们不能对每个特征都使用它。下面的代码片段使用
g
元素(每个特征一个)进行定位,然后附加路径,并通过使用selection.each(),使用projection.fitSize()计算所需的投影参数,以使特征边界框具有正确的大小(每个边界框为size
像素的正方形)。第一个