topojson.feature与topojson v2

时间:2016-12-08 18:06:20

标签: node.js d3.js geojson topojson topojson2

我一直在关注"让我们制作地图"教程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;
&#13;
&#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

1 个答案:

答案 0 :(得分:0)

您缺少topojson客户端文件,这些文件已从v2中的基本topojson代码中拆分。如果在代码中包含以下脚本,它应该可以工作:

<script src="https://unpkg.com/topojson-client@2"></script>