我一直在关注"让我们制作地图"教程https://bost.ocks.org/mike/map/,但在本教程的中间,绘制路径失败,错误的topojson.feature()不是函数。
script.js:14未捕获TypeError:topojson.feature不是函数(...)
(匿名函数)@ script.js:14
(匿名函数)@ d3.min.js:6
致电@ d3.min.js:6
e @ d3.min.js:6
的script.js:
var width = 960,
height = 1160;
var svg = d3.select("body").append("svg")
.attr("width", width)
.attr("height", height);
d3.json("js/uk.json", function(error, uk) {
if (error) return console.error(error);
console.log(uk);
svg.append("path")
.datum(topojson.feature(uk, uk.objects.subunits))
.attr("d", d3.geo.path().projection(d3.geo.mercator()));
});

HTML包含的脚本:
<script src="https://cdnjs.cloudflare.com/ajax/libs/d3/3.4.0/d3.min.js"></script>
<!DOCTYPE html>
<html lang="en" >
<head>
<meta charset="utf-8" />
<title>Map test</title>
<link href="css/main.css" rel="stylesheet" type="text/css" />
</head>
<body>
<script src='js/jquery.js'></script>
<script src='js/d3.min.js' charset="utf-8"></script>
<script src='js/topojson.js'></script>
<script src="js/script.js" type="text/javascript"></script>
</body>
</html>
&#13;
最初我怀疑与topojson文件有关的问题我已经转换了Pathfile-GeoJSON-TopoJSON,我已经将uk.js命名为uk.js用于测试目的,同时遵循本教程。 回复中提到的另一个暗示: https://github.com/topojson/topojson/issues/236 但是在改变问题之后仍然保持不变,并且在用uk.json代替之后确认我已经完成了以下事项: https://bost.ocks.org/mike/map/uk.json
答案 0 :(得分:0)
您缺少topojson客户端文件,这些文件已从v2中的基本topojson代码中拆分。如果在代码中包含以下脚本,它应该可以工作:
<script src="https://unpkg.com/topojson-client@2"></script>