缩放到没有topoJSON的边界框

时间:2018-05-29 08:11:04

标签: javascript d3.js geojson topojson

Mike Bostock“缩放到边框”示例假设您使用的是topoJSON。

https://bl.ocks.org/mbostock/4699541

如何修改脚本以便您也可以将其与geoJSON数据一起使用?具体来说,我的脚本不会使用以下内容:

.data(topojson.feature(us, us.objects.states).features)

但是这样的事情:

.data(collection.features)

1 个答案:

答案 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所示