如何在MAPBOX中调整窗口大小时同时调整边界和设置最大边界?

如何在MAPBOX中调整窗口大小时同时调整边界和设置最大边界?,mapbox,mapbox-gl,Mapbox,Mapbox Gl,为了适应贴图,我们使用mapbox.fitBounds()并设置mapbox.setMaxBounds(),这避免了平移。这项工作第一次完成就做得很好 但在“窗口大小调整”中,将裁剪贴图,并从最初设置的maxbounds中获取边界引用。我正在尝试使用setTimeout在视口中拟合贴图,以便贴图首先在屏幕上拟合,然后从mapbox获取贴图边界。getBounds()在mapbox.setMaxBounds()中设置值。但这只是一个黑客 有没有正确的方法 请帮忙。。。谢谢你希望你一切都好 经过几天

为了适应贴图,我们使用mapbox.fitBounds()并设置mapbox.setMaxBounds(),这避免了平移。这项工作第一次完成就做得很好

但在“窗口大小调整”中,将裁剪贴图,并从最初设置的maxbounds中获取边界引用。我正在尝试使用setTimeout在视口中拟合贴图,以便贴图首先在屏幕上拟合,然后从mapbox获取贴图边界。getBounds()在mapbox.setMaxBounds()中设置值。但这只是一个黑客

有没有正确的方法


请帮忙。。。谢谢你希望你一切都好

经过几天的努力,我们终于找到了完美的解决方案,针对我自己的问题贴出

首先,

MAPBOX.FIDENBUTSH()是将给定边界作为ARG传递的方法,将适合几何(多边形等),使中间点位于中间。但唯一一件事是它不允许平移

但是,我们可以禁止使用mapbox.setMaxBounds()进行平移,它允许我们约束到传递的边界

但在调整窗口大小时,mapbox Map会根据内部逻辑更改边界,这将不再与最初传递的边界相同

为了在视口中拟合几何体,同时不允许在调整窗口大小时平移,我们使用调整观察者的大小来观察地图的容器,在它的回调中,我们只写了三行

  • 将map.setMaxBounds(null)//设置为null
  • 设置边界(bounds)//u的几何边界
  • 使用从视口获取边界
  • 注意通过3。指向requestAnimationFrame,而不是setTimeout

    更新代码

    希望这将有助于

    多谢各位

       let bnds = mapbox.getBounds();
       and finally set in map.setMaxBounds(bnds);