@allmaps/maplibre

中文文档
1.0.0-beta.44发布于 2026/09/22MITES Module近 30 天下载 4277

Allmaps 地图Libre 类

中文使用文档
文档目录26 节
  1. 如何运作
  2. 安装
  3. 使用量
  4. 将一个被扭曲的MapLayer添加到地图里
  5. 装入地理参考说明的方法
  6. 扭曲的MapLayer API, 选项和事件
  7. 许可证
  8. API 密码
  9. MapLibreWarpedMapLayerOptions
  10. new WarpedMapLayer(options)
  11. WarpedMapLayer#getBounds()
  12. WarpedMapLayer#getCenterZoomBearing(options)
  13. WarpedMapLayer#getMapCenterZoomBearing(mapId, options)
  14. WarpedMapLayer#getMapsBounds(mapIds)
  15. WarpedMapLayer#getMapsCenterZoomBearing(mapIds, partialOpti…
  16. WarpedMapLayer#id
  17. WarpedMapLayer#map?
  18. WarpedMapLayer#nativePassWarpedMapEvent(event)
  19. WarpedMapLayer#nativeUpdate()
  20. WarpedMapLayer#onAdd(map, gl)
  21. WarpedMapLayer#onContextLost
  22. WarpedMapLayer#onContextRestored
  23. WarpedMapLayer#onRemove()
  24. WarpedMapLayer#render()
  25. WarpedMapLayer#renderingMode
  26. WarpedMapLayer#type

@allmaps/地图

所有地图插件 地图Libre GL。此插件允许显示地理参考 IIIF 图像 在地图里。 插件通过加载工作 地理参考说明 并使用WebGL从一个 IIIF 图像服务器上转换图像,以覆盖其正确的地理位置.

见 页面存档备份,存于互联网档案馆 allmaps.org 更多信息.

Example of the Allmaps plugin for MapLibre

实例:

如何运作

此插件创建了新类 WarpedMapLayer 扩展 MapLibre 的 CustomLayerInterface。您可以在 WardedMapLayer 中添加一个或多个地理参考说明(或带有多个地理参考说明的注释页),并在您的 MapLibre 地图中添加 WardedMapLayer 。 这将使您地图Libre地图上的地理参考注释中包含的所有地理参考地图生效.

为了了解每个地理参考地图的引擎盖下会发生什么,请参看 @ allmaps/ 放弃 软件包.

此插件继承了大量方法 @ allmaps/ warpedmapplayer (帮助),核心软件包集成连接 Allmaps 插件到 @ allmaps/ 放弃 软件包.

安装

这个软件包在浏览器和Node.js中作为无害环境管理或UMD模块发挥作用.

用 pnpm 安装 :

pnpm install @allmaps/maplibre

您可以通过运行在本地建立此软件包 :

pnpm run build

在本地开发期间测试此软件包的最简单方法是通过 @ allmaps/ test- plugins中还包括一个最小的例子 ./index.html 并可通过 pnpm run dev。 。 。 .

使用量

为MapLibre 5.0所建,但也应与更早的版本合作.

将一个被扭曲的MapLayer添加到地图里

创建一个 WarpedMapLayer 并把它添加到地图上 看起来像这样:

import { Map as MapLibreMap } from 'maplibre-gl'
import { WarpedMapLayer } from '@allmaps/maplibre'

const map = new MapLibreMap({
  container: 'map',
  // @ts-expect-error MapLibre types are incompatible
  style: 'https://basemaps.cartocdn.com/gl/voyager-gl-style/style.json',
  center: [-73.9337, 40.8011],
  zoom: 11.5,
  // Pitch is currently not supported by the Allmaps plugin for MapLibre
  maxPitch: 0
})

const annotationUrl = 'https://annotations.allmaps.org/images/d180902cb93d5bf2'
const warpedMapLayer = new WarpedMapLayer()

map.on('load', () => {
  // @ts-expect-error MapLibre types are incompatible
  map.addLayer(warpedMapLayer)
  warpedMapLayer.addGeoreferenceAnnotationByUrl(annotationUrl)
})

被扭曲的MapLayer 使用 MapLibre 执行 自定义 Layer 界面。它可以像其他的 MapLibre 地层一样被添加到地图中,但有些东西需要考虑:

  • WarpedMapLayer 不使用一个 来源 (虽然这可以在今后实施,类似于 @ allmaps/ 打开层) (中文(简体) ).
  • WarpedMapLayer 目前不支持投出, 因此在您的地图上禁用它 .
  • 就像其他的MapLibre地层一样,一个被扭曲的地图 层必须有一个独特的 id默认情况下 id 有数值 warped-map-layer。当在您的地图上添加多个WardedMapLayers时,通过一个独特的 id 切入其构造器:
const warpedMapLayerWithUniqueId = new WarpedMapLayer({layerId: 'my-unique-id'})

装入地理参考说明的方法

