Обновление состояния области просмотра после вызова fitBounds - PullRequest
0 голосов
/ 17 января 2019

Я создал карту с помощьюact-map-gl. Всякий раз, когда я масштабирую или перемещаю карту, окно просмотра обновляется, так как onViewStateChange prop вызывает функцию _updateViewPort, которая устанавливает новое состояние. Проблема, с которой я сталкиваюсь, заключается в том, что при увеличении масштаба с помощью функции mapbox fitBounds onViewStateChange, похоже, не срабатывает, и в результате состояние области просмотра никогда не изменяется. В результате, в следующий раз, когда я перемещаюсь или масштабирую карту, она возвращает меня туда, где я был до того, как я вызвал метод fitBounds. Кто-нибудь сталкивался с этим раньше, и есть решение?

1 Ответ

0 голосов
/ 17 января 2019

То, что в итоге заработало, - это вычисление новой широты, долготы и масштаба для моего нового экстента, для которого я использовал масштабирование 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});
...