将矢量平铺层添加到Leaflet地图中的MapBox解决方案是什么?

what is the MapBox solution to add a vector-tile layer into Leaflet map?

背景:

  • 单张地图
  • 矢量平铺层

    • MapBox Studio生成矢量切片(协议缓冲区格式)
    • MapBox.com用于磁贴托管
    • 使用Leaflet.MapboxVectorTile插件解析和渲染MapBox矢量图块

问题:

  • 无法获取原始要素几何:我想获取要素几何,因此可以缩放到它,例如当用户点击它时。但是,此插件(Leaflet.MapboxVectorTile)尚无明确的方法。 geom值(包括BBOX)全部在相对坐标(即不是原始几何形状)中

  • 识别功能(单击/悬停)的能力很差:此插件的另一个问题是其识别算法不够健壮。作者禁用了hover-identify,因为事实证明它非常慢。对于单击,我注意到有时很难选择一个多边形(某些多边形会发生这种情况,具体取决于您在该多边形中单击的位置),必须单击某些位置才能使该插件能够识别该特征。

根据我的经验,此插件非常出色,除了上述两个问题。

我的问题:

  • 是否有对应的MapBox解决方案与此插件做类似的事情?换句话说,要在地图上解析和渲染矢量图块图层服务,并支持可靠的特征识别和获取特征几何的能力?
  • 当前,在MapBox Studio中生成的图块位于.pbf中,这对于有效的数据传输而言非常有用。我想知道它是否支持开箱即用的JSON格式(GeoJSON或TopoJSON)?如果是这样,我可能可以尝试使用MapBox.JS featureLayer来使用矢量切片json数据。
  • 我了解MapBOX GL.js专为基于矢量图块的地图而设计。我正在寻找添加矢量平铺层的方法。

感谢任何回应。谢谢!


您将要尝试使用mapbox-gl-leaflet,该库将有效的Mapbox GL库作为一个层集成到Leaflet中。

Cannot get original feature geometry

矢量切片不包含原始要素几何。 Mapbox GL确实提供了一个提供GeoJSON的api,但它不会成为您的原始数据:如果是,则由于原始数据过多,地图将变得缓慢且效率低下。