gestures library

vmap's gestures, for a map widget other than Vmap that draws with a VmapEngine: the flutter_map layer takes them from here. Implement MapGestureTarget for the widget's camera, give it to a MapGestureRecognizer, and put a MapGestureDetector over the map.

Classes

MapGestureDetector
Feeds a MapGestureRecognizer the pointers, scrolls, keys and browser pinches that land on child, and draws the box of a shift drag over it.
MapGestureRecognizer
Reads touches, the mouse, a trackpad and the keyboard as MapLibre GL JS does, and moves a MapGestureTarget. One finger pans; two pinch, turn, and tilt when dragged up or down together; a double tap zooms in and a two finger tap out; a double tap held and dragged zooms. A mouse wheel zooms, a double click zooms in and a shift double click out, a right or control drag turns and tilts, and a shift drag zooms to its box. Two fingers on a trackpad slide the map, a pinch zooms and a twist turns it. With focus the arrow keys pan, + and - zoom, two levels with shift, and shift with the arrows turns and tilts. Released gestures keep their speed and slow down naturally. options switches each of them off.
MapGestureStep
One change a gesture makes to the camera: the ground under from moved under to, then zoomed by zoomBy levels and turned by turn degrees of bearing about around, and tilted by tilt degrees of pitch. around is to when not given, and the camera's centre on the screen when neither is.
MapGestureTarget
What a MapGestureRecognizer moves: the camera of a Vmap, or of a map widget hosting vmap.
MapGlide
A released gesture coasting and slowing like a body on a surface: the map slides at pan screen pixels a second and zooms, turns and tilts at their rates per second, all about screen point focal.
VmapGestureOptions
Which gestures move the map, by MapLibre GL JS's handler names, and the two kinds of movement any of them may make, as flutter_map's flags have them: a turn needs rotate and the handler, a tilt needs pitch and the handler.