// @flow import Point from '@mapbox/point-geometry'; import type {PossiblyEvaluatedPropertyValue} from "./properties"; import type StyleLayer from '../style/style_layer'; import type CircleBucket from '../data/bucket/circle_bucket'; import type LineBucket from '../data/bucket/line_bucket'; export function getMaximumPaintValue(property: string, layer: StyleLayer, bucket: CircleBucket<*> | LineBucket): number { const value = ((layer.paint: any).get(property): PossiblyEvaluatedPropertyValue).value; if (value.kind === 'constant') { return value.value; } else { return bucket.programConfigurations.get(layer.id).getMaxValue(property); } } export function translateDistance(translate: [number, number]) { return Math.sqrt(translate[0] * translate[0] + translate[1] * translate[1]); } export function translate(queryGeometry: Array, translate: [number, number], translateAnchor: 'viewport' | 'map', bearing: number, pixelsToTileUnits: number) { if (!translate[0] && !translate[1]) { return queryGeometry; } const pt = Point.convert(translate)._mult(pixelsToTileUnits); if (translateAnchor === "viewport") { pt._rotate(-bearing); } const translated = []; for (let i = 0; i < queryGeometry.length; i++) { const point = queryGeometry[i]; translated.push(point.sub(pt)); } return translated; }