Как рассчитать ограничивающую рамку объекта Geojson, используя Python или Javascript?

14

У меня есть приложение django с листовкой на внешнем интерфейсе, и мне нужно вычислить bbox объекта геоджон, чтобы я мог передать координаты map.fitBounds()

Я пробовал некоторые библиотеки, а также getBoundsметоды некоторых объектов в Leaflet, например FeatureGroup, но он жаловался, что границы не были определены.

Кто-нибудь может указать мне на простое решение этого?

fccoelho
источник
1
В общем случае map.fitBounds (featureGroupName.getBounds ()) должно работать, если в FeatureGroup содержатся данные. Вы изучили FeatureGroup, чтобы увидеть, как она выглядит в то время, когда вы пытаетесь получить границы?
nathansnider

Ответы:

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
Исправлена ​​демонстрация для удаления dep
sidonaldson,
2

Используйте geojson-bbox для расчета bbox любого геойсона

Использование:

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

Есть модуль npm для geojson-bbox

Gagan
источник