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

Registered overlays ​

A registered overlay is a transparent sheet, printed on film or tracing paper, that you lay over a paper map of the same scale. Registration marks at known MGRS grid intersections let the user line the overlay up with the map's grid.

Add registration marks ​

Add registration to a normal request. The page, center, projection, and scale stay exactly as you set them: registration only checks the sheet, it never moves, rotates, or resizes it.

ts
import { createTacticalMapSheet } from "@orbat-mapper/tactical-map-sheet";

const overlay = createTacticalMapSheet({
  page: { widthMm: 297, heightMm: 210, marginMm: 10 },
  center: [-2.5, 49.2],
  scaleDenominator: 25_000,
  layers,
  registration: {
    marks: [
      { id: "southwest", mgrs: "30U WV 33924 48309", label: "SW" },
      { id: "northeast", mgrs: "30UWV3892451309" },
    ],
    snapIntervalMeters: 1_000,
  },
  marginalia: { showFrameCornerMarks: false, showCalibrationMarks: false },
  printerCalibration: {},
});

overlay.registrationMarks;
// [
//   { id: "southwest", mgrs: "30UWV3448", position: [-2.533, 49.184],
//     sheetPositionMm: { xMm: 51.5, yMm: 177.4 } },
//   { id: "northeast", mgrs: "30UWV3951", ... },
// ]

Each mark is an 8 mm black crosshair at the grid intersection. A mark's label is printed next to it; without one, the abbreviated easting and northing are printed instead, as on a paper map.

Rules for marks ​

  • At least two marks, with unique, non-empty IDs, at two different positions.
  • MGRS references may use any case and spacing. A reference names the southwest corner of its grid square, not its center.
  • snapIntervalMeters (optional) snaps each mark to the nearest 100 m, 1 km, 10 km, or 100 km grid intersection, and shortens its reference to match. Use it to turn a precise position into a grid intersection that exists on the paper map. In the example, 33924 48309 snaps to 34 48.
  • Every mark must be in the sheet's UTM zone and hemisphere (or UPS hemisphere).
  • The whole crosshair and its label must fit inside the map frame.

If any mark breaks a rule, the request throws. Marks are never dropped or moved to make them fit.

Transparency ​

Registered overlays must be transparent. A page.background other than "transparent", or a raster basemap, is rejected. The MGRS grid, graphics, and marginalia are still optional; most overlays turn off the grid so it does not hide the paper map's own grid.

Check the print scale ​

A printer that scales the page by even 2% misaligns an overlay by several millimeters. Add printerCalibration: {} to print a 100 mm line with end ticks and a label in the bottom margin. Set lengthMm to choose another length. The request fails if the line does not fit in the margin.

To print an overlay:

  1. Export as SVG or PDF.
  2. Print at 100% / Actual size, with Fit to page turned off.
  3. Measure the calibration line. If it is not the stated length, fix the printer settings and print again. Do not resize the overlay to compensate.

The calibration line never changes the sheet's geometry, scale, or marks.

Legacy marks

marginalia.showCalibrationMarks controls an older pair of 10 mm marks and is independent of printerCalibration. showFrameCornerMarks controls the ungeoreferenced crosses at the frame corners; the deprecated showRegistrationMarks is an alias for it.