Interaction Options
InteractionOptions is flutter_map's, field for field. On the native maps the platform itself recognises the
gestures, so each flag maps to its SDK switch:
| Flag | Android (Google Maps) | iOS, macOS (MapKit) |
|---|---|---|
drag | uiSettings.isScrollGesturesEnabled | isScrollEnabled |
pinchMove | isScrollGesturesEnabledDuringRotateOrZoom | MapKit always pans during a pinch |
pinchZoom | isZoomGesturesEnabled | isZoomEnabled — which also covers the scroll wheel and trackpad on macOS, so scrollWheelZoom cannot be told apart there |
doubleTapZoom | no separate switch: follows pinchZoom | the double-tap recognisers of MKMapView |
doubleTapDragZoom | part of the zoom gestures | the one-finger zoom recogniser |
rotate | isRotateGesturesEnabled | isRotateEnabled |
flingAnimation | off: the core stops the native momentum as the last pointer goes up | same |
Disable everything with InteractiveFlag.none, combine with flutter_map's InteractiveFlag values.
Keyboard and cursor
keyboardOptions and cursorKeyboardRotationOptions are handled by the core on every backend — arrow keys,
WASD, QE, RF and the rotation key with the pointer — with flutter_map's velocities. The native maps receive the
resulting camera moves like any other programmatic move.
flutter_map-only tuning
The thresholds and win gestures (rotationThreshold, pinchZoomWinGestures, …), scrollWheelVelocity, the
double-tap durations and curves, and flingAnimationDampingRatio tune flutter_map's own gesture engine. On the
native maps the platform recognises the gestures, so they only apply on the flutter_map backend (web, Windows,
Linux, tests).
Scrolling across the world
The native base maps wrap around the world horizontally by themselves — no option to enable, no camera boundary to lift. Layer objects (markers, shapes) appear once, at their coordinates.