我正在使用库cartogram.js (在这里您可以看到它是如何工作的示例)。
http://prag.ma/code/d3-cartogram/#netmigrate/2011
我正在尝试做同样的事情,并使用下面的代码:
<!DOCTYPE HTML>
<html lang="en">
<head>
<title>cartogram</title>
<script src="http://d3js.org/d3.v3.min.js" charset="utf-8"></script>
<script src="http://d3js.org/queue.v1.min.js"></script>
<script src="http://d3js.org/topojson.v1.min.js"></script>
<script type="text/javascript" src="http://prag.ma/code/d3-cartogram/cartogram.js"></script>
<script type="text/javascript" src="http://cdnjs.cloudflare.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
</head>
<body>
<svg id="map"></svg>
<script type="text/javascript">
var cartogram = d3.cartogram()
.projection(d3.geo.albersUsa())
.value(function(d) {
return Math.random() * 100;
});
d3.json("https://raw.githubusercontent.com/shawnbot/d3-cartogram/master/data/us-states.topojson", function(topology) {
var features = cartogram(topology, topology.objects.states.geometries);
console.log(features);
d3.select("svg").selectAll("path")
.data(features)
.enter()
.append("path")
.attr("d", cartogram.path);
});
</script>
</body>
</html>我的问题是没有任何东西出现在我面前,我也没有得到错误。我确信GeoJSON文件已经被调用和处理过了。我应该怎么做才能显示地图?我是d3.js的新手。有什么问题吗?我的json和链接是一样的。
发布于 2015-08-20 19:40:56
selection.data()只接受数组作为数据。在您的示例中,features不是一个数组,它是一个包含属性features和属性arcs的复杂对象。
当您使用features.features (以及svg的扩展维度)时,会显示地图:
d3.select("svg")
.attr("width", 1000)
.attr("height", 500)
.selectAll("path")
.data(features.features)
.enter()
.append("path")
.attr("d", cartogram.path);https://stackoverflow.com/questions/32109529
复制相似问题