我必须从一个非常沉重的postgres数据库加载geoJSON数据。数据大约为1MB,而其余代码大约为35Kb。
在加载时让页面更快的最佳选择是什么?
我在考虑通过jQuery AJAX加载geoJSON?
还有其他建议或选项吗?也许压缩?
感谢。
答案 0 :(得分:1)
我会看看TopoJSON,它在GeoJSON尺寸上创造了奇迹。
TopoJSON是对拓扑进行编码的GeoJSON的扩展。而不是离散地表示几何,TopoJSON文件中的几何从称为弧的共享线段缝合在一起。 TopoJSON消除了冗余,提供了比使用GeoJSON更紧凑的几何表示;典型的TopoJSON文件比GeoJSON等效文件小80%。
https://github.com/mbostock/topojson
您可以使用命令行实用程序对现有的GeoJSON文件进行编码:
topojson -o output.json input.json
或在您的情况下尽可能使用serverside api:
var topojson = require("topojson");
var collection = {type: "FeatureCollection", features: […]}; // GeoJSON
var topology = topojson.topology({collection: collection}); // TopoJSON
在客户端,您可以使用clientside api来反序列化TopoJSON:
<script src="http://d3js.org/topojson.v1.min.js"></script>
var geoJson = topojson.feature(topology, object);
理想情况下,可以缓存TopoJSON文件,而不是在每个请求上生成它们,但这取决于您的应用程序。