Javascript 将地图边界拟合到光栅图层

Javascript 将地图边界拟合到光栅图层,javascript,mapbox,Javascript,Mapbox,我已经浏览了Mapbox的所有fitbounds教程,仍然无法确定如何将地图重新聚焦到给定的光栅图层上。我有一个菜单,切换一些旧的地图,并希望重新安装地图在每个回合 这是我到目前为止所拥有的mapnumber是我的光栅地图的字符串 var coordinates = map.getBounds(mapnumber); var bounds = new mapboxgl.LngLatBounds(coordinates[0], coordinates[0]);

我已经浏览了Mapbox的所有
fitbounds
教程,仍然无法确定如何将地图重新聚焦到给定的光栅图层上。我有一个菜单,切换一些旧的地图,并希望重新安装地图在每个回合

这是我到目前为止所拥有的
mapnumber
是我的光栅地图的字符串

      var coordinates = map.getBounds(mapnumber);
      var bounds = new mapboxgl.LngLatBounds(coordinates[0], coordinates[0]);
      map.fitBounds({bounds});
边界是存在的,我不能对它们使用fitbounds。这就是错误所在

lng_lat.js:97 Uncaught Error: `LngLatLike` argument must be specified 
as a LngLat instance, an object {lng: <lng>, lat: <lat>}, or an array 
of [<lng>, <lat>]
lng_lat.js:97未捕获错误:必须指定'LngLatLike'参数
作为LngLat实例,对象{lng:、lat:}或数组
共[,]
未捕获错误:
LngLatLike
必须指定参数 作为一个例子

看起来您使用的mapboxgl.LngLatBounds不正确。您需要传入两个LngLat实例,而不是两个坐标。下面是为边界框的西南角和东北角创建点的示例:

var sw = new mapboxgl.LngLat(-73.9876, 40.7661);
var ne = new mapboxgl.LngLat(-73.9397, 40.8002);
var llb = new mapboxgl.LngLatBounds(sw, ne);
然后可以将
map.fitBounds()
与边界框一起使用

map.fitBounds(llb);
更新:回答后续问题

如何从光栅中提取两组(sw和ne)

您可以使用。传入光栅图层的源ID,该ID将返回一个具有
bounds
属性的对象。使用此bounds属性传递到
map.fitbunds()


这里有一个工作示例:

Try
map.fitBounds(bounds)坐标[0]
不起作用。光栅文件由Mapbox托管。好问题@east1999!我已经更新了上面的答案,指出了如何使用
map.getSource()
检索光栅层的边界。回到这里,我只想感谢您的答案以及您使用Mapbox所做的令人惊叹和鼓舞人心的工作。仅供参考,虽然我将问题标记为已解决,但它有点复杂。mapname是使用javascript函数动态拉取的(构建菜单需要这个函数),所以我还不确定如何将它与getSource结合起来。我可以使用图层的名称获取其源id吗?附带的问题,但再次,谢谢!
var bounds = map.getSource('mapbox://username.source-id').bounds;
map.fitBounds(bounds);