Graceful degradation

Identical <mapml-viewer> markup rendered by the Leaflet build (left) and the MapLibre GL build (right). Each map runs in its own iframe because both engines register the same custom-element names. When an engine cannot honour the preferred resource, it falls back to an alternative the author supplied.

CBMTILE projection negotiation

Both maps declare projection="CBMTILE" and load the same layer, whose Canada Base Map is offered in two projections via a pair of <map-extent> elements: one units="CBMTILE" (EPSG:3978 Lambert) and one units="OSMTILE" (EPSG:3857 Web Mercator). Leaflet renders the native CBMTILE extent (disabling the OSMTILE one); MapLibre GL, if it cannot honour the Lambert projection, gracefully degrades to the OSMTILE extent.

Leaflet — native CBMTILE (Lambert)

MapLibre GL — degrades to OSMTILE