Leaflet.js一致的geoJSON数据加载性能

时间:2013-12-26 10:50:57

标签: ajax leaflet geojson

我必须从一个非常沉重的postgres数据库加载geoJSON数据。数据大约为1MB,而其余代码大约为35Kb。

在加载时让页面更快的最佳选择是什么?

我在考虑通过jQuery AJAX加载geoJSON?

还有其他建议或选项吗?也许压缩?

感谢。

1 个答案:

答案 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文件,而不是在每个请求上生成它们,但这取决于您的应用程序。