Skip to content

addProjection()

addProjection(crs: CRS): void

Defined in: geo/projection/projection_crud.ts:50

Experimental

Registers a planar coordinate reference system so it can be used as a map projection. After registration the CRS name is accepted, as a plain name, by the style's projection.type and by map.setProjection({type: name}). Every tile source of such a map is taken to be cut in the quad tile grid described by tileMatrixSet, and the map does not reproject tile content. The pre-registered 'identity' projection is an identity CRS over lng/lat degrees, where tile 0/0/0 spans -90..90 on both axes. The name of a registered CRS needs a colon, like 'EPSG:2193' or 'custom:floor-plan': names without one are reserved for built-in projections.

A map in a registered projection never renders world copies and never wraps across an antimeridian.

Parameters

Parameter Type Description
crs CRS the CRS

Returns

void

Throws

Error if the name has no colon, is already registered, or if tileMatrixSet.extentAtZoom0 is not positive

Example

// NZTM2000 (EPSG:2193) with the LINZ NZTM2000Quad tile matrix set, using proj4js for the math.
// The origin and extent below come from the NZTM2000Quad TileMatrixSet definition;
// copy them from that definition rather than from this example.
proj4.defs('EPSG:2193', '+proj=tmerc +lat_0=0 +lon_0=173 +k=0.9996 +x_0=1600000 +y_0=10000000 +ellps=GRS80 +units=m +no_defs');
addProjection({
    name: 'EPSG:2193',
    projection: proj4('EPSG:4326', 'EPSG:2193'),
    tileMatrixSet: {
        origin: [-3260586.7284, 10438190.1652], // top-left of tile 0/0/0, from the NZTM2000Quad TileMatrixSet
        extentAtZoom0: 10018754.1714 // width of tile 0/0/0 in meters, from the NZTM2000Quad TileMatrixSet
    }
});
const map = new Map({
    container: 'map',
    style: {version: 8, projection: {type: 'EPSG:2193'}, sources: {}, layers: []}
});