Come calcolare il rettangolo di selezione di un oggetto geojson utilizzando Python o JavaScript?


14

Ho un'app django con volantino sul frontend e devo calcolare la bbox di un oggetto geojson in modo da poter passare le coordinate a map.fitBounds()

Ho provato alcune librerie e ho provato i getBoundsmetodi di alcuni oggetti in Leaflet, ad esempio FeatureGroup, ma mi sono lamentato del fatto che i limiti non erano stati definiti.

Qualcuno può indicarmi una soluzione semplice a questo?


1
In generale, map.fitBounds (featureGroupName.getBounds ()) dovrebbe funzionare, purché FeatureGroup contenga dati. Hai esaminato il FeatureGroup per vedere come appare nel momento in cui stai cercando di ottenere i limiti?
nathansnider,

Risposte:


26

Se vuoi calcolare i limiti di un layer GeoJSON puoi fare:

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

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

(La mappa viene ingrandita al livello dopo che il livello è stato caricato completamente).

Se si desidera calcolare i limiti di ogni singola funzione, è possibile effettuare le seguenti operazioni:

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

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

(Zoom per funzione funzione in ogni popup)


1
Risolto il problema con
sidonaldson

2

Usa geojson-bbox per calcolare la bbox di qualsiasi geojson

Uso:

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

C'è un modulo npm per geojson-bbox

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.