GeoJSON格式一般比較大,網頁須要較長時間加載,可使用GeoBuf進行壓縮。node
使用GeoBuf有不少好處:結構緊湊、文件小、方便編碼和解碼、能適用各類GeoJSON等等。ios
使用:git
1.安裝 geobuf 和 pbfgithub
1 npm install geobuf 2 npm install pbf
2.對GeoJSON編碼npm
1 let buffer = geobuf.encode(featureCollection, new Pbf())
說明:須要引入geobuf 和 pbf,json
featureCollection爲GeoJSONaxios
3.把GeoBuf寫入文件編碼
1 let buffer = geobuf.encode(featureCollection, new Pbf()) // 對GeoJSON編碼 2 // 使用node寫入文件 須要先引入'fs'庫 3 fs.writeFile('./data/lamp.geobuf.bpf', buffer, function(error){ 4 if(error){ 5 console.info('geobuf error') 6 }else { 7 console.info('geobuf ok') 8 } 9 })
4.對GeoBuf解碼spa
1 axios.get('./data/lamp.geobuf.bpf', { 2 responseType: 'arraybuffer' // note: responseType must be 'arraybuffer' 3 }).then((function (res) { 4 let data = res.data 5 let geojson = geobuf.decode(new Pbf(data)) // 對GeoBuf解碼 6 console.info(JSON.stringify(geojson)) 7 }))
注意:讀取GeoBuf是responseType必須是「arraybuffer」code
看一下文件大小:只有大約1/5了,效果很明顯吶!
完成應用案例請參考:
https://github.com/shiyuan598/common-tools.git
參考文檔: