Mike Bostock的“缩放到边框”示例假设您使用的是topoJSON。
https://bl.ocks.org/mbostock/4699541
如何修改脚本以便您也可以将其与geoJSON数据一起使用?具体来说,我的脚本不会使用以下内容:
.data(topojson.feature(us, us.objects.states).features)
但是像这样:
.data(collection.features)
该块实际上已经使用了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所示。