doxa-maps/plugin-designs/doxa-research-map/research-map.instances.json
doxa-maps-88655c70 e7bc86d4f2 Map engine is one prop: MapLibre drops the search bar, legend rises
Simple Research showed a Fly + Clusters toolbar where the search bar used
to be, and the map offered no way to pick an engine without writing a
second map.

FLY + CLUSTERS ARE NOW LEAF-ONLY. LegendTools renders at top:14px centred
on the legend column — the search bar's exact slot — so on the Regions and
Languages tabs (the legendTypes its predicate allows) it reads as having
REPLACED the search bar. MEASURED on the leaf: fly toolbar at y=58 against
the search bar at y=56, the two on top of each other. In a stack whose
bottom half is a grid the reader is scanning, a fly-tour that moves the
camera underneath fights the other half, so the composite passes
legendTools:false. The standalone leaf keeps both.

THE ENGINE IS ONE PROP. resolveMapProvider already read profileConfig
.provider, so research-map.instances.json publishes the maplibre instance
and a partner running thousands of embeds changes one value instead of
maintaining a second map. Mapbox stays the default: it carries the richer
feature set. MapLibre is the keyless option for volume.

MAPLIBRE SHIPS NO SEARCH BAR, ON PURPOSE. GeocoderComponent's maplibre path
still calls makeMapboxForwardGeocode(accessToken) (:526) — the geocoding
REQUEST goes to Mapbox whichever engine draws the tiles. Shipping the bar
under maplibre would keep billing the exact key the option exists to avoid
while LOOKING free. Under mapbox it stays, unchanged.

AND THE LEGEND RISES INTO THE VACATED SPACE. SemanticTreeLegend's
--stl-top defaults to 60px that exists only to reserve room for a search
bar; leaving it when the bar is gone is a dead band. MapToolbar's
has-geocoder collapses its own reserved gap the same way.

MEASURED against the built tree:
  leaf mapbox      search@56  legend@104   fly@NONE (Prayer) / @58 (Regions)
  leaf maplibre    search@NONE legend@58   — legend rose 46px
  composite        search@NONE legend@104  fly@NONE on Regions

7/7 pre, 18/18 post.

KNOWN GAP, pre-existing and NOT introduced here: the mapbox composite still
shows no search bar. mapboxToken is injected per element and the composite
passes neither tk nor tokenUrl to its child, so the child's geocoder gets
an empty token and bails while the tiles render from another path. Isolated
but not fixed.
2026-09-24 00:43:44 +00:00

7 lines
867 B
JSON

{
"_comment": "Preconfigured instances of the research map. The ENGINE IS ONE PROP: provider:'maplibre' swaps Mapbox for the token-free engine, so a partner running thousands of embeds changes a single value instead of maintaining a second map. Mapbox stays the default because it carries the richer feature set; maplibre is the keyless option for volume. Under maplibre the search bar is deliberately ABSENT — GeocoderComponent's maplibre path still geocodes through Mapbox, so shipping it would bill the very key this instance exists to avoid — and the legend rises into the vacated space (--stl-top) rather than leaving a dead band.",
"instances": [
{ "id": "maplibre", "title": "Research map — MapLibre (token-free, no search bar)",
"props": { "profile": "research-map", "provider": "maplibre", "instanceId": "research-map-maplibre" } }
]
}