npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

@allmaps/leaflet

v1.0.0-beta.40

Published

Allmaps Leaflet plugin

Downloads

243

Readme

@allmaps/leaflet

Allmaps plugin for Leaflet. This plugin allows displaying georeferenced IIIF images on a Leaflet map. The plugin works by loading Georeference Annotations and uses WebGL to transform images from a IIIF image server to overlay them on their correct geographical position. See allmaps.org for more information.

The development of the Allmaps plugin for Leaflet was funded by CLARIAH-VL.

Example of the Allmaps plugin for Leaflet

Examples:

How it works

This plugin exports the class WarpedMapLayer that extends L.Layer. You can add one or multiple Georeference Annotations (or AnnotationPages that contain multiple Georeference Annotations) to a WarpedMapLayer, and add the WarpedMapLayer to your Leaflet map. This will render all georeferenced maps defined by the Georeference Annotations.

To understand what happens under the hood for each georeferenced map, see the @allmaps/render package.

Installation

This package works in browsers and in Node.js as an ESM or an UMD module.

Install with pnpm:

npm install @allmaps/leaflet

You can build this package locally by running:

pnpm run build

As an alternative to loading using import, ESM and UMD bundled versions of the code are also provided under /dist/bundled (once the code is built). These are also published online, so can load them directly in a HTML script tag using a CDN. They require Leaflet to be loaded as L, so place them after loading Leaflet.

<script src="https://cdn.jsdelivr.net/npm/@allmaps/leaflet/dist/bundled/allmaps-leaflet-1.9.umd.js"></script>

When loading the bundled package, its classes are available under the Allmaps global variable:

const warpedMapLayer = new Allmaps.WarpedMapLayer(annotationUrl)

Usage

Built for Leaflet 1.9, but should work with earlier versions as well.

Loading a Georeference Annotation

Creating a WarpedMapLayer and adding it to a map looks like this:

import { WarpedMapLayer } from '@allmaps/leaflet'

const map = L.map('map', {
  center: [51.0518, 3.7278],
  zoom: 14,
  // Zoom animations for more than one zoom level are
  // currently not supported by the Allmaps plugin for Leafet
  zoomAnimationThreshold: 1
})
L.tileLayer('https://tile.openstreetmap.org/{z}/{x}/{y}.png', {
  attribution:
    '&copy; <a href="https://www.openstreetmap.org/copyright">OpenStreetMap</a> contributors'
}).addTo(map)

const annotationUrl =
  'https://annotations.allmaps.org/manifests/8f9faeba73d67031'
const warpedMapLayer = new WarpedMapLayer(annotationUrl).addTo(map)

When adding this WarpedMapLayer to the Leaflet map, the georeferenced map specified in the Georeference Annotation will be rendered on the Leaflet map.

Specifying a the URL Georeference Annotation when creating a WarpedMapLayer (as is done above) is optional. A Georeference Annotation can also be added at a later stage using the addGeoreferenceAnnotation and addGeoreferenceAnnotationByUrl functions:

fetch(annotationUrl)
  .then((response) => response.json())
  .then((annotation) => warpedMapLayer.addGeoreferenceAnnotation(annotation))

Or:

await warpedMapLayer.addGeoreferenceAnnotationByUrl(annotationUrl)

Events

The following events are emitted to inform you of the state of the WarpedMapLayer.

| Description | Type | Data | | ------------------------------------------------------------- | ------------------------- | ---------------------------------- | | A warped map has been added to the warped map list | warpedmapadded | mapId: string | | A warped map has been removed from the warped map list | warpedmapremoved | mapId: string | | A warped map enters the viewport | warpedmapenter | mapId: string | | A warped map leaves the viewport | warpedmapleave | mapId: string | | The visibility of some warped maps has changed | visibilitychanged | mapIds: string[] | | The cache loaded a first tile of a map | firstmaptileloaded | {mapId: string, tileUrl: string} | | All tiles requested for the current viewport have been loaded | allrequestedtilesloaded | |

You can listen to them in the typical Leaflet way. Here's an example:

map.on('warpedmapadded', (event) => {
  console.log(event.mapId, WarpedMapLayer.getBounds())
})

Some of the functions specified in the API only make sense once a warped map is loaded into the WarpedMapLayer. You can use such listeners to make sure function are run e.g. only after a warped map has been added.

What is a map?

A Leaflet map is an instance of the Leaflet Map class, the central class of the Leaflet API, used to create a map on a page and manipulate it.

In Allmaps there are multiple classes describing maps, one for each phase a map takes through the Allmaps rendering pipeline:

  • When a Georeference Annotation is parsed, an instance of the GeoreferencedMap class is created from it.
  • When this map is loaded into an application for rendering, an instance of the WarpedMap class is created from it.
  • Inside the WebGL2 rendering package, the WebGL2WarpedMap class is used to render the map.

All these map phases originate from the same Georeference Annotation have the same unique mapId property. This string value is used thoughout Allmaps (and in the API below) to identify a map. It is returned after adding a georeference annotation to a WarpedMapLayer, so you can use it later to call functions on a specific map.

API

Table of Contents

WarpedMapLayer

WarpedMapLayer class.

Renders georeferenced maps of a Georeference Annotation on a Leaflet map. WarpedMapLayer extends Leaflet's L.Layer.

onAdd

Contains all code code that creates DOM elements for the layer and adds them to map panes where they belong.

Parameters
  • map

onRemove

Contains all cleanup code that removes the layer's elements from the DOM.

Parameters
  • map

addGeoreferenceAnnotation

Adds a Georeference Annotation.

Parameters
  • annotation any Georeference Annotation

