{"_id":"@baoyaoctopus/keymap","name":"@baoyaoctopus/keymap","dist-tags":{"latest":"1.0.0"},"versions":{"1.0.0":{"name":"@baoyaoctopus/keymap","version":"1.0.0","description":"Cesium 1.106 based 3D GIS engine SDK","main":"./dist/engine.js","module":"./dist/engine.js","types":"./dist/types/main.d.ts","type":"module","exports":{".":{"types":"./dist/types/main.d.ts","import":"./dist/engine.js","default":"./dist/engine.js"},"./package.json":"./package.json"},"license":"MIT","scripts":{"dev":"rollup -c build/rollup.config.dev.js -w","build":"rollup -c build/rollup.config.js && npm run build:types","build:types":"tsc -p tsconfig.types.json && node build/rewrite-dts-aliases.mjs","doc":"typedoc --options typedoc.json","doc:api":"typedoc --options typedoc.json","doc:check":"typedoc --options typedoc.json --treatWarningsAsErrors","prepack":"npm run build","typecheck":"tsc"},"devDependencies":{"@rollup/plugin-alias":"^5.1.1","@rollup/plugin-babel":"^6.1.0","@rollup/plugin-commonjs":"^29.0.0","@rollup/plugin-node-resolve":"^16.0.3","@rollup/plugin-typescript":"^12.3.0","@rollup/plugin-url":"^8.0.2","@types/lodash-es":"^4.17.12","prettier":"^3.8.1","rollup":"^4.17.2","rollup-plugin-javascript-obfuscator":"^1.0.4","rollup-plugin-obfuscator":"^1.1.0","rollup-plugin-serve":"^1.1.1","tslib":"^2.8.1","typedoc":"^0.28.20","typescript":"^5.9.2","vue":"3.2.26"},"dependencies":{"@turf/turf":"^7.3.2","cesium":"1.106","lodash-es":"^4.18.1"},"peerDependencies":{"vue":">=3.2.0 <4.0.0"},"gitHead":"696a51fca2528c659e0018b910ec0c70edc84580","_id":"@baoyaoctopus/keymap@1.0.0","_nodeVersion":"20.19.2","_npmVersion":"11.12.1","dist":{"integrity":"sha512-9I2SUhcAHNW0Y/LfdBucRgGVKexkTijMtMlCR9HCa+hiyL3HwgIFtgrR3KQEVcamM+kjh9eTsZA4lSBgrf8YjQ==","shasum":"e69fa1f01d33c6f610f3b3854648cf541239d324","tarball":"https://registry.npmjs.org/@baoyaoctopus/keymap/-/keymap-1.0.0.tgz","fileCount":100,"unpackedSize":547594,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEYCIQD7H56pSQx8BnHirRA4q5O2x2PoXo3BEJVQZVqjF0DHDgIhAJc52LbwjN8bZziVbpcoSeC6dwXYD12kQe/dJOaWOrNH"}]},"_npmUser":{"name":"baoyaoctopus","email":"1207491732@qq.com"},"directories":{},"maintainers":[{"name":"baoyaoctopus","email":"1207491732@qq.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/keymap_1.0.0_1785748660480_0.1337602341051074"},"_hasShrinkwrap":false}},"time":{"created":"2026-08-03T09:17:40.237Z","1.0.0":"2026-08-03T09:17:40.619Z","modified":"2026-08-03T09:17:40.870Z"},"maintainers":[{"name":"baoyaoctopus","email":"1207491732@qq.com"}],"description":"Cesium 1.106 based 3D GIS engine SDK","license":"MIT","readme":"# 易图引擎\n\n易图引擎是基于 `cesium@1.106` 二次封装的 3D GIS SDK，面向业务系统提供地图初始化、图层管理、图形标绘、编辑交互、绘制测量、右键菜单、特效和自定义 Primitive 等能力。\n\n当前包名：`@baoyaOctopus/keymap`。\n\n## 特性\n\n- `initMap()` 一行初始化 Cesium Viewer，并返回统一的 `KeyMap` 实例。\n- `GraphicLayer` 管理业务图形资产，支持统一显示、隐藏、销毁和资产索引。\n- `HeatmapLayer` 支持二维人流密度热力图，以固定地理范围承载实时权重点数据。\n- 内置 `BillboardGraphic`、`PolylineGraphic`、`PolygonGraphic`、`CircleGraphic`、`ModelGraphic`、`PopupGraphic` 和 `CustomPopupGraphic`。\n- 折线、多边形、点位支持 `showHandler()` / `clearHandler()` 进入和退出编辑模式。\n- `KeyMap` 默认注册悬停高亮、弹窗、编辑拖拽、控制点右键删除和全局右键菜单。\n- `DrawPoint`、`DrawPolyline`、`DrawPolygon`、`DrawCircle` 支持交互式绘制，并支持 `Escape` 取消当前绘制。\n- `MeasureDistance`、`MeasureArea`、`MeasureHeight`、`MeasureCutFill` 支持测量流程，并与绘制工具互斥。\n\n## 安装\n\n```bash\nnpm install @baoyaOctopus/keymap\n```\n\n业务项目需要同时提供 Cesium 和 Vue 运行环境：\n\n```bash\nnpm install cesium@1.106 vue@^3.2.0\n```\n\n## 快速开始\n\n页面中准备一个全尺寸 `div`：\n\n```html\n<div\n  id=\"map\"\n  style=\"width: 100%; height: 100vh\"\n></div>\n```\n\n初始化地图：\n\n```ts\nimport { initMap } from '@baoyaOctopus/keymap';\n\nconst map = initMap('map');\n\nmap?.flyTo({\n  position: [113.2644, 23.1291, 3000],\n  duration: 2,\n});\n```\n\n添加图层和图形：\n\n```ts\nimport * as Cesium from 'cesium';\nimport { initMap, layer, graphic } from '@baoyaOctopus/keymap';\n\nconst map = initMap('map');\nif (!map) throw new Error('地图容器不存在');\n\nconst graphicLayer = new layer.GraphicLayer({ name: '业务标绘图层' });\nmap.addLayer(graphicLayer);\n\nconst billboard = new graphic.BillboardGraphic({\n  name: '项目位置',\n  position: Cesium.Cartesian3.fromDegrees(113.2644, 23.1291, 30),\n  image: '/icons/location.svg',\n  width: 32,\n  height: 32,\n});\n\ngraphicLayer.addGraphic(billboard);\n```\n\n添加二维热力图：\n\n```ts\nimport * as Cesium from 'cesium';\nimport { initMap, layer } from '@baoyaOctopus/keymap';\n\nconst map = initMap('map');\nif (!map) throw new Error('地图容器不存在');\n\nconst heatmapLayer = new layer.HeatmapLayer({\n  name: '校园人流密度',\n  rectangle: Cesium.Rectangle.fromDegrees(113.26, 23.12, 113.29, 23.15),\n  min: 0,\n  max: 100,\n  points: [\n    { lng: 113.2644, lat: 23.1291, value: 80 },\n    { lng: 113.276, lat: 23.136, value: 45 },\n  ],\n});\n\nmap.addLayer(heatmapLayer);\nheatmapLayer.setData([{ lng: 113.268, lat: 23.132, value: 95 }]);\n```\n\n## 文档\n\n- [指南首页](docs/guide/index.md)\n- [快速开始](docs/guide/quick-start.md)\n- [图层与图形](docs/guide/graphic.md)\n- [右键菜单](docs/guide/menu.md)\n- [绘制与测量](docs/guide/draw-measure.md)\n- API Reference：运行 `npm run doc` 后查看 `docs/api/index.html`\n\n## 公开模块\n\n```ts\nimport { initMap, KeyMap, layer, graphic, draw, measure, eventType, material, effect, primitive } from '@baoyaOctopus/keymap';\n```\n\n| 模块        | 说明                                                    |\n| ----------- | ------------------------------------------------------- |\n| `initMap`   | 创建 Cesium Viewer 并返回 `KeyMap`。                    |\n| `KeyMap`    | 地图实例封装，管理 Viewer、图层、资产、事件和默认交互。 |\n| `layer`     | `GraphicLayer`、`TilesetLayer`、`HeatmapLayer`。        |\n| `graphic`   | 点、线、面、圆、模型、弹窗等图形资产。                  |\n| `draw`      | 点、线、面、圆交互绘制。                                |\n| `measure`   | 距离、面积、高度、挖填方测量。                          |\n| `eventType` | `Menu`、`MousePick` 等事件能力。                        |\n| `material`  | Cesium 材质封装。                                       |\n| `effect`    | 雨、雪、雾、云、镜头光晕等场景效果。                    |\n| `primitive` | 自定义 Primitive 能力。                                 |\n\n## 开发命令\n\n```bash\nnpm run dev\nnpm run typecheck\nnpm run build:types\nnpm run build\nnpm run doc\n```\n\n`npm run build` 会先执行 Rollup 生产构建，再生成 `dist/types` 类型声明。`npm run doc` 使用 TypeDoc 从 `src/main.ts` 生成 API Reference 到 `docs/api`。\n\n## 发布前检查\n\n```bash\nnpm run typecheck\nnpm run build:types\nnpm run doc\nnpm pack --dry-run\n```\n","readmeFilename":"README.md","_rev":"1-19194962655aca02828ea194866402d3"}