@bitbaum/geo-kit

中文文档
0.3.0发布于 2026/10/31MITTypeScriptES Module零依赖构建来源已验证近 30 天下载 2257

用于网络应用程序的版本、按需地理资源和源边界断言,以及用于这些应用程序的 Canvas 2D 渲染器(globe或地图).

中文使用文档
文档目录6 节
  1. 安装
  2. 所有权
  3. 数据加载
  4. 画它: @bitbaum/geo-kit/map
  5. 请求和拟议边界
  6. 校验

@bitbaum/geo-kit

共享版本地理数据的无国家合同 及其一个制造器@bitbaum/geo-kit/map) (中文(简体) ). 包裹 没有国家包,政治主张,源选择,个人数据,HTTP 服务器,或 UI 框架.

安装

pnpm add @bitbaum/geo-kit

安装 npm 的释放, 而不是一个承诺: 一个 semver 范围让一个修正 到达每个产品. @bitbaum/[email protected] 是在 npm; 之后的发布是 由本存储器发布 publish.yml。 。 。 .

所有权

  • 索龙 是公共场所的权威拥有者,来源记录, 历史主张、决定和公布的边界资源.
  • 橙色猫 仍然拥有私人住宅和账户数据.
  • 次级客户和其他客户 使用公开、版本数据并选择 他们需要多层 他们不复制索隆的地理学数据库.
  • 申请政策供应已接受的许可证和控制是否 提案获得通过。 这个一揽子方案并不作出这一决定.

数据加载

在内容为GeoJSON或TopoJSON的资源之外公布一份小清单. 每个资源都明确其来源、地理、无限制层和级别密钥, 有效期、可选地图视图、 URL、 SHA-256 文摘、 大小和特性 计数。 资源可以参照多种来源,每个来源的许可证和 独立检查属性 。 视图点有名称、描述和 源引用,所以客户端可以解释它所显示的表示. 客户端要一个或一个以上 地理/资源标识、日期和(必要时)观点。 默认视图 只包括没有明确观点的资源. selectGeographyResources 默认拒绝宽泛的意外负载并强制执行字节/资源限制 在提出任何请求之前.

loadGeographyResources 仅获取选中的同源 URL, 而无需 cookie 而不跟随方向 它检查解码文件大小,SHA-256, GeoJSON/ TopoJSON 结构与特性计数后再返回解析后的数据. 这个 接受注入缓存、获取执行并中止信号,以便每个应用程序都能 使用自己的HTTP缓存,索引DB政策和重试接口. 请求是 限定货币和结果使用确定地理/种类/级别/编号顺序.

loadGeographyManifest 对清单使用同样的运输保护, 包括流出时执行的解码字节限制(默认为64 KiB). 中止会取消一个被停滞的身体, 并停止从缓存中装入已装入的负载 .

资源选择可包括WGS84 bbox 按西/南/东/北顺序排列. 只选择与已知界限相交的资源 。 无资源 界限仍然符合条件,因此缺失的元数据不能默默地隐藏覆盖. 西方大于东方代表着一个古老的十字路口。 地理,时间, 视图和下载预算选择器继续一起应用.

import { loadGeographyManifest, loadGeographyResources } from '@bitbaum/geo-kit';

const controller = new AbortController();
const options = {
  baseUrl: window.location.origin,
  licensePolicy: [{ spdx: 'CC0-1.0', requiresAttribution: false }],
  signal: controller.signal, // AbortController owned by the application
};
const manifest = await loadGeographyManifest('/geography/manifest.json', options);
const layers = await loadGeographyResources(manifest, {
  geographyIds: ['selected-geography'],
  asOf: '2026-09-30', // the date displayed by the application
  levelKeys: ['subdivision'],
  bbox: [7, 46, 9, 48],
  maxBytes: 512 * 1024,
}, options);

此示例中的图层密钥和地理标识来自应用程序 数据。 国家数据包、详细分类数据集和边框绘制 UI 应用程序拥有的单独可达到的目标; 此软件包不发明 或发表.

图书馆从不读取系统时钟. 将应用程序显示的日期传递给 支持确定的历史地图。 明确的观点是选择适用; 库不将任何边界表示作为默认的真理.

画它: @bitbaum/geo-kit/map

每出产品一张地图: Canvas 2D上的正地平面地球(d3-geo) (中文(简体) ). 地球是读者面前的平地图 所以 世界,一个国家和一个公社是一个投影和一个渲染器. Canvas 2D 而不是 WebGL: 几千个路径段,一个框架适合一个 电话的帧预算, 它运行在任何网页运行.

pnpm add @bitbaum/geo-kit d3-geo topojson-client

d3-geo (和 topojson-client,对于 TopoJSON)是可选的对等点 依赖性:只加载数据的产品不会安装.

import { cameraForBounds, createMap, shapesFromTopology } from "@bitbaum/geo-kit/map";

