Path D3 Geo-albers美国地图错误显示波多黎各和弗吉尼亚

Path D3 Geo-albers美国地图错误显示波多黎各和弗吉尼亚,path,d3.js,geo,Path,D3.js,Geo,无法在D3中显示干净的美国各州地理地图 我从你那里复制了准确的代码 还从下载了us-states.json 在CentOS上的firefox中,我看到了一个蓝色的大钢框,它覆盖了整个svg元素,而不是单个状态 最终发现d3.v3.js不支持波多黎各,因此删除了us-states.josn文件中包含波多黎各描述的最后一行 还有一个大的钢盒子;遍历html显示对应于Virginia的path元素也显示了一个横跨整个SVG元素的大方形钢蓝色框 添加的样式(“不透明度”,函数(d){if(d.prope

无法在D3中显示干净的美国各州地理地图

  • 我从你那里复制了准确的代码 还从下载了us-states.json

  • 在CentOS上的firefox中,我看到了一个蓝色的大钢框,它覆盖了整个svg元素,而不是单个状态

  • 最终发现d3.v3.js不支持波多黎各,因此删除了us-states.josn文件中包含波多黎各描述的最后一行

  • 还有一个大的钢盒子;遍历html显示对应于Virginia的path元素也显示了一个横跨整个SVG元素的大方形钢蓝色框

  • 添加的样式(“不透明度”,函数(d){if(d.properties.name==“Virginia”)返回0.0;else返回“1.0”;})

  • 现在,地图显示了除弗吉尼亚州和波多黎各以外的所有州,弗吉尼亚州显示空白,波多黎各是我从数据文件中手动删除的

  • 查看html元素和json文件中弗吉尼亚州的几何图形,发现弗吉尼亚州没有什么不同或独特之处,它被分为3个部分,而华盛顿州等其他州则被分为4个部分

  • 任何关于为什么弗吉尼亚没有被正确展示的建议。对Virginia的HTML标记的检查看起来也不错,并且似乎反映了数据。如何添加调试代码,以便在下一个详细级别上弄清楚为什么D3内部或浏览器外部正在努力绘制Virginia,而默认情况下在整个svg区域中绘制一个大的钢蓝色框

  • 代码开始时与书中的示例完全相同,唯一的变化是d3.v3.js从d3 org站点的zip文件重新下载。当然,弗吉尼亚州的不透明性通过编程降低为零


    谢谢。。我以为我有浏览器问题,然后是数据问题,最后是d3库版本问题,但消除了所有问题,现在需要帮助来决定下一步要看什么。

    在版本2和版本3之间,d3中的地理功能有一些更改,您可以在发行说明中找到,我怀疑这可能是您出现问题的原因。请看一看发行说明,其中已删除对波多黎各的提及,并应用了剪辑。我想这些可以解释你发生了什么。FWIW我刚刚用d3.v2测试了该代码,并按预期呈现了所有内容。在你的地图中,你可以通过将你的填充设置为“无”,将你的斯托克设置为某个你期望的轮廓,而不是回答你问题的轮廓,来部分了解你所面临的问题。我建议把这个贴在d3谷歌群组上,因为Scott Murray经常在那里发帖,我相信他已经找到了答案

    在弗吉尼亚的JSON代码中,代码中似乎插入了一个框的轮廓。。。它是维吉尼亚多重多边形的三个部分之一。如果移除这个框(它只有四个坐标),JSON应该可以工作。你将失去美国地图上阿拉斯加/夏威夷周围的轮廓。

    刚刚检查了w.Scott Murray,他确认弗吉尼亚州的坐标确实曾经起作用,但是D3在版本3.1.8中改变了它处理地理数据的方式。截至今天,新版本的us-states.json现已在以下位置提供:
    并且与最新的D33.4.6版本配合良好

    非常感谢。我有d3.v3.js的3.3.8和3.3.9版本。恢复到d3.js的3.1.8版本修复了该问题。为了确保现在我已经基于版本d3.318.js、d3.338.js、d3.339.js重新标记了我的d3.js库,所以我记得更改次要版本可能会破坏一些功能。我遇到了与OP相同的问题。恢复到旧版本的d3并从json文件中删除波多黎各修复了它。非常感谢,用户1614080