Standard Toolkit
Toolkits@accelint/map-toolkit

DeckGL

Deck.gl integration components, layers, extensions, and widgets for geospatial visualization.

Installation

pnpm add @accelint/map-toolkit

Usage

// Import base map
import { BaseMap } from '@accelint/map-toolkit/deckgl';

// Import layers
import { DisplayShapeLayer, SymbolLayer } from '@accelint/map-toolkit/deckgl';

// Import extensions
import { CoffinCornerExtension } from '@accelint/map-toolkit/deckgl';

// Import widgets
import { HtmlOverlayWidget, useHtmlOverlay } from '@accelint/map-toolkit/deckgl';

// Import utilities
import { createSavedViewport } from '@accelint/map-toolkit/deckgl';

Available Exports

Components

ExportDescription
BaseMapDeck.gl-powered base map with MapLibre GL integration

Layers

ExportDescription
DisplayShapeLayerDisplay shapes (circles, ellipses, polygons) with custom styling
SymbolLayerDisplay military symbols using MIL-STD-2525 iconography

Extensions

Export PathDescription
extensionsDeck.gl layer extensions
extensions/coffin-cornerExtension for handling entity positioning at map boundaries

Grid Layers

Export PathDescription
grid-layersMilitary grid reference system layers
grid-layers/garsGlobal Area Reference System (GARS) grid layer
grid-layers/mgrsMilitary Grid Reference System (MGRS) grid layer

Shapes

Export PathDescription
shapesShape drawing and editing system
shapes/display-shape-layerDisplay shapes with styling
shapes/draw-shape-layerInteractive shape drawing
shapes/edit-shape-layerEdit existing shapes

Widgets

Export PathDescription
widgetsHTML overlay widgets
widgets/html-overlayPosition HTML elements relative to map coordinates

Utilities

ExportDescription
saved-viewportsSave and restore map viewports with hotkeys

Events

ExportDescription
MapEventsEvent constants for map interactions
MapEventsNamespaceType-safe event namespace
ShapeEventsEvent constants for shape interactions

Constants

ExportDescription
DARK_BASE_MAP_STYLEDark mode MapLibre style URL
LIGHT_BASE_MAP_STYLELight mode MapLibre style URL
PARAMETERSDefault Deck.gl parameters
DASH_ARRAYSPredefined dash patterns for lines
DEFAULT_COLORSDefault color palette for shapes
DEFAULT_STYLE_PROPERTIESDefault style properties for shapes
LINE_PATTERNSLine pattern constants
LINE_WIDTHSStandard line width values
SHAPE_LAYER_IDSLayer ID constants for shape layers

Quick Start

Basic Map with Symbol Layer

import { BaseMap, SymbolLayer } from '@accelint/map-toolkit/deckgl';
import { uuid } from '@accelint/core';

const MAP_ID = uuid();

const data = [
  {
    id: '1',
    sidc: 'SFGPUCI----E---',
    position: [-122.4, 37.8],
    size: 32,
  },
];

export function MapWithSymbols() {
  return (
    <BaseMap id={MAP_ID} className="w-full h-full">
      <SymbolLayer id="symbols" data={data} />
    </BaseMap>
  );
}

Drawing Shapes

import { BaseMap } from '@accelint/map-toolkit/deckgl';
import { DrawShapeLayer } from '@accelint/map-toolkit/deckgl/shapes';
import { useDrawShape } from '@accelint/map-toolkit/deckgl/shapes/draw-shape-layer';
import { uuid } from '@accelint/core';

const MAP_ID = uuid();

export function DrawingMap() {
  const { mode, setMode, shapes } = useDrawShape(MAP_ID);
  
  return (
    <div className="relative w-full h-full">
      <BaseMap id={MAP_ID} className="w-full h-full">
        <DrawShapeLayer id="drawing" mode={mode} />
      </BaseMap>
      
      <div className="absolute top-4 right-4 flex gap-2">
        <button onClick={() => setMode('drawPolygon')}>Draw Polygon</button>
        <button onClick={() => setMode('drawCircle')}>Draw Circle</button>
        <button onClick={() => setMode('select')}>Select</button>
      </div>
    </div>
  );
}

HTML Overlay

import { BaseMap, HtmlOverlayWidget, HtmlOverlayItem } from '@accelint/map-toolkit/deckgl';
import { uuid } from '@accelint/core';

const MAP_ID = uuid();

const markers = [
  { id: '1', position: [-122.4, 37.8], label: 'San Francisco' },
  { id: '2', position: [-118.2, 34.0], label: 'Los Angeles' },
];

export function MapWithOverlay() {
  return (
    <BaseMap id={MAP_ID} className="w-full h-full">
      <HtmlOverlayWidget>
        {markers.map(marker => (
          <HtmlOverlayItem
            key={marker.id}
            coordinates={marker.position}
          >
            <div className="bg-white px-2 py-1 rounded shadow">
              {marker.label}
            </div>
          </HtmlOverlayItem>
        ))}
      </HtmlOverlayWidget>
    </BaseMap>
  );
}

On this page