วิธีการคำนวณกล่องขอบเขตของวัตถุ geojson โดยใช้ python หรือ javascript


14

ฉันมีแอพ django ที่มีแผ่นพับที่ส่วนหน้าและฉันจำเป็นต้องคำนวณ bbox ของวัตถุ geojson เพื่อให้ฉันสามารถส่งพิกัดไปยัง map.fitBounds()

ฉันลองใช้ libs แล้วลองใช้getBoundsวิธีการของวัตถุบางอย่างใน Leaflet เช่นFeatureGroupแต่มันก็บ่นว่าขอบเขตไม่ได้ถูกกำหนดไว้

ใครช่วยชี้ให้ฉันเห็นวิธีแก้ปัญหาง่ายๆ


1
โดยทั่วไป map.fitBounds (featureGroupName.getBounds ()) ควรใช้งานได้ตราบใดที่ FeatureGroup มีข้อมูลอยู่ คุณได้ตรวจสอบ FeatureGroup เพื่อดูว่ามันดูเหมือนว่าในเวลาที่คุณพยายามที่จะได้รับขอบเขต?
nathansnider

คำตอบ:


26

หากคุณต้องการคำนวณขอบเขตของ GeoJSON-Layer คุณสามารถทำได้:

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

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.