Open source · Built and maintained by Zaes

Add tactical graphics to modern web-based maps

Zaes Tactical Graphics generates editable MIL-STD-2525E, FM 1-02.2 and APP-06 control measures, tactical mission tasks, boundaries, corridors, sectors, obstacles, and other multipoint graphics as portable GeoJSON. Use them in planning, rehearsal, training, common operational pictures, and other mission applications.

$npm install @zaes/tactical-graphics
Actual library outputGeoJSON → renderer
Tactical graphics generated by the Zaes library, including arrows, phase lines, mission tasks, obstacles, range fans, and area graphics
OpenLayersMapLibreEditable control points
300+implemented graphics
300+doctrinal variants
14categories
2open source renderers
34packages, no copyleft

A tactical graphics component for the mission application you already have

The library handles the geometry for multipoint control measures. Your application keeps its basemap, data, storage, permissions, tracks, overlays, and workflow.

01

Common operational pictures

Add tactical overlays to an existing web COP without replacing its map or data services.

02

Planning and rehearsal

Draw, edit, save, and restore control measures for operational planning and training workflows.

03

Fires, airspace, and UAS tools

Use the graphic families relevant to a focused mission application instead of building a full symbol engine.

04

C2 prototypes and experiments

Put a working tactical-graphics workflow in front of operators before committing to a larger integration.

The package handles the graphics while Zaes builds the application around them

A capable development team can adopt the library under the MIT license on its own. Bring us in when the schedule, integration, or mission workflow needs a team that already knows the code and the problem.

01

Application integration

Add drawing, editing, storage, and exchange of tactical graphics to an existing COP or planning application.

Typical scope: renderer integration, editing UI, saved overlays, and connections to existing application services.

02

Capability development

Implement the graphics, amplifiers, renderer support, or exchange behavior a program needs.

Typical scope: a defined symbol family, new renderer adapter, or extension for a particular program.

03

Mission thread prototype

Connect tactical graphics to representative tracks, overlays, data services, and operator workflows.

Typical scope: a working demonstration used to evaluate a use case before larger integration.

04

Program delivery and transition

Prepare the implemented capability for the program environment and the team that will own it.

Typical scope: testing, documentation, SBOM, deployment packaging, maintenance planning, and transition support.

Have a specific application in mind?Tell us the mapping environment, the workflow, and what has to be demonstrated.
Discuss the application

See the graphics before you evaluate the architecture

The gallery below comes from the demo application's Draw samples function. The live demo lets you draw a graphic, move its control points, change its properties, and switch between the OpenLayers and MapLibre renderers.

Gallery of tactical graphics rendered by the Zaes libraryOpen the live demo →

Take the same graphics further

The open source package draws on 2D maps. Commercial add-ons from Zaes carry the same graphics and the same saved files further: onto Cesium terrain in 3D, into WinTAK, ATAK and TAK Server, both ways, to other command and control systems as NATO Vector Graphics or C2SIM, and into the ArcGIS Maps SDK. They are licensed separately from the MIT package.

Cesium 3D

Commercial

Every graphic the library draws, draped over Cesium terrain, with airspace standing up as volumes. Built for CesiumJS; terrain, imagery, and Cesium ion services are customer provided or separately licensed.

  • 23 airspace graphics stand between their floor and ceiling. AGL ceilings follow the ground under them.
  • Range fans stand band by band, each at its own reach above the weapon or sensor site.
  • Draw and edit with the same gestures as the 2D engines, and drag a floor or ceiling to change its altitude.
  • Airspace conflicts, line of sight, air defense coverage and planned flights checked in four dimensions, against the real terrain.
  • Opens the same saved files as OpenLayers and MapLibre, and exports KML and CZML.
Watch the Cesium add-on at work → A Cesium 3D view over the Swiss Alps: an air corridor floating between 12,000 and 16,000 ft MSL, a restricted operations zone following the ridges, an airspace coordination area, and a weapon and sensor range fan standing band by band in the foreground Click to enlarge

TAK

Commercial

The planners' graphics in WinTAK and ATAK, drawn and edited with the same library as the web app and kept in step with it through a TAK Server mission, so the people carrying the plan see what the planners drew, and the planners see what changed.

  • WinTAK and ATAK plugins draw all 323 graphics the way the web app does: the same line work, arrowheads, hatches, labels and halos.
  • Draw and edit in WinTAK, or by touch in ATAK, with the web app's own tools: its clicks, handles, Move, Rotate and Resize, and its properties, in one pane for both.
  • Two-way through TAK Server Data Sync: draws, edits and deletes at any end reach the others within seconds, and stay one graphic.
  • Layers are missions; a WinTAK or ATAK that joins later gets the graphics already there.
  • A bridge holds the client certificate, so the browser never sees it. Run it on a workstation or host it in a container.
  • For TAK clients without the plugin, push the plan as plain CoT shapes, or export CoT files.
See the TAK add-on in WinTAK and ATAK → WinTAK showing an assembly area, a line of departure, phase lines, two axes of advance and an enemy battle position, with the Tactical Graphics pane open on the right Click to enlarge

Exchange

Commercial

