Copyright © 2025 the Contributors to the A Minimal Map Model for Web User Agents Community Report, published by the Maps For HTML Community Group under the W3C Community Contributor License Agreement (CLA). A human-readable summary is available.
This document (Minimal Model) aims to improve the current fragmentation of map technologies on the Web by defining "what is minimally necessary" for maps in Web user agents. It presents common parts and concepts as a foundation to allow all existing map representations—including services, frameworks, content, and hand-drawn expressions—to be mutually connected. This document defines a mechanism to express the correspondence between "Internal Coordinates" and "Real-world Coordinates" (WGS84 [[WGS84]] ) in a form that can be shared on the Web.
This report was published by the Maps For HTML Community Group . It is not a W3C Standard nor is it on the W3C Standards Track. Please note that under the W3C Community Contributor License Agreement (CLA) there is a limited opt-out and other conditions apply. Learn more about W3C Community and Business Groups.
This is a draft document produced by the Maps for HTML Community Group. It is not intended to replace existing technologies or to mandate a new, specific architecture or model.
Technologies for handling maps on the Web have diversified remarkably over the past decade. A wide variety of map representations, services, frameworks, and content exist on the Web, ranging from MapML [[MapML]] (a proposal in the Maps for HTML CG), Leaflet, MapLibre GL JS, Google Maps API, and CesiumJS, to various implementations based on SVG [[SVG]] , the Hyper-Layering Architecture (HLA) [[HLA]] [[HLA-SVGT]] and its implementation svgmap.js, and even free-form Web expressions including hand-drawn maps.
However, this diversity has simultaneously created the challenge of being "disconnected and incompatible." These technologies have evolved as independent worlds, without the prerequisite of a common geographic coordinate model, representation method, or interoperability mechanism.
The current ecosystem faces several specific issues:
Despite their wide use on the Web, the ecosystem of map technology on Web browsers lacks a common underlying semantics. Consequently, map content and code depend on the specific framework or service being used, resulting in limited reusability, portability, and interoperability.
This document (Minimal Model) aims to improve this situation by defining "what is minimally necessary" for maps in Web user agents. It is not intended to replace existing technologies or to mandate a new, specific architecture or model. Rather, its purpose is to present only the "common parts and concepts as a foundation" necessary to allow all existing map representations—including services, frameworks, content, and hand-drawn expressions—to be mutually connected in their current forms.
The target of this document is the "map ecosystem as a whole," and it does not assume any specific product or specification system. What is needed is not a new framework or complex standards, but rather to fill the "minimal semantic hole for maps" currently missing from Web standards.
From this perspective, this document approaches the following questions:
Based on these questions, this document functionally organizes the concept of a "map" and presents a minimal foundational model.
This document intentionally focuses on the Web user agent’s perspective. It does not attempt to redefine cartography, GIS theory, or geodetic practice. Those concerns remain fully valid and are expected to operate above this minimal semantic layer.
On the current Web, extremely diverse "map-like" resources exist, ranging from traditional GIS maps to hand-drawn illustrations. These resources vary greatly in structure, coordinate systems, representation methods, and interaction models; as a result, no unified "map" concept exists for the Web as a whole.
Representative examples include:
It is clear that all of these share a commonality: they are "graphics" that provide the author and user with "some kind of understanding regarding positions in the real world".
However, there is no "minimal common model" on the Web for handling these different types of map-like resources in an interoperable manner. As a result:
This "fragmentation of the map across the Web" is caused by the very diversity of map technology itself and is not a defect of any specific technology. However, as the Web becomes a critical infrastructure for distributing geographic information, this fragmentation has become a major challenge.
This proposal does not attempt to strictly define "what a map is". Rather, it clarifies the minimal commonality required to establish compatibility.
From observation, any map-like resource shares the following common point: For content or parts of content recognized as a map, there is "some kind of relationship" between its internal coordinates (image coordinates, SVG coordinates, canvas coordinates, etc.) and real-world coordinates (latitude, longitude, etc.).
This relationship can be diverse:
The important point is that this relationship does not need to be defined in a unique way, and whether it is high-precision also depends on the case of the map.
In other words, the "minimal semantics" handled by this document is simply: Expressing the correspondence of "Internal Coordinates (coordinates of elements or regions corresponding to a map on Web content) ⇔ Real-world Coordinates" in a form that can be shared on the Web.
Considering the diversity of map usage on today's Web, standardizing a comprehensive map model or layer model is neither realistic nor desirable. The purpose of this document draft is narrowed down strictly to the following single point:
Define a minimal mechanism as a Web standard that allows any map-like resource to declare the relationship of "Internal Coordinates ↔ Real-world Coordinates".
This will allow:
This approach aligns with the fundamental Web principles of "decentralization," "progressive enhancement," "backward compatibility," and "loose coupling".
This chapter reorganized the concept of a "map" on the Web and clarified the "minimal commonality" that can be extracted from its diversity.
Additionally, the following policies were clarified:
Only one thing is needed:
A minimal mechanism that browsers can understand, showing "how an arbitrary Web resource corresponds to the real world".
Once this foundation is in place, it will be possible to build a "Web-native geographic infrastructure" where existing map frameworks, MapML, HLA, and even hand-drawn maps can interoperate.
This chapter defines the minimal concepts of a map to be interpreted by a browser (Web User Agent).
The objectives of this document are:
In this model, a Map is defined as a two-dimensional graphic representation visually displayed as a map on a Web User Agent.
A Map must satisfy the following conditions:
Supplementary Note: This definition includes hand-drawn maps, sketch maps, SVG-based graphics, and Canvas drawings, provided they are visualized as graphics in a browsing context. "Data-only geographic information" is outside the scope of a Map. While 3D maps may require separate consideration, the same logic applies to 3D models projected onto a 2D canvas.
<div>, <canvas>, <img>, <svg>, <iframe>).
It holds a Coordinate Transformation Strategy to map internal units between WGS84 [[WGS84]] and CSS coordinates.
Interoperability: Units following this model are compatible with various map representations and standard coordinate information like the Geolocation API.
This document follows these principles to design a minimal common foundation:
In this document, CSS properties such as geo-conversion-worklet, geo-conversion-parameter, and geo-location, as well as their associated syntax (e.g., matrix(...), lut(...), [longitude, latitude, CSS-X, CSS-Y]), are currently presented as conceptual placeholders to explain the technical approach.
While these notations take into account future compatibility with modules like CSS Values and Units or CSS Houdini, they have not been detailed as a formal specification. The primary focus of this model lies in the minimal semantics behind these notations and the strategies for secure, high-performance implementation. The determination of specific syntax should occur during the work phase of the CSS Working Group after an agreement is reached on the foundational standardizing policy of this Minimal Model.
These strategies are presented as alternatives rather than a hierarchy.
This strategy involves providing the Map container with a transformation strategy that dynamically converts the Geographic Coordinates of child elements into CSS coordinates.
This approach leverages the Worklet infrastructure, ensuring technical alignment and future compatibility with the CSS Houdini APIs, specifically the CSS Painting API [[CSS-PAINT-API-1]] and CSS Layout API [[CSS-LAYOUT-API-1]].
.dynamic-map-container {
position: relative;
/* Referencing a coordinate transformation function defined as an external Worklet */
geo-conversion-worklet: url('my-complex-projection-v2.js');
}
.marker-poi {
position: absolute;
geo-location: 35.6586deg 139.7454deg;
}
<div class="map-container dynamic-map-container">
<div class="marker-poi">📍</div>
</div>
class transform {
constructor(){}
transform(longitude, latitude) {
// ... complex projection logic ...
return {x, y};
}
inverse(x, y) {
// ... inverse projection logic ...
return {longitude, latitude};
}
}
export {transform};
This pattern allows for linear coordinate transformations using a simple designation similar to existing CSS matrix syntax.
.affine-map-container {
position: relative;
/* Coordinate transformation using existing CSS matrix(a,b,c,d,e,f) syntax */
geo-conversion-parameter: matrix(
0.0001, /* a */
-0.00005, /* b */
0.00003, /* c */
0.00012, /* d */
-1000, /* e (Translate X) */
25000 /* f (Translate Y) */
);
}
<div class="map-container affine-map-container"> <div class="marker-poi" style="geo-location: 35.682 139.764">📍</div> </div>
This approach involves directly writing a correspondence table between "geographic coordinates ⇔ CSS coordinates".
.inline-sketch-map {
position: relative;
geo-conversion-parameter: lut(
[139.764, 35.682, 50, 100],
[139.767, 35.680, 350, 450],
/* ... additional points ... */
[lngN, latN, XcssN, YcssN]
);
}
<div class="map-container inline-sketch-map"> <div class="marker-poi" style="geo-location: 35.681 139.765">📍</div> </div>
For larger datasets, the LUT can be referenced as an external JSON file.
.large-gis-map {
position: relative;
geo-conversion-parameter: url('city-center-64x64-lut.json');
}
<div class="map-container large-gis-map"> <div class="marker-poi" style="geo-location: 35.6895 139.6917">📍</div> </div>
It is assumed that a one-way conversion from a functional strategy to a LUT can be executed within the User Agent (UA) at an appropriate timing.
Specifically, a LUT is generated as a Computed Value from the functional strategy. This approach provides several technical advantages:
The following table summarizes the transformation patterns defined in this model:
| Pattern | Syntax | Characteristics |
|---|---|---|
| Functional Worklet | geo-conversion-worklet: url('...') |
Supports complex projections and dynamic calculations; GPU-friendly and secure. |
| matrix | geo-conversion-parameter: matrix(...) |
Utilizes existing CSS syntax; suitable for lightweight, small-scale, or large-zoom maps. |
| LUT (Inline) | geo-conversion-parameter: lut(...) |
Directly references pre-calculated coordinate tables; allows for GPU interpolation. |
| LUT JSON | geo-conversion-parameter: url('...') |
For large-scale data and external file management; securely referenced. |
In all cases, the Coordinate Transformation Strategy is held by the Map container.
Child elements are automatically converted to CSS coordinates by holding a geo-location style property.
Performance, security, convenience, and use cases can be adjusted by choosing the appropriate format (LUT, matrix, or Worklet).
This document clearly separates the map's "display area" from its "content (world)". This redefines the relationship between the SVG viewport and viewBox within the context of the HTML/CSS box model.
overflow: hidden.
geo-conversion-*) is applied to this element.
Through this separation, map panning (movement) and zooming (scaling) are performed via the left/top or transform properties of the map-container element, while the clipBox remains a static window.
This model translates the SVG viewBox concept into HTML/CSS by keeping the "window" fixed and moving the "world" behind it.
<div class="clipBox">
<div class="map-container">
<!-- Map content and markers go here -->
</div>
</div>
/* The clipBox serves strictly as a static "window" */
.clipBox {
width: 500px;
height: 400px;
overflow: hidden; /* This defines the clipping */
position: relative;
border: 1px solid #ccc;
}
/* The map-container represents the "world" and handles movement/scaling */
.map-container {
position: absolute;
width: 3000px; /* A vast map plane */
height: 2000px;
/* Panning is expressed via left/top or transform */
left: -600px;
top: -400px;
/* Geographic binding */
geo-conversion-parameter: url('tokyo-lut.json');
}
The "CSS coordinates" referenced by the geo-conversion-* properties point to the element-local coordinate space, defined by the following rules:
map-container element's padding box is defined as (0, 0).
left/top positioning, visual deformation via transform, or clipping by the clipBox.
Design Intent: This definition ensures that geo-conversion does not need to concern itself with the specific content the element is rendering (such as image pixels or internal SVG coordinates).
Instead, it focuses solely on the conversion between the CSS plane occupied by the element and the geographic space.
This allows for a completely consistent common standard across different element types, such as <div>, <img>, <canvas>, and <svg>.
This model goes beyond simple coordinate mapping. By enabling the Web platform to natively understand geographic space, it provides functionality that is unachievable with existing JavaScript libraries. To minimize implementation complexity, Level 1 focuses on placement and transformation within a single layer, prohibiting the nesting of Map Containers.
The most significant practical benefit is high-precision display synchronization achieved by the browser's layout engine directly interpreting geographic coordinates.
This example demonstrates combining the geo-location property with the existing translate property to align the tip of a pin marker accurately.
<div class="map-container">
<div class="pin-marker">📍</div>
</div>
.pin-marker {
position: absolute;
/* 1. Geographic Coordinate Specification */
/* The browser automatically converts this to CSS coordinates using the container's strategy */
geo-location: 35.6586deg 139.7454deg;
/* 2. Fine-tuning Anchor Position using existing properties */
/* Aligns the tip of the pin (bottom center) with the latitude/longitude */
translate: -50% -100%;
/* 3. Smooth behavior during zoom */
/* Movements "stick" to the map because they are synchronized on the compositor thread */
transition: transform 0.1s linear;
}
To allow developers to easily perform dynamic interactions and spatial calculations, the following standard methods are added to the Map Container element. This removes the need for content-side heavy projection libraries.
MapContainer.getGeoLocation(x, y)MapContainer.getCSSLocation(longitude, latitude)These methods ensure consistent results by internally calling the Coordinate Transformation Strategies (Worklet/LUT) defined in the model.
This model does not introduce new properties for map-specific anchoring. Instead, it achieves flexible placement by combining geographic positioning with the existing CSS box model and transform properties.
translate property to an element placed via geo-location, accurate anchoring can be achieved regardless of the icon's size.
rotate and scale apply normally to elements placed via geographic coordinates.
When the browser understands the "real-world position" of each Rendering Unit, the accessibility tree can be constructed spatially. This allows the browser to move beyond treating map content as a simple image and instead recognize it as an organized geographic space.
Automatic Spatial Navigation Support: Because the browser natively understands the geographic location of elements, assistive technologies can automatically present spatial context to the user, such as:
This elevates map content, previously recognized only as an image, into an "explorable, meaningful space" for users with visual impairments, providing them with the necessary context to navigate and understand the relationship between different geographic points.
To ensure robustness and security, and to minimize the initial burden on browser implementers, Level 1 includes the following restriction:
This restriction avoids high-load, complex processing involving "inverse projection and re-projection from already projected figures," thereby maintaining a simple and predictable rendering pipeline for the User Agent. By keeping the model to a single layer in Level 1, we ensure that the performance benefits of GPU-friendly transformations can be realized without the overhead of nested coordinate system calculations.
This model allows for the handling of everything from rigorous GIS (Geographic Information Systems) to casual illustrative expressions within the same framework. This section demonstrates the different uses of coordinate transformation strategies through two contrasting scenarios.
This scenario involves publishing a "hand-drawn map" on the Web—which may not be geodetically accurate but is visually engaging—and displaying the user's current location.
geo-conversion-parameter: lut() (Look-Up Table) strategy.
geo-location or coordinate with the Geolocation API to show where the user is currently located on the illustration.
This scenario involves displaying dynamic observation posts over weather data that uses an advanced projection method (e.g., Lambert Conformal Conic projection).
geo-conversion-worklet.
geo-location.