使用MapBox GL JS动态地将GeoJSON转换为矢量图块?

使用MapBox GL JS动态地将GeoJSON转换为矢量图块?,mapbox,geojson,mapbox-gl-js,Mapbox,Geojson,Mapbox Gl Js,我的地图的源文件是GeoJSON,但它非常大而且非常慢。有没有一种方法可以使用MapBox GL JS动态地将其转换为矢量图块?(加载GeoJSON,将文件预处理为矢量分幅,并显示使用矢量分幅作为底图。)看来矢量分幅要快得多 我已经尝试了所有GeoJSON VT教程和示例,但它只是说GeoJSON VT在引擎盖下工作,所以没有太大帮助。其他的大多适用于传单,而不是MapBox GL JS 同时,我发现的每一个使用大型数据集的示例都是通过矢量图块实现的: map.addSource('x', {

我的地图的源文件是GeoJSON,但它非常大而且非常慢。有没有一种方法可以使用MapBox GL JS动态地将其转换为矢量图块?(加载GeoJSON,将文件预处理为矢量分幅,并显示使用矢量分幅作为底图。)看来矢量分幅要快得多

我已经尝试了所有GeoJSON VT教程和示例,但它只是说GeoJSON VT在引擎盖下工作,所以没有太大帮助。其他的大多适用于传单,而不是MapBox GL JS

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

map.addSource('x', {
        "type": "vector",
        "url": "url"
    });
作为参考,我正在使用以下方法加载我的文件:

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

如果GeoJSON文件是静态的,可以使用将GeoJSON转换为
.mbtiles
文件。然后,您可以将该文件作为tileset()上载到Mapbox,也可以使用
.mbtiles
文件()从web服务器提供您自己的矢量tile源


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

据我所知,Mapbox GL JS使用GeoJSON VT在浏览器中自动将客户端加载的GeoJSON文件转换为矢量分幅,因此它已经完成了您的要求

如果这仍然“缓慢”,那么问题可能是实际的加载和处理-因此预生成和服务矢量分幅是正确的答案。

这就像一个符咒——它非常快。唯一的问题是,对于某些瓷砖,我达到了500k的尺寸限制,所以它无法提供我想要的细节级别。需要修改设置或通过我自己的服务器提供服务。。。