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