@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加载器.