Share plans with other command and control systems in the formats they read: NATO Vector Graphics (NVG), the NATO format for exchanging tactical overlays, and C2SIM, the SISO standard for passing plans between command and control systems and simulations.

  • NVG exports validate against the NVG 2.0.2 schema, with symbol codes from NATO's current NVG binding for APP-6(D).
  • Writes APP-6A and MIL-STD-2525C codes too, for older systems that still read them.
  • C2SIM messages validate against the schema of the SISO standard and the one used in NATO's CWIX exercises, with each graphic's symbol code and force side.
  • Imports NVG 1.4, 1.5 and 2.0 and C2SIM as editable graphics, and keeps an NVG file's units and plain drawings on the map beside them.
  • Files it exports reopen as they were drawn, and each export reports what another system can and cannot read.
Watch the Exchange add-on at work →

ArcGIS

Commercial

All 323 graphics in the ArcGIS Maps SDK for JavaScript, drawn, edited and saved in a MapView with the same gestures and files as the other engines.

  • Every graphic draws the same as on OpenLayers, checked graphic by graphic.
  • Grips, edit controls and the properties dialog work as they do on the 2D engines.
  • Rotated views keep line labels on their lines and the right way up.
  • Plans saved on ArcGIS open on OpenLayers, MapLibre and Cesium.
Watch the ArcGIS add-on at work →
Evaluating an add-on for a program?Tell us about your environment, deployment constraints, and operator workflow. Add-on evaluations, program licensing, and integration support are available.
Discuss an evaluation

Portable input and editable map output

The input is a GeoJSON feature with a Zaes tacticalGraphic property. The core returns generated GeoJSON plus label anchors and edit handles. A renderer adapter is still required for full styling and interaction in a map.

Point symbols are placed. Tactical graphics are constructed.

A point-symbol library places a unit or equipment symbol at one coordinate. Tactical graphics turn multiple user-defined points into editable lines, areas, corridors, sectors, obstacles, and mission tasks that must retain their intended form as the geometry changes. Zaes focuses on that multipoint problem and can be used alongside point-symbol libraries such as milsymbol.

example.ts
import { renderTacticalGraphic, TacticalGraphicName }
  from '@zaes/tactical-graphics';

const { graphic, labels, handles } =
  renderTacticalGraphic({
    type: 'Feature',
    geometry: {
      type: 'LineString',
      coordinates: [
        [-77.04, 38.89],
        [-76.95, 38.95]
      ]
    },
    properties: {
      tacticalGraphic: {
        name: TacticalGraphicName.MainAxisOfAdvance,
        designation: '1-508 IN',
        hostility: 'Friend',
        width: 300
      }
    }
  });

Portable core

The core has no OpenLayers or MapLibre dependency. It can run in a browser, server process, or test runner.

Renderer adapters

OpenLayers and MapLibre adapters provide drawing and editing behavior for each map. Another engine requires another adapter.

Editable restoration

Save the original feature and the properties that define the tactical graphic so the application can restore it as editable control points.

Turf, and nothing else

The core depends only on the individual Turf modules it calls — 34 packages in the production tree, every one permissively licensed. Mapping libraries are optional peer dependencies used by their respective entry points.

ImportWhat it providesAdditional library
@zaes/tactical-graphicsGeometry, paint descriptions, label anchors, and edit handlesindividual @turf/* modules
…/openlayersOpenLayers drawing, styling, and editing adapterol peer
…/maplibreMapLibre layers, styling, and editing adaptermaplibre-gl peer

Built against published symbology references, with the limits stated plainly

The library follows MIL-STD-2525E (Change 1, March 2025), the joint standard, for its control measures and entity codes. It uses FM 1-02.2 (January 2025, with Change 1), the Army's compilation of the 2525E land symbols, for shape and amplifier placement, and NATO APP-06 Edition E, the NATO counterpart, for anchor-point rules. Automated regression tests protect the implemented behavior as the library changes.

Zaes does not claim government certification or independent conformance validation. Programs should perform the review appropriate to their mission and configuration.

MIL-STD-2525E

288 of the 323 graphics are in MIL-STD-2525E Change 1, checked against its control measure table by entity code. The library does not claim full MIL-STD-2525 conformance.

FM 1-02.2

The Army reference used for graphical plates and amplifier placement.

APP-06

NATO Joint Military Symbology, Edition E - the source for the symbols and anchor-point numbering the joint standard shares. NATO is acknowledged as the publisher.

Stated per graphic

Every graphic records which of MIL-STD-2525E, FM 1-02.2 and APP-06 define it, and its six-digit entity code where one exists.

300+ implemented graphics

More than 300 graphics across 14 categories cover more than 300 doctrinal variants. A variant that differs only by an amplifier or property, such as affiliation or traffic direction, shares one graphic. Every APP-06 line and area group is complete.

Current roadmap

A Leaflet renderer is planned for the open source package. Roadmap items are not current package capabilities.

Browse the full graphic catalog

The catalog groups the current package by graphic family and shows the actual generated output. A doctrinal variant may share one implementation when the difference is controlled by an amplifier or property.

Use the package directly or hire Zaes for the surrounding work

The published package can be used, modified, and redistributed under its MIT license. It has no license key, seat count, or package telemetry. You do not need Zaes's permission to include it in your product. The add-ons are commercial and licensed separately.

Fund a needed capability

Sponsor a defined graphic family, amplifier, renderer, or integration that your schedule requires.

Describe the requirement →

Bring in Zaes

Use Zaes for application integration, a mission thread prototype, or program delivery and transition.

Discuss the application →

Tell us what your application needs to draw, save, and exchange

Send us the mapping environment, the workflow, and the graphics that matter. We can tell you whether the open source package covers it and where Zaes could help.