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

时间:2017-10-13 17:20:35

标签: javascript maps geospatial mapbox mapbox-gl-js

Mapbox中,fitBounds方法似乎不适合大西洋两岸的点(coords从359跳到0)。

如何才能适应阿拉斯加的航线或从香港飞往SF的航班。也许有可能使用中心点和自定义缩放级别来编写变通方法,但它感觉就像是一个过度设计的变通方法,围绕着对边界的不良处理。

如果firBounds没有帮助,是否有其他方法会获得类似的结果?

阿拉斯加周围的fitBounds示例,因为阿拉斯加穿过了antimeridian:

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

1 个答案:

答案 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)