Javascript 从D3中的贴图中删除形状
我正在用D3.js从topojson文件导入地图 为了绘制它,我使用以下代码:Javascript 从D3中的贴图中删除形状,javascript,map,d3.js,topojson,Javascript,Map,D3.js,Topojson,我正在用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")
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);
现在,当我检查这个国家的坐标数组时,我没有看到坐标位于排除区域的弧
但它仍然绘制在地图上,尽管修改的单位对象进入.data方法。看起来有关形状的信息来自其他地方。怎么可能呢?几乎可以肯定,在用D3加载数据之前,修改数据会更容易。是的,我想是这样,一旦确定了弧索引。但我更喜欢以编程方式进行,特别是当地图更新为其他更详细的版本时,例如。我仍然想理解为什么修改.data方法的输入不会改变输出。如果没有一个完整的例子,很难说发生了什么。