一旦该地层被添加到地图中,就可以在图中添加地理参考注释 WarpedMapLayer 使用 addGeoreferenceAnnotation 财务报告和审定财务报表 addGeoreferenceAnnotationByUrl 函数:

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

或者说:

await warpedMapLayer.addGeoreferenceAnnotationByUrl(annotationUrl)

也可以先创建出WarpedMapList并传递到创作的地层. 这样做的优点是能够先计算出一个被wappedMapList的属性,例如获得界限并传递到MapLibre地图.

import { Map as MapLibreMap } from 'maplibre-gl'

import { WarpedMapLayer } from '@allmaps/maplibre'
import { WarpedMapList } from '@allmaps/render'
import { WebGL2WarpedMap } from '@allmaps/render/webgl2'

const annotationUrl = 'https://annotations.allmaps.org/images/d180902cb93d5bf2'
const annotation = await fetch(annotationUrl).then((response) =>
    response.json()
  )

const warpedMapList = new WarpedMapList<WebGL2WarpedMap>()
await warpedMapList.addGeoreferenceAnnotation(annotation)
const bbox = warpedMapList.getMapsBbox()

map = new MapLibreMap({
  container: 'map',
  // @ts-expect-error MapLibre types are incompatible
  style: 'https://basemaps.cartocdn.com/gl/voyager-gl-style/style.json',
  // Pitch is currently not supported by the Allmaps plugin for MapLibre
  maxPitch: 0
})

map.on('load', () => {
  const warpedMapLayer = new WarpedMapLayer({ warpedMapList })
  // @ts-expect-error MapLibre types are incompatible
  map.addLayer(warpedMapLayer)
  if (bbox) {
    map.fitBounds(bbox, { padding: 20 })
  }
})

注意 ...ByUrl() 函数不可用在 WardedMapList 上.

扭曲的MapLayer API, 选项和事件

见 @ allmaps/ warpedmapplayer (帮助) 用于来自 WardedMapLayer 类的方法的 API 文档的软件包(由所有 Allmaps 插件共享)。 它描述的方法像 addGeoreferenceAnnotation() ,并包含一个列表,列出可以设置在类实例上的所有选项,以及所有传递给托管层实例的本地地图实例的事件.

你可以设置 选项 在整个层上,或在层上的特定地图上(覆盖层选项):

warpedMapLayer.setLayerOptions({ visible: true })
warpedMapLayer.setMapOptions(mapId, { visible: true })

你可以听从 事件 以典型方式:

map.on('warpedmapadded', (event) => {
  console.log(event.mapIds)
})

许可证

麻省理工学院

API 密码

MapLibreWarpedMapLayerOptions

类型
SpecificMapLibreWarpedMapLayerOptions & Partial<WebGL2RenderOptions>

new WarpedMapLayer(options)

创建扭曲的MapLayer实例

参数
  • options? (单位:千美元)Partial<MapLibreWarpedMapLayerOptions> | undefined(中文(简体) )
    • 选项
回返

WarpedMapLayer。 。 。 .

扩展
  • BaseWarpedMapLayer
  • CustomLayerInterface

WarpedMapLayer#getBounds()

将所有地图的边框取为 MapLibre LngLat Boundes 像对象

这是默认的 MapLibre 获得Bounds () 函数

以 Lon- lat 返回结果 EPSG:4326。 。 。 .

参数

没有参数.

回返

所有地图的边框LngLatBoundsLike | undefined) (中文(简体) ).

WarpedMapLayer#getCenterZoomBearing(options)

获取中心,缩放和轴承,使"Maplibre地图"的取景口符合地层中的所有地图.

可用作

  • 地图. jumpTo () 供立即更改
  • 平滑平缓的 Map. Easeto ()
  • Map.flyTo() 用于放大和放大的飞行动画
参数
  • options? (单位:千美元)Partial<Partial<MaskOptions> & { bearingMapIds?: string[]; bearingCallbackFn: (bearing: number) => number; fit: Fit; } & CenterZoomBearing & { ...; } & { ...; }> | undefined(中文(简体) )
回返

中心、缩放和承载({center?: LngLatLike; zoom?: number; bearing?: number}) (中文(简体) ).

WarpedMapLayer#getMapCenterZoomBearing(mapId, options)

获取中心,缩放和轴承使 Maplibre 地图的取景口符合所选地图所需的.

可用作

  • 地图. jumpTo () 供立即更改
  • 平滑平缓的 Map. Easeto ()
  • Map.flyTo () 用于一个飞行动画, 它缩放出并回缩放
参数
  • mapId (单位:千美元)string(中文(简体) )
  • options? (单位:千美元)Partial<Partial<MaskOptions> & { bearingMapIds?: string[]; bearingCallbackFn: (bearing: number) => number; fit: Fit; } & CenterZoomBearing & { ...; } & { ...; }> | undefined(中文(简体) )
回返

中心、缩放和承载({center?: LngLatLike; zoom?: number; bearing?: number}) (中文(简体) ).

WarpedMapLayer#getMapsBounds(mapIds)

