使用MapBox GL JS将GeoJSON转换为Vector Tiles?

时间:2016-11-11 23:37:51

标签: mapbox geojson mapbox-gl-js

我的地图的源文件是GeoJSON,但它非常大且非常慢。有没有办法使用MapBox GL JS将其转换为矢量切片? (加载GeoJSON,将文件预处理到矢量切片,并显示使用矢量切片作为基本地图。)似乎矢量切片更快。

我已经尝试了所有可能的GeoJSON-VT教程和示例,例如the one on MapBox's site,但它只是说GeoJSON-VT在幕后工作,所以它没有多大帮助。其他大多数适用于Leaflet,而不是MapBox GL JS。

同时,我发现使用大型数据集的每个例子都是通过矢量图块来实现的:

map.addSource('x', {
        "type": "vector",
        "url": "url"
    });

作为参考,我使用这种方法加载我的文件:

map.addSource('x', {
        type: 'geojson',
        data: 'file.geojson'
    });

2 个答案:

答案 0 :(得分:3)

如果您的GeoJSON文件是静态的,您可以使用mapbox/tippecanoe将GeoJSON转换为.mbtiles文件。然后,您可以将文件作为tileset(about tilesets)上传到Mapbox,也可以使用.mbtiles文件(reference implementation)从Web服务器提供自己的矢量切片源。

如果您的GeoJSON文件更具动态性,那么事情就会变得复杂一些。我从未使用它,但Mapbox Dataset API可能是一个很好的解决方案。

答案 1 :(得分:1)

据我所知,Mapbox-GL-JS使用GeoJSON-VT自动将客户端加载的GeoJSON文件转换为浏览器中的矢量图块 - 所以它已经在做你想做的事了要求。

如果这仍然是"慢",可能问题是实际的加载和处理 - 所以预生成和服务矢量切片是正确的答案。