在Mapbox中,fitBounds
方法似乎不适合大西洋两岸的点(coords从359跳到0)。
如何才能适应阿拉斯加的航线或从香港飞往SF的航班。也许有可能使用中心点和自定义缩放级别来编写变通方法,但它感觉就像是一个过度设计的变通方法,围绕着对边界的不良处理。
如果firBounds
没有帮助,是否有其他方法会获得类似的结果?
阿拉斯加周围的fitBounds示例,因为阿拉斯加穿过了antimeridian:
map.fitBounds([[172.461667,71.365162],[-129.979511,51.214183]])
答案 0 :(得分:0)
这些案件总是有点痛苦。使用以下方法包装边界框坐标可能会有所帮助:
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)