经过一番摔跤之后,我成功地整理了一个JSON文件,可以为我绘制一张伦敦及其自治市镇的地图。它在这里http://graphitti.org/admin2/files/experiments/03_scaledTM5.html
除了边界不完美之外,地图似乎还可以,但是有一个问题是,一些但不是全部的路径显然占据了整个SVG空间。因此,当我在DOM中检查它们时,我最终选择了整个区域。同样,如果我要用填充物给它们着色,我会将整个空间变成那种颜色。
我注意到这种情况往往发生在较大的自治市镇,较小的可以通过DOM进行选择。这并不总是正确的,但D3在这里可以处理的坐标数量有一些限制吗?或者代码中还有其他东西吗?
如果有人想检查它,JSON就在这里http://www.graphitti.org/admin2/files/experiments/EWNI2.json。伦敦金融城是一个“好”的自治市镇,哈克尼和塔哈姆雷特也是如此。大多数其他人,例如Barnet,Barking,都是“糟糕的”,因为他们填补了SVG。
答案 0 :(得分:1)
就d3映射函数而言,你的一些路径是“由内而外”。 The order of points in a path or sub-path has to be clockwise以便正确映射。
逆时针循环被解释为更大形状内的“洞”,其边界被假定为在地图之外。因此,当您在形状中着色时,除之外的所有路径中的区域都会变色。
文档建议通过this utility运行GeoJSON文件,以正确的结构重新排序顶点。当然,您也可以编写自己的实用程序来反转顺序,只需手动检查并确定哪些不正确。