我正在绘制一张地图,D3.js从topojson文件中导入它。
为了绘制它,我使用以下代码:
d3.json(input_file, function(error, data) {
var units = topojson.feature(data, data.objects.countries),
view = d3.select("#map_view");
// ... SETUP OF THE PROJECTION AND PATH
view.selectAll("path")
.data(units.features)
.enter()
.append("path")
.attr("d", path);
}
此代码将绘制输入topojson文件中定义的所有形状。 现在我想删除一些我不需要的异常小岛,它们位于球坐标的指定区域。
由于现在units
对象定义了绘制的所有内容,我尝试按以下方式删除形状:
我在要素列表中找到国家/地区的索引,并在所需区域中找到弧的索引,并从数组中删除弧:
var coordinates = units.features[5].geometry.coordinates,
outlierId = 23;
coordinates.splice(outlierId, 1);
现在,当我检查这个国家的坐标数组时,我看到在排除区域中没有坐标的弧。
但它仍然在地图上绘制,尽管修改后的units
对象进入.data()
方法。看起来有关形状的信息来自其他地方。怎么会这样?