将地图边界拟合到栅格图层

时间:2017-09-01 10:09:29

标签: javascript mapbox

我已经浏览了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>]

1 个答案:

答案 0 :(得分:0)

  

未捕获错误:必须指定LngLatLike参数   作为LngLat实例

您似乎错误地使用了mapboxgl.LngLatBounds。您需要传入两个LngLat实例,而不是两个坐标。 API docs有一个示例,可以为边界框的西南角和东北角创建一个点:

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)?

您可以使用map.getSource() method。传入栅格图层的源ID,并返回具有bounds属性的对象。使用此bounds属性传递到map.fitBounds()

var bounds = map.getSource('mapbox://username.source-id').bounds;
map.fitBounds(bounds);

以下是一个有效的例子:https://codepen.io/mapsam/pen/RZvyBQ