Jak obliczyć obwiednię obiektu geojson przy użyciu Pythona lub javascript?


14

Mam aplikację django z ulotką na froncie i muszę obliczyć bbox obiektu geojson, aby móc przekazać współrzędne do map.fitBounds()

Próbowałem także niektórych bibliotek, a także próbowałem getBoundsmetod określonych obiektów w Ulotce, takich jak FeatureGroup, ale narzekałem, że granice nie zostały zdefiniowane.

Czy ktoś może wskazać mi proste rozwiązanie tego problemu?


1
Ogólnie rzecz biorąc, map.fitBounds (featureGroupName.getBounds ()) powinien działać, o ile FeatureGroup zawiera dane. Czy zbadałeś FeatureGroup, aby zobaczyć, jak to wygląda w momencie, gdy próbujesz uzyskać granice?
nathansnider

Odpowiedzi:


26

Jeśli chcesz obliczyć granice warstwy GeoJSON, możesz:

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

Przykład: http://jsfiddle.net/expedio/qgkbrjwt/

(Mapa jest powiększana do zasięgu warstwy po całkowitym załadowaniu warstwy).

Jeśli chcesz obliczyć granice każdej pojedynczej operacji, możesz wykonać następujące czynności:

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

Przykład: http://jsfiddle.net/expedio/fxxguv0v/

(Powiększ funkcję do każdego wyskakującego okienka)


1
Naprawiono demo, aby usunąć dep na żądanie ajax jsfiddle.net/fxxguv0v/22
sidonaldson

2

Użyj geojson-bbox, aby obliczyć bbox dowolnego geojsona

Stosowanie:

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

Istnieje moduł npm dla geojson-bbox

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.