7

我已成功加载 geoJSON 文件,将特征集合加载到

d3.geo.path() 

我当前实现的问题是它开始缩放,使得路径是一个点,我每次都必须放大。现在我知道有很多方法可以正确设置缩放级别,但我希望使用

d3.geo.bounds()

鉴于以下 geoJSON 功能:

json.features[0]:

Object
geometry: Object
coordinates: Array[2]
0: -71.248913
1: 44.078426
length: 2
__proto__: Array[0]
type: "Point"
__proto__: Object
id: 2
type: "Feature"
__proto__: Object

json.features[1]:

Object
geometry: Object
coordinates: Array[2]
0: -71.249021
1: 44.078387
length: 2
__proto__: Array[0]
type: "Point"
__proto__: Object
id: 3
type: "Feature"
__proto__: Object

如果我执行

d3.geo.bounds(json.features)

我得到无限的界限:

d3.geo.bounds(json.features)
[
Array[2]
0: Infinity
1: Infinity
length: 2
__proto__: Array[0]
, 
Array[2]
0: -Infinity
1: -Infinity
length: 2
__proto__: Array[0]
]

我不确定出了什么问题,显然我的数据集比上面大得多,但我只是想了解输出。这个输出对我来说没有意义,并且显然遗漏了一些关于 d3 处理 geoJSON 数据的简单内容。任何有助于获得工作界限的帮助都会有所帮助。

谢谢。

4

1 回答 1

14

d3.geo.bounds将单个 Feature 或 FeatureCollection 作为参数,而不是特征数组。请参阅文档。你需要打电话给例如

d3.geo.bounds(json.features[0])

如果你想要一个包含所有特征的边界框,则需要依次获取每个特征的边界框,然后计算它们的并集。

于 2012-12-19T05:22:47.930 回答