NIKA

NIKA OmniMap JS

Every kind of map. One developer surface.

A compact map SDK for products that outgrow a 2D renderer but should not need a hand-built stack. Stream live layers, mix video and app-native UI, render terrain and 3D tiles, edit features, and move from Mercator to globe through one API.

Web first, with the same scene contract for native apps.

Why OmniMap

Stop assembling a map renderer, a visualization framework, and a plugin pile.

MapLibre GL JS is a strong open map renderer. deck.gl is a strong visualization layer system. OmniMap is for teams that need the combined product surface — live sources, native UI, editing, video, 3D scenes, and cross-layer behavior — behind one coherent API and lifecycle.

One scene graph for 2D, 3D, UI, video, and live data
One event model across web, iOS, and Android
One declarative layer contract for rendering and analysis
One plugin surface for custom sources, shaders, and controls

Omni capabilities

From a simple map to a live 3D operating picture.

Start with GeoJSON and a basemap. Add advanced rendering and interaction only when the product needs it.

Streaming layers

Update features, rasters, telemetry, and models without rebuilding the scene.

Video frames

Place live or recorded video frames in geographic context as first-class layers.

App-native overlays

Compose HTML, Swift, Kotlin, and mobile UI above or inside the map.

3D-native

Terrain, tiles, buildings, point clouds, and custom models share one camera.

Custom visual effects

Shaders, particles, glow, atmosphere, and post-processing without renderer surgery.

Cross-layer dependency

Bind labels, alerts, selections, and calculations to upstream layer state.

Draw, modify, filter

Editing and selection tools are built in, with application-defined rules.

Custom shortcuts

Map keyboard, mouse, touch, and controller inputs to your own commands.

Globe + Mercator

Switch projections while preserving layer definitions and interaction state.

GeoJSON + OSM

Use familiar open formats alongside tiles, streams, and proprietary sources.

Small by default

Load the capabilities a screen needs instead of shipping the full engine.

Basemap freedom

Use NIKA, MapTiler, Mapbox-compatible, OSM, raster, or your own tiles.

One layer contract

Describe intent. OmniMap manages the render path.

Sources, renderers, interactions, dependencies, and projection behavior live in one readable object. The same layer can be driven by a static file, an API, or a live stream without rewriting the application around it.

  • Declarative source and layer registration
  • Typed events and stable feature identity
  • Worker-ready transforms for high-volume data
  • Escape hatches for custom WebGPU shaders
scene.ts
const map = new OmniMap({
  projection: "globe",
  basemap: "nika://streets"
})

map.addLayer({
  id: "operations",
  source: liveGeoJSON(stream),
  render: ["symbols", "trails", "3d-models"],
  dependsOn: ["risk-surface"],
  editable: true
})

Early design partners

Building a map product that no single library quite fits?

OmniMap JS is shaped around demanding operational, digital-twin, and live-data applications.