Mike Bostock“缩放到边框”示例假设您使用的是topoJSON。
https://bl.ocks.org/mbostock/4699541
如何修改脚本以便您也可以将其与geoJSON数据一起使用?具体来说,我的脚本不会使用以下内容:
.data(topojson.feature(us, us.objects.states).features)
但是这样的事情:
.data(collection.features)
答案 0 :(得分:0)
该块实际上已经使用了geojson - 一个d3 geoPath不会绘制topojson对象,它会绘制geojson对象:
path(object [,arguments ...])<>
渲染给定对象,可以是任何GeoJSON要素或几何 对象
......(link)
让我们来看看你的例子:
.data(topojson.feature(us, us.objects.states).features)
topojson.feature(us, us.objects.states)
返回一个要素集合,即geojson要素集合。
.features
访问要素集的功能(在这种情况下为多边形数组)。
给.data()
提供的内容已经是geojson。所以我们可以按照你的建议使用.data(geojson.features)
(如果我们有一个特征集合,否则我们只能使用一个geojson对象数组)。
我们可以用您的示例演示两种方式 - 使用浏览器here中的topojson将数据预转换为geojson,或者我们可以加载geojson文件并完全放弃topojson的转换,如here所示