То, что в итоге заработало, - это вычисление новой широты, долготы и масштаба для моего нового экстента, для которого я использовал масштабирование WebMercatorViewport
, а затем установите его в качестве нового состояния области просмотра. Я использовал FlyToInterpolator
метод, который реагирует с map-gl, чтобы лететь в это место.
const {longitude, latitude, zoom } = new WebMercatorViewport(this.state.viewport)
.fitBounds([[extent[0], extent[1]], [extent[2], extent[3]]], {padding: {top: 82, bottom: 30, left: leftPadding, right: 30}});
const viewport = {
...this.state.viewport,
longitude,
latitude,
zoom,
transitionDuration: 2000,
transitionInterpolator: new FlyToInterpolator()
}
this.setState({viewport});