Як обчислити обмежувальне поле об’єкта geojson за допомогою python або javascript?


14

У мене є програма django з листівкою на передній панелі, і мені потрібно обчислити коробку об’єкта geojson, щоб я міг передавати координати map.fitBounds()

Я спробував кілька ліб, а також спробував getBoundsметоди певних об'єктів у Leaflet, наприклад FeatureGroup, але він скаржився, що межі не визначені.

Хтось може вказати мені на просте рішення цього питання?


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 на запит ajax jsfiddle.net/fxxguv0v/22
sidonaldson

2

Використовуйте geojson-bbox для розрахунку bbox будь-якого geojson

Використання:

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

Існує модуль npm для geojson-bbox

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.