将所有选中地图的边框取为 MapLibre LngLatBounds 像对象

这是默认的 MapLibre 获得Bounds () 函数

以 Lon- lat 返回结果 EPSG:4326。 。 。 .

参数
  • mapIds (单位:千美元)Array<string>(中文(简体) )
    • 地图标识
回返

所有所选地图的边框( r)LngLatBoundsLike | undefined) (中文(简体) ).

WarpedMapLayer#getMapsCenterZoomBearing(mapIds, partialOptions)

获取中心,缩放和轴承 使 Maplibre 地图的取景口符合所有选中的地图 .

可用作

  • 地图. jumpTo () 供立即更改
  • 平滑平缓的 Map. Easeto ()
  • Map.flyTo () 用于一个飞行动画, 它缩放出并回缩放
参数
  • mapIds (单位:千美元)Array<string>(中文(简体) )
  • partialOptions? (单位:千美元)Partial<Partial<MaskOptions> & { bearingMapIds?: string[]; bearingCallbackFn: (bearing: number) => number; fit: Fit; } & CenterZoomBearing & { ...; } & { ...; }> | undefined(中文(简体) )
回返

中心、缩放和承载({center?: LngLatLike; zoom?: number; bearing?: number}) (中文(简体) ).

WarpedMapLayer#id

类型
string

WarpedMapLayer#map?

类型
MaplibreMap

WarpedMapLayer#nativePassWarpedMapEvent(event)

传递事件

参数
  • event (单位:千美元)Event(中文(简体) )
回返

void。 。 。 .

WarpedMapLayer#nativeUpdate()

触发地图的本地更新功能

参数

没有参数.

回返

void。 。 。 .

WarpedMapLayer#onAdd(map, gl)

当图层被添加时, 方法会调用 .

参数
  • map (单位:千美元)MaplibreMap(中文(简体) )
    • 此自定义图层是刚刚添加的 .
  • gl (单位:千美元)WebGL2RenderingContext(中文(简体) )
    • 地图的 WebGL 2 上下文 .
回返

void。 。 。 .

WarpedMapLayer#onContextLost

参数
  • event (单位:千美元)MapContextEvent(中文(简体) )
回返

void。 。 。 .

WarpedMapLayer#onContextRestored

参数
  • event (单位:千美元)MapContextEvent(中文(简体) )
回返

void。 。 。 .

WarpedMapLayer#onRemove()

当图层被移除时, 方法会调用 .

参数

没有参数.

回返

void。 。 。 .

WarpedMapLayer#render()

翻出一层来.

参数

没有参数.

回返

void。 。 。 .

WarpedMapLayer#renderingMode

类型
'2d'

WarpedMapLayer#type

类型
'custom'

版本与发布记录

@allmaps/maplibre 共发布 40 个版本,首次发布于 2024/01/08;过去 12 个月发布了 6 个版本。

版本发布日期距今
1.0.0-beta.44latest2026/09/221 个月前
1.0.0-beta.432026/05/295 个月前
1.0.0-beta.422026/02/108 个月前
1.0.0-beta.412025/12/1010 个月前
1.0.0-beta.402025/11/2711 个月前
1.0.0-beta.392025/11/1111 个月前

其他发布通道:beta → 1.0.0-beta.34。

关于 @allmaps/maplibre 的常见问题

@allmaps/maplibre 是什么?

Allmaps 地图Libre 类

如何安装 @allmaps/maplibre?

在项目目录运行 npm install @allmaps/maplibre,或使用 pnpm add / yarn add / bun add。

@allmaps/maplibre 支持 TypeScript 吗?

该包的 package.json 没有声明类型入口。需要类型提示时,可以在 npm 上查找社区维护的 @types/allmaps__maplibre 是否存在。

@allmaps/maplibre 支持 ESM 还是 CommonJS?

以 ES Module 形式发布,推荐使用 import 引入。在 CommonJS 项目中,Node.js 20.19+ / 22.12+ 可以直接 require() 不含顶层 await 的 ES Module,更早的版本需要改用动态 import()。

@allmaps/maplibre 可以商用吗?

@allmaps/maplibre 使用 MIT 许可。宽松许可:允许商业使用、修改和再分发,通常只需在分发时保留原版权与许可声明。以上为概括,不构成法律意见,请以许可原文为准。

@allmaps/maplibre 的下载量有多少?

根据 npm 官方下载统计,@allmaps/maplibre 在 2026/10/06 – 2026/11/04 这 30 天内被下载 4,277 次,日均约 143 次。下载量会把 CI 构建、镜像同步和作为其他包依赖的安装一并计入,适合横向比较热度,不能直接等同于使用人数。

@allmaps/maplibre 还在维护吗?

最新版本 1.0.0-beta.44 发布于 2026/09/22(1 个月前);至今共发布 40 个版本,其中过去 12 个月发布了 6 个;首次发布于 2024/01/08。发布频率只是参考信号:功能稳定的工具可能很少需要更新,建议结合源码仓库的 issue 和提交记录判断。