使用d3.js和geojson文件绘制完整的世界地图时遇到问题。我使用的文件是https://gist.github.com/phil-pedruco/10447085,在这里您可以看到所有国家/地区都正常显示,但是当我尝试渲染时,我会获得除阿根廷以外的所有国家/地区。我也尝试过使用这些文件:https://github.com/rusanu/geodata-rails/tree/master/vendor/assets/javascripts。这里的110m文件给了我相同的结果(没有阿根廷),但是50m文件显示了整个地图,除了它太详细了,我宁愿使用另一个文件。我已经将代码简化为只绘制地图的路径,看看我的代码中是否有任何错误,但结果是相同的...这是绘制地图的简化代码:
var projection = d3.geo.mercator()
.center([0, 40])
.scale(200)
.rotate([0, 0]);
var path = d3.geo.path()
.projection(projection);
var width = 2000;
var height = 2000;
queue()
.defer( d3.json,"world-110m.json")
.await(ready);
function ready(error,world) {
// console.log(world)
makeMap(world);
}
function makeMap(world){
var svg = d3.select("#map").append("svg")
.attr("width", width)
.attr("height", height);
var g = svg.append("g");
svg.selectAll("path")
.data(world.features)
.enter()
.append("path")
.attr("d", path)
.attr("stroke","black")
.attr("fill","white");
}
有谁知道问题可能是什么,以及如何解决问题的解决方案?非常感谢帮助:))
编辑:在尝试了一大堆不同的东西后,我注意到如果我指定"填充:无",阿根廷突然被勾勒出来,但是一旦我指定填充颜色,它就会消失。 ..还不知道为什么会这样 - ---
答案 0 :(得分:0)
每当你看到这种行为(一个国家只通过笔画而不是通过填充显示)时,它通常表示多边形已被翻过来的地理数据损坏(它填充了所有周围的一切多边形边框)。您需要将数据集带入GIS并尝试修复它。在这种情况下,它实际上不是阿根廷,而是百慕大被腐蚀。您可以删除百慕大,它似乎工作正常,或尝试修复GIS应用程序中的地理数据。
阿根廷似乎失踪的原因是因为堕落的百慕大被吸引到阿根廷(以及其他国家)之上。