const shapes = shapesFromTopology(topology, { object: "communes", idOf: (f) => String(f.id) });
const limits = { minZoom: 1, maxZoom: 2000, maxTilt: 80 };
const map = createMap(canvas, {
  shapes,
  palette: { sphere: "#fff", land: "#eee", border: "#999", hover: "#555", selected: "#000" },
  fills: new Map([["261", "#08519c"]]),
  limits,
  onSelect: (id) => console.log(id),
});
map.resize(390, 600);
map.flyTo(cameraForBounds([5.96, 45.82, 10.49, 47.81], limits));
  • 无框架. createMap 使用一个 <canvas> 和返回方法 (单位:千美元)resize, (中文(简体) ), setFills, (中文(简体) ), setSelected, (中文(简体) ), flyTo, (中文(简体) ), zoomBy, (中文(简体) ), destroy页:1 反应或其他页面将其包裹为几行并保持了自己的地图状态.
  • 输入. 一指一指一指一指一指一指一指一指一指一指一指一指一指一指一指一指一指一指一指一指一指一指一指一指一指一指一指一指一指一指一指一指一指一指一指一指一指一指一指一指一指一指一指一指一指一指一指一指一指一指一指一指一指一指一指一指一指一指一指一指一指一指一指一指一指一指一指一指一指一指一指一指一指一指一指一指一指一指一指一指一指一指一指一指一指一指一指一指一指一指一指一指一指一指一指一指一指一指一指一指一指一指一指一指一指一指一指一指一指一指一指一指一指一指一指一指一指一指一指一指一指一指一指一指一指一指一指一指 点击选择,一个闪烁的海岸。 键盘将画布当作一个控制器: 箭头转动, +和 − 缩放, Home resets, Enter 选择读取器面对的内容 .
  • 费用. 它只在事物改变时画出;在运动中它画出 粗糙的形状(每个共有弧的三分之一顶点,所以邻居仍然 并详细描述后面的画面。 地物在最远的一面,或者在远处 缩放时画布不会被画出 .
  • 减少运动. 下 prefers-reduced-motion 飞行就是一分一分,一分一分 不靠近海岸, 闲转弯永远不会开始.
  • 层层. 调色板的球体 花纹 发光和四肢的遮荫 选项,所以是一个点亮的地球 和一个简单的地图,其中数据是 图片是同一个画家. over 绘制呼叫者自己的图层(站点, 每个相框上方有相框的投影,以及 pickFirst 让这层在特征之前 拍出一个水龙头或者盘旋.
  • 纯相分相. 相机、动作、叫声、采摘和快餐 投影输出和测试时没有浏览器.

请求和拟议边界

AreaAssertion 跟着索隆的线人 claims, (中文(简体) ), administers,以及 proposes 记录. summarizeAreaAssertions 在明确日期之前过滤这些记录 报告不同的索赔人、管理人和提案人。 内容 disputed 旗帜是 (a) 对相竞索赔的机械摘要或索赔人与 管理员; 这不是法律结论 .

validateBoundaryDraft 检查一个提案的多边形,WGS84坐标,关闭 环、输入限制、源/许可证元数据和有效性间隔。 出版物 在消费软件提供完整的几何地形之前, 一直被封锁 对草案提案进行验证和批准检查。 草案载有: 形状及其出处 另有来源的说法.

校验

pnpm install --frozen-lockfile
pnpm run verify

运行时代码没有依赖性,目标为现代浏览器外加Node.js 20或 等会 由 TypeScript 构建的软件包 JavaScript 和声明 源,因此消费者不需要TypeScript-aware runtime加载器.

版本与发布记录

@bitbaum/geo-kit 共发布 5 个版本,首次发布于 2026/10/26;过去 12 个月发布了 5 个版本。最新版本附带 npm provenance 构建来源证明,可追溯到公开的 CI 构建记录。

版本发布日期距今
0.3.0latest2026/10/318 天前
0.2.02026/10/318 天前
0.1.22026/10/2811 天前
0.1.12026/10/2613 天前
0.0.0-stage2026/10/2613 天前

关于 @bitbaum/geo-kit 的常见问题

@bitbaum/geo-kit 是什么?

用于网络应用程序的版本、按需地理资源和源边界断言,以及用于这些应用程序的 Canvas 2D 渲染器(globe或地图).

如何安装 @bitbaum/geo-kit?

在项目目录运行 npm install @bitbaum/geo-kit,或使用 pnpm add / yarn add / bun add。

@bitbaum/geo-kit 支持 TypeScript 吗?

支持。包内自带 TypeScript 类型声明(package.json 声明了 types 入口),安装后即可获得类型提示,无需再安装 @types 包。

@bitbaum/geo-kit 支持 ESM 还是 CommonJS?

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

@bitbaum/geo-kit 需要什么版本的 Node.js?

package.json 的 engines 字段要求 Node.js >=20。版本不符时 npm 默认只给出警告,开启 engine-strict 后会拒绝安装。

@bitbaum/geo-kit 可以商用吗?

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

@bitbaum/geo-kit 的下载量有多少?

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

@bitbaum/geo-kit 还在维护吗?

最新版本 0.3.0 发布于 2026/10/31(8 天前);至今共发布 5 个版本,其中过去 12 个月发布了 5 个;首次发布于 2026/10/26。发布频率只是参考信号:功能稳定的工具可能很少需要更新,建议结合源码仓库的 issue 和提交记录判断。