如何使用python或javascript计算geojson对象的边界框?


14

我在前端有传单的django应用程序,我需要计算geojson对象的bbox,以便可以将坐标传递给 map.fitBounds()

我尝试了一些库,还尝试了getBoundsLeaflet中某些对象的方法,例如FeatureGroup,但是它抱怨未定义边界。

谁能指出我的简单解决方案?


1
通常,只要FeatureGroup包含数据,map.fitBounds(featureGroupName.getBounds())应该可以工作。您是否检查过FeatureGroup以查看在尝试确定界限时的外观?
nathansnider 2015年

Answers:


26

如果要计算GeoJSON图层的边界,可以执行以下操作:

var geojsonLayer = L.geoJson(your_data).addTo(map);
map.fitBounds(geojsonLayer.getBounds());

示例:http//jsfiddle.net/expedio/qgkbrjwt/

(在图层完全加载后,地图缩放到图层范围)。

如果要计算每个要素的边界,则可以执行以下操作:

var myGeoJSON = L.geoJson(data, {
    onEachFeature: function (feature, layer) {
        // assign bounds to feature
        feature.properties.bounds_calculated = layer.getBounds();
    }
}).addTo(map);

// do whatever you want with
// feature.properties.bounds_calculated

示例:http//jsfiddle.net/expedio/fxxguv0v/

(在每个弹出窗口中放大功能功能)


1
修复了演示以删除ajax请求上的dep jsfiddle.net/fxxguv0v/22
sidonaldson

2

使用geojson-bbox计算任何geojson的bbox

用法:

<script src="path/to/geojson-bbox.min.js"></script>
var extent = bbox(geojson);
//extent is an array [left, bottom, right, top]

有用于geojson-bbox的 npm模块

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.