🚧 These docs are a work in progress — content is incomplete and may change without notice.
Skip to content

Concepts ​

Terms used throughout the Control Measures and TacticalDraw guides.

Core terms ​

Control measure. A tactical military graphic defined by MIL-STD-2525 or APP-6, such as Block, Ambush, Fortified Area, or Attack-by-Fire. See the catalog for the complete list.

Graphic. One persisted, selectable tactical object and its derived render. A graphic may be a control measure, generic graphic, point symbol, or Image.

Render. The GeoJSON FeatureCollection produced by renderControlMeasure. A graphic can contain several features—for example, an arrow shaft and head. Stable feature IDs let you match parts after an edit.

Snapshot. A { graphic, render } pair captured at one point in time. draw(), edit(), and change listeners return snapshots. Because graphic is a defensive copy, you can safely keep it after the session ends.

Point symbol. A MIL-STD-2525 or APP-6 unit symbol at one position. It is a graphic, but not a control measure, and uses the same TacticalDraw lifecycle. Its renderer is optional; see Optional point symbols.

Image. A host-resource-backed graphic centered at one geographic position. It carries width, rotation, opacity, and immutable intrinsic dimensions while the host owns acquisition and storage. See Host-backed Images.

Points and validity ​

Draw rule. The logic that turns user-placed points into a control measure, including derived points and reshape behavior. For example, the Block rule keeps its stem square when a vertex moves. TacticalDraw applies each kind's rule automatically, so the host does not need kind-specific interaction code.

Input contract. A kind's coordinate requirements. Every coordinate must be a finite [longitude, latitude] pair, and the list must contain enough points. The renderer ignores points beyond the declared maximum.

Validation mode. How the renderer handles an input-contract failure: silent returns an empty render, warn also logs a warning, and throw raises an error. Set it per render call, not as a control-measure option.

Geometric degeneracy. Valid points that cannot form a shape—for example, two coincident points creating a zero-length baseline. This always produces an empty render without a message, regardless of validation mode. It can occur temporarily while the user is drawing.

Drawing and editing ​

Map adapter. The engine-independent bridge between TacticalDraw and a map. It handles GeoJSON rendering, interactions, and viewport calculations without containing control-measure logic. The same TacticalDraw code therefore works with any engine that has an adapter. See Engines.

Engine. A map library. TacticalDraw provides adapters for OpenLayers, MapLibre GL JS, and Leaflet, all behind the same interface.

Rubber-band guide. A line through the current points to the pointer during a variable-length draw or edit. Areas also show a closing segment. It appears alongside the graphic preview and can be disabled per call.

Sizing ​

Some dimensions are independent of the control points, including FLOT scallop radius, fortified-line tooth size, antitank-ditch tooth height, and label height. Labels use labelSize for meters or labelSizePixels for pixels. The following terms apply to all such dimensions.

Size anchor. Whether a dimension stays fixed relative to the ground or the screen. The stored graphic options carry this choice.

  • Ground-anchored: measured in meters. Its geographic size stays fixed, so its on-screen size changes with zoom.
  • Screen-anchored: measured in pixels. TacticalDraw rebuilds its geometry after view changes to keep its on-screen size fixed.

Baking. Converting a pixel size to meters at the zoom level where a draw or edit finishes. The result becomes ground-anchored. This is the default; choose a screen anchor to retain pixel sizing. Active previews remain screen-anchored until commit.

Size input unit. The pixels or meters supplied by the user. Meter values are always ground-anchored. Pixel values bake to meters by default and remain screen-anchored only when requested.

Label size clamp band. The allowed pixel range for ground-anchored label text, calculated as clamp(labelSize / resolution, min, max). Configure it per layer with TextStyleOptions.textSizeMinPixels and textSizeMaxPixels; the default is 8–24 pixels. This is a layer style, not stored graphic data. Screen-anchored labels keep their pixel size without clamping.

Styling ​

Symbol color. The shared stroke and fill color of a control measure, defaulting to black. Override either channel when needed—for example, to make an area fill transparent. See Styling.

Filledness. Whether a symbol part is solid or outlined. Doctrine defines this per part and the generator applies it; geometry type alone does not decide it. An arrowhead is solid, while area measures such as Block may be outlined.

Fill pattern. How a filled part is painted: solid, hatch, reverse-hatch, cross-hatch, horizontal, vertical, or dots. Patterns use the resolved fill color and fixed geometry. Renderers without pattern support fall back to a solid fill. Mine-area measures also use six intrinsic mine-* pictogram patterns selected by their Modifier 1 value.

Color alpha. The alpha channel in color, strokeColor, or fillColor. Hit-testing respects this value, so a fully transparent fill provides no selection surface.

Graphic opacity. A display-time multiplier from 0 to 1, stored as style.opacity. Hit-testing ignores it, so even opacity: 0 remains selectable. Final alpha equals graphic opacity multiplied by color alpha. Point symbols fade as one SVG; control-measure parts fade individually and may appear darker where they overlap. See Graphic opacity.