UNPKG

react-map-gl

Version:

A React wrapper for MapboxGL-js and overlay API.

53 lines (44 loc) 1.91 kB
import _defineProperty from "@babel/runtime/helpers/esm/defineProperty"; import assert from '../assert'; import TransitionInterpolator from './transition-interpolator'; import { flyToViewport } from 'viewport-mercator-project'; import { isValid, getEndValueByShortestPath } from './transition-utils'; import { lerp } from '../math-utils'; const VIEWPORT_TRANSITION_PROPS = ['longitude', 'latitude', 'zoom', 'bearing', 'pitch']; const REQUIRED_PROPS = ['latitude', 'longitude', 'zoom', 'width', 'height']; const LINEARLY_INTERPOLATED_PROPS = ['bearing', 'pitch']; export default class ViewportFlyToInterpolator extends TransitionInterpolator { constructor() { super(...arguments); _defineProperty(this, "propNames", VIEWPORT_TRANSITION_PROPS); } initializeProps(startProps, endProps) { const startViewportProps = {}; const endViewportProps = {}; for (const key of REQUIRED_PROPS) { const startValue = startProps[key]; const endValue = endProps[key]; assert(isValid(startValue) && isValid(endValue), "".concat(key, " must be supplied for transition")); startViewportProps[key] = startValue; endViewportProps[key] = getEndValueByShortestPath(key, startValue, endValue); } for (const key of LINEARLY_INTERPOLATED_PROPS) { const startValue = startProps[key] || 0; const endValue = endProps[key] || 0; startViewportProps[key] = startValue; endViewportProps[key] = getEndValueByShortestPath(key, startValue, endValue); } return { start: startViewportProps, end: endViewportProps }; } interpolateProps(startProps, endProps, t) { const viewport = flyToViewport(startProps, endProps, t); for (const key of LINEARLY_INTERPOLATED_PROPS) { viewport[key] = lerp(startProps[key], endProps[key], t); } return viewport; } } //# sourceMappingURL=viewport-fly-to-interpolator.js.map