Returns Promise<Array<(string | Error)>> the map IDs of the maps that were added, or an error per map

removeGeoreferenceAnnotation

Removes a Georeference Annotation.

Parameters
  • annotation any Georeference Annotation

Returns Promise<Array<(string | Error)>> the map IDs of the maps that were removed, or an error per map

addGeoreferenceAnnotationByUrl

Adds a Georeference Annotation by URL.

Parameters
  • annotationUrl string Georeference Annotation

Returns Promise<Array<(string | Error)>> the map IDs of the maps that were added, or an error per map

removeGeoreferenceAnnotationByUrl

Removes a Georeference Annotation by URL.

Parameters
  • annotationUrl string Georeference Annotation

Returns Promise<Array<(string | Error)>> the map IDs of the maps that were removed, or an error per map

addGeoreferencedMap

Adds a Georeferenced map.

Parameters
  • georeferencedMap any Georeferenced map

Returns Promise<(string | Error)> the map ID of the map that was added, or an error

removeGeoreferencedMap

Removes a Georeferenced map.

Parameters
  • georeferencedMap any Georeferenced map

Returns Promise<(string | Error)> the map ID of the map that was removed, or an error

getContainer

Gets the HTML container element of the layer

Returns HTMLElement HTML Div Element

getCanvas

Gets the HTML canvas element of the layer

Returns (HTMLCanvasElement | null) HTML Canvas Element

getWarpedMapList

Returns the WarpedMapList object that contains a list of the warped maps of all loaded maps

getWarpedMap

Returns a single map's warped map

Parameters

Returns (WebGL2WarpedMap | undefined) the warped map

showMap

Make a single map visible

Parameters

showMaps

Make multiple maps visible

Parameters
  • mapIds Iterable<string> IDs of the maps

hideMap

Make a single map invisible

Parameters

hideMaps

Make multiple maps invisible

Parameters
  • mapIds Iterable<string> IDs of the maps

isMapVisible

Returns the visibility of a single map

Parameters
  • mapId

Returns (boolean | undefined) whether the map is visible

setMapResourceMask

Sets the resource mask of a single map

Parameters
  • mapId string ID of the map
  • resourceMask Array<Point> new resource mask

setMapsTransformationType

Sets the transformation type of multiple maps

Parameters
  • mapIds Iterable<string> IDs of the maps
  • transformation TransformationType new transformation type

setMapsDistortionMeasure

Sets the distortion measure of multiple maps

Parameters
  • mapIds Iterable<string> IDs of the maps
  • distortionMeasure DistortionMeasure new transformation type

getBounds

Returns the bounds of all visible maps (inside or outside of the Viewport), in latitude/longitude coordinates.

bringMapsToFront

Bring maps to front

Parameters
  • mapIds Iterable<string> IDs of the maps

sendMapsToBack

Send maps to back

Parameters
  • mapIds Iterable<string> IDs of the maps

bringMapsForward

Bring maps forward

Parameters
  • mapIds Iterable<string> IDs of the maps

sendMapsBackward

Send maps backward

Parameters
  • mapIds Iterable<string> IDs of the maps

bringToFront

Brings the layer in front of other overlays (in the same map pane).

bringToBack

Brings the layer to the back of other overlays (in the same map pane).

getMapZIndex

Returns the z-index of a single map

Parameters

Returns (number | undefined) z-index of the map

getZIndex

Gets the z-index of the layer.

setZIndex

Changes the z-index of the layer.

Parameters

setImageInformations

Sets the object that caches image information

Parameters
  • imageInformations ImageInformations Object that caches image information

getPaneName

Gets the pane name the layer is attached to. Defaults to 'tilePane'

Returns string Pane name

getOpacity

Gets the opacity of the layer

Returns number Layer opacity

setOpacity

Sets the opacity of the layer

Parameters

resetOpacity

Resets the opacity of the layer to fully opaque

getMapOpacity

Gets the opacity of a single map

Parameters

Returns (number | undefined) opacity of the map

setMapOpacity

Sets the opacity of a single map

Parameters
  • mapId string ID of the map
  • opacity number opacity between 0 and 1, where 0 is fully transparent and 1 is fully opaque

resetMapOpacity

Resets the opacity of a single map to 1

Parameters

setSaturation

Sets the saturation of a single map

Parameters
  • saturation number saturation between 0 and 1, where 0 is grayscale and 1 are the original colors

resetSaturation

Resets the saturation of a single map to the original colors

setMapSaturation

Sets the saturation of a single map

Parameters
  • mapId string ID of the map
  • saturation number saturation between 0 and 1, where 0 is grayscale and 1 are the original colors

resetMapSaturation

Resets the saturation of a single map to the original colors

Parameters

setRemoveColor

Removes a color from all maps

Parameters
  • options Object remove color options

    • options.hexColor string? hex color to remove
    • options.threshold number? threshold between 0 and 1
    • options.hardness number? hardness between 0 and 1

resetRemoveColor

Resets the color removal for all maps

setMapRemoveColor

Removes a color from a single map

Parameters
  • mapId string ID of the map

  • options Object remove color options

    • options.hexColor string? hex color to remove
    • options.threshold number? threshold between 0 and 1
    • options.hardness number? hardness between 0 and 1

resetMapRemoveColor

Resets the color removal for a single map

Parameters

setColorize

Sets the colorization for all maps

Parameters
  • hexColor string desired hex color

resetColorize

Resets the colorization for all maps

setMapColorize

Sets the colorization for a single map

Parameters

resetMapColorize

Resets the colorization of a single map

Parameters

clear

Removes all warped maps from the layer