Wie berechnet man den Begrenzungsrahmen eines Geojson-Objekts mit Python oder Javascript?


14

Ich habe eine Django-App mit Broschüre im Frontend und muss die bbox eines Geojson-Objekts berechnen, damit ich die Koordinaten weitergeben kann map.fitBounds()

Ich habe einige Bibliotheken ausprobiert sowie die getBoundsMethoden bestimmter Objekte in Leaflet ausprobiert FeatureGroup, aber es wurde beanstandet, dass die Grenzen nicht definiert wurden.

Kann mir jemand eine einfache Lösung dafür zeigen?


1
Im Allgemeinen sollte map.fitBounds (featureGroupName.getBounds ()) funktionieren, solange die FeatureGroup Daten enthält. Haben Sie die FeatureGroup untersucht, um festzustellen, wie sie zu dem Zeitpunkt aussieht, als Sie versuchen, die Grenzen zu überschreiten?
NathanSnider

Antworten:


26

Wenn Sie die Grenzen eines GeoJSON-Layers berechnen möchten, können Sie Folgendes tun:

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

Beispiel: http://jsfiddle.net/expedio/qgkbrjwt/

(Die Karte zoomt auf die Ebenenausdehnung, nachdem die Ebene vollständig geladen wurde.)

Wenn Sie die Grenzen jedes einzelnen Features berechnen möchten, können Sie Folgendes tun:

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

Beispiel: http://jsfiddle.net/expedio/fxxguv0v/

(Zoomfunktion in jedem Popup)


1
Die Demo zum Entfernen von Dep auf Ajax-
sidonaldson

2

Verwenden Sie geojson-bbox , um die bbox eines beliebigen Geojson zu berechnen

Verwendung:

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

Es gibt ein Npm- Modul für Geojson-Bbox

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.