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.

Status of this document

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.

Introduction

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.

What is a "Map" in a Web Browser? (Reorganizing Concepts on the Web)

Background

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".

Current Problems

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.

Considering a Minimal "Web Map" Concept

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.

Basic Policy for Standardization

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".

Summary

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.

Minimal Map Model Concepts

This chapter defines the minimal concepts of a map to be interpreted by a browser (Web User Agent).

The objectives of this document are:

Definition of a "Map" in Web User Agents

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.

Components of a Map

Map Container
The 2D area rendered on the browser (e.g., <div>, <canvas>, <img>, <svg>, <iframe>). It holds a Coordinate Transformation Strategy to map internal units between WGS84 [[WGS84]] and CSS coordinates.
Rendering Unit
Individual elements placed within the Map (e.g., icons, markers, SVG paths, images, WebGL instances). They are placed in CSS coordinates and correspond to WGS84 [[WGS84]] positions according to the strategy. They maintain compatibility with the Geolocation API and GeoJSON [[GEOJSON]].
Geo-reference (Geographic Coordinates)
Represents the position on Earth (Datum) indicated by each unit. It uses WGS84 [[WGS84]] to align with Web standards.
Coordinate Transformation Strategy
Transformation parameters (e.g., LUT, matrix) or functions (e.g., JS Worklet) associated with the Map Container. It expresses the relationship between CSS and WGS84 [[WGS84]] coordinates. This approach is GPU-friendly, secure, and applicable to complex projections or sketch maps.

Interoperability: Units following this model are compatible with various map representations and standard coordinate information like the Geolocation API.

Principles of Minimal Extension

This document follows these principles to design a minimal common foundation:

Deep Dive into Coordinate Transformation Strategies (with Samples)

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.

Functional Strategy (Worklet)

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};
    
Key Characteristics:
  • Because it references external JavaScript as a Worklet, it can be executed at high speed natively by the browser while remaining secure.
  • It utilizes a Turing-complete processing system.
  • It can encompass advanced coordinate transformations, including non-linear transformations such as UTM or the Goode homolosine projection.

matrix: Parametric Transformation

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>
  
Key Characteristics:
  • High compatibility with traditional CSS transformations and simple to specify.
  • Suitable for lightweight operations on small-scale maps or simplified sketch maps.

LUT (Lookup Table): Parametric Transformation

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>
  
Key Characteristics:
  • Supports arbitrary transformations that cannot be expressed in functional forms, such as hand-drawn maps.
  • It can serve as a performance and security measure to complement functional strategies.
  • It is also envisioned that these LUT-type parameters can be generated by pre-calculating the results of a functional strategy for internal operation.

LUT JSON File Reference: Parametric Transformation

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>
  
Key Characteristics:
  • Effective for maps with large amounts of data or detailed city-center maps.
  • Like Worklets, these are loaded securely by the browser.

Internal Conversion from Functional Strategy to LUT

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:

  • Hardware Acceleration: It allows for acceleration via GPU interpolation or WebGL/WebGPU rendering.
  • Enhanced Security: It enhances security by removing complex JavaScript logic from the immediate rendering pipeline after the LUT has been generated.

Pattern Summary

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).

Viewport and Clipping Model (clipBox)

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.

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');
}
  

Definition of Element-local Coordinate Space

The "CSS coordinates" referenced by the geo-conversion-* properties point to the element-local coordinate space, defined by the following rules:

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>.

Functional Utility of Minimal Map Model (Level 1)

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.

Native Geolocation Layout (CSS Integration)

The most significant practical benefit is high-precision display synchronization achieved by the browser's layout engine directly interpreting geographic coordinates.

Implementation Example: Accurate Pin Placement

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;
}
    

Coordinate Transformation Interface (API Extensions)

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)
Takes coordinates in the container's local coordinate space (in CSS pixels) and returns the corresponding geographic coordinates (WGS84 [[WGS84]] ).
MapContainer.getCSSLocation(longitude, latitude)
Takes geographic coordinates and returns the latest CSS coordinates within the container based on the current zoom level and strategy.

These methods ensure consistent results by internally calling the Coordinate Transformation Strategies (Worklet/LUT) defined in the model.

Maintaining Orthogonality with Existing CSS Properties

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.

Semantic Accessibility (A11y)

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.

Limitations in Level 1 (Simplification of Implementation)

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.

Use Cases and Implementation Examples

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.

Case A: Hand-drawn Tourist Illustration Map

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.

Case B: Real-time GIS Weather Layer

This scenario involves displaying dynamic observation posts over weather data that uses an advanced projection method (e.g., Lambert Conformal Conic projection).