【问题标题】:Zoom to bounding box without topoJSON缩放到没有 topoJSON 的边界框
【发布时间】:2018-11-07 19:35:48
【问题描述】:

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

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

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

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

但是像这样:

.data(collection.features)

【问题讨论】:

    标签: javascript d3.js geojson topojson


    【解决方案1】:

    该块实际上已经使用 geojson - d3 geoPath 不绘制 topojson 对象,它绘制 geojson 对象:

    路径(对象[,参数…])

    渲染给定的对象,可以是任何 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 所示。

    【讨论】:

    • 谢谢安德鲁。非常有帮助。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-11-05
    • 1970-01-01
    • 1970-01-01
    • 2019-07-24
    • 2017-12-30
    • 2018-04-26
    • 1970-01-01
    相关资源
    最近更新 更多