@morphemeris/armilla-map-maplibre
v0.1.1
Published
MapLibre GL JS adapter for armilla's astrocartography line model (spec §12.2): draws predicate-honoring ACG lines, labels, and the place marker over a tiled basemap.
Maintainers
Readme
@morphemeris/armilla-map-maplibre
The MapLibre GL JS adapter for armilla's astrocartography line model (spec §12.2): draws
predicate-honoring ACG lines, glyph + designation labels, and the birthplace marker over a tiled
basemap. Library choice rationale: plinth/research/map-library-survey.md.
The package is standalone at runtime — no dependency on @morphemeris/armilla-core (its MapLine types are
structural mirrors, drift-pinned by compat.test.ts) and none on maplibre-gl (the overlay uses
a structural MapLike subset of the map, also compat-pinned), so it hosts on any compatible map
version.
Use
import { mapLines } from '@morphemeris/armilla-core';
import { AcgOverlay } from '@morphemeris/armilla-map-maplibre';
map.on('load', () => {
const overlay = new AcgOverlay(map); // after `load`: layers need a style
overlay.setModel(mapLines(chartInput, viewState, environment));
overlay.setPlace({ latitude: 51.4779, longitude: 0 });
});
// View-state rules changed? Recompute — hidden lines are already omitted,
// dim/emphasize ride each line and the default styling applies them.
overlay.setModel(mapLines(chartInput, nextViewState, environment));
overlay.remove(); // removes every source, layer, element, and listener it addedOptions (AcgOverlayOptions): idPrefix, scheme (light | dark palette), labels,
lineStyle(line) to replace the default theme-mirroring styles, labelElement(line) to replace
the default glyph + designation label. Labels are .armilla-acg-label elements and the place
marker is .armilla-acg-place — style them with CSS.
Labels follow the viewport: on every map move each label re-anchors to its line's visible
stretch — the MC/IC meridians pin a label just inside the top and bottom edges at the line's
longitude, curves ride their center-nearest visible vertex — and a label hides only while its
line is out of view. Hovering a line emphasizes it (width +1, full opacity, pointer cursor)
and bolds its labels, which also gain .armilla-acg-label-hover for custom styling.
Demo
demo/index.html shows the acg fixture's 50 lines over
OpenFreeMap tiles:
pnpm --filter @morphemeris/armilla-core build:wasm # once, if the WASM artifact is stale
pnpm build && pnpm gen:demo # dist + demo/model.json
python -m http.server 8741 # from this package directory
# open http://localhost:8741/demo/