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

问题描述:

Mapbox,fitBounds方法似乎不能很好地与大西洋两岸的点(该坐标从跳跃点359至0)。Mapbox.js:在日期线两侧的区域上设置地图边界

它怎么可能适合阿拉斯加的边界或从香港到SF的航班。使用中心点和自定义缩放级别来编写解决方法也许是可能的,但它似乎是一个过度工作的解决方法,围绕着对边界的不良处理。

如果firBounds没有帮助,是否有另一种类似的方法可以实现类似的结果?

周围阿拉斯加fitBounds的

实施例中,由于阿拉斯加穿过子午线:

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

这些案件总是一个有点疼痛。什么可以帮助您的包裹边框坐标使用:

https://www.mapbox.com/mapbox-gl-js/api/#lnglat#wrap

另一种解决方案可能是使用的范围转换为中心&变焦值:

https://github.com/mapbox/geo-viewport

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) 
+0

谢谢!这非常有帮助! 我仍然无法从'turf-extent'返回的边界框中获得正确的结果,或者甚至在日期行上使用静态坐标;但我肯定更接近一个工作解决方案:) –

+0

我还没有能够实施这种方法的工作解决方案。 –