Javascript Mapbox.js:在日期行两侧的区域上设置地图边界

Javascript Mapbox.js:在日期行两侧的区域上设置地图边界,javascript,maps,geospatial,mapbox,mapbox-gl-js,Javascript,Maps,Geospatial,Mapbox,Mapbox Gl Js,实际上,fitBounds方法似乎不能很好地处理大西洋两岸的点(坐标从359跳到0) 如何适应阿拉斯加的边界或从香港到旧金山的航班。也许可以利用一个中心点和一个自定义的缩放级别来编写一个变通方法,但它感觉像是一个过度设计的变通方法,它解决了边界处理不当的问题 如果firBounds没有帮助,还有其他类似的方法可以达到类似的效果吗 阿拉斯加州周围的边界示例,因为阿拉斯加州穿过反地中海: map.fitBounds([[172.461667,71.365162],[-129.979511,51.21

实际上,
fitBounds
方法似乎不能很好地处理大西洋两岸的点(坐标从359跳到0)

如何适应阿拉斯加的边界或从香港到旧金山的航班。也许可以利用一个中心点和一个自定义的缩放级别来编写一个变通方法,但它感觉像是一个过度设计的变通方法,它解决了边界处理不当的问题

如果
firBounds
没有帮助,还有其他类似的方法可以达到类似的效果吗

阿拉斯加州周围的边界示例,因为阿拉斯加州穿过反地中海:

map.fitBounds([[172.461667,71.365162],[-129.979511,51.214183]])

那些病例总是有点痛苦。使用以下方法包装边界框坐标可能会有所帮助:

另一种解决方案可能是使用以下方法将边界转换为中心和缩放值:


谢谢这很有帮助!我仍然无法从
turf extent
返回的边界框中获得正确的结果,甚至无法在日期行上使用静态坐标;但我肯定离工作解决方案更近了:)我还不能用这种方法实现工作解决方案。
const {width, height} = map.getCanvas().getBoundingClientRect();
const viewport = geoViewport(
      [minX, minY, maxX, maxY],  // the bounding box (west, south, east north)
      [width, height], // map dimensions in pixel
      0,  // minzoom
      22, // maxzoom
      512 // tilesize for mapbox-gl-js
    );
map.setCenter(viewport.center);
map.setZoom(viewport.zoom)