我的地图的源文件是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'
});
答案 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文件转换为浏览器中的矢量图块 - 所以它已经在做你想做的事了要求。
如果这仍然是"慢",可能问题是实际的加载和处理 - 所以预生成和服务矢量切片是正确的答案。