From b369e8b0f10d80195d88e86fec63b77702ced15a Mon Sep 17 00:00:00 2001 From: hongfaqiu <951142905@qq.com> Date: Wed, 24 Apr 2024 14:31:54 +0800 Subject: [PATCH] add plugin-feature-click --- examples/vite/CHANGELOG.md | 12 +++ examples/vite/package.json | 2 +- packages/dde-earth/CHANGELOG.md | 6 ++ packages/dde-earth/package.json | 2 +- packages/dde-earth/src/core/index.ts | 2 + packages/plugin-feature-click/CHANGELOG.md | 8 ++ packages/plugin-feature-click/package.json | 37 +++++++++ .../plugin-feature-click/rollup.config.js | 3 + packages/plugin-feature-click/src/api.ts | 17 +++++ packages/plugin-feature-click/src/index.ts | 76 +++++++++++++++++++ packages/plugin-feature-click/tsconfig.json | 21 +++++ packages/plugin-geojson-loader/CHANGELOG.md | 7 ++ packages/plugin-geojson-loader/package.json | 2 +- .../CHANGELOG.md | 7 ++ .../package.json | 2 +- packages/plugin-mvt-loader/CHANGELOG.md | 7 ++ packages/plugin-mvt-loader/package.json | 2 +- packages/plugin-nc-loader/CHANGELOG.md | 7 ++ packages/plugin-nc-loader/package.json | 2 +- packages/plugin-tiff-loader/CHANGELOG.md | 7 ++ packages/plugin-tiff-loader/package.json | 2 +- packages/recommend-plugins/CHANGELOG.md | 7 ++ packages/recommend-plugins/package.json | 2 +- pnpm-lock.yaml | 27 +++++++ 24 files changed, 259 insertions(+), 8 deletions(-) create mode 100644 packages/plugin-feature-click/CHANGELOG.md create mode 100644 packages/plugin-feature-click/package.json create mode 100644 packages/plugin-feature-click/rollup.config.js create mode 100644 packages/plugin-feature-click/src/api.ts create mode 100644 packages/plugin-feature-click/src/index.ts create mode 100644 packages/plugin-feature-click/tsconfig.json diff --git a/examples/vite/CHANGELOG.md b/examples/vite/CHANGELOG.md index 254eb71..ebc1397 100644 --- a/examples/vite/CHANGELOG.md +++ b/examples/vite/CHANGELOG.md @@ -1,5 +1,17 @@ # dde-earth-vite-example +## 0.0.12 + +### Patch Changes + +- Updated dependencies + - dde-earth@1.2.3 + - @dde-earth/plugin-martini-terrain-loader@1.0.3 + - @dde-earth/plugin-mvt-loader@1.2.3 + - @dde-earth/plugin-nc-loader@1.2.3 + - @dde-earth/plugin-tiff-loader@1.2.3 + - @dde-earth/recommend-plugins@1.3.3 + ## 0.0.11 ### Patch Changes diff --git a/examples/vite/package.json b/examples/vite/package.json index b19ec7e..6addf42 100644 --- a/examples/vite/package.json +++ b/examples/vite/package.json @@ -1,6 +1,6 @@ { "name": "dde-earth-vite-example", - "version": "0.0.11", + "version": "0.0.12", "private": true, "scripts": { "dev": "vite", diff --git a/packages/dde-earth/CHANGELOG.md b/packages/dde-earth/CHANGELOG.md index d242b7a..7011e08 100644 --- a/packages/dde-earth/CHANGELOG.md +++ b/packages/dde-earth/CHANGELOG.md @@ -1,5 +1,11 @@ # dde-earth +## 1.2.3 + +### Patch Changes + +- export EventEmitter + ## 1.2.2 ### Patch Changes diff --git a/packages/dde-earth/package.json b/packages/dde-earth/package.json index 34e3ff3..11a4abd 100644 --- a/packages/dde-earth/package.json +++ b/packages/dde-earth/package.json @@ -1,6 +1,6 @@ { "name": "dde-earth", - "version": "1.2.2", + "version": "1.2.3", "type": "module", "main": "./dist/lib/index.js", "module": "./dist/es/index.js", diff --git a/packages/dde-earth/src/core/index.ts b/packages/dde-earth/src/core/index.ts index 46c77d2..77467d1 100644 --- a/packages/dde-earth/src/core/index.ts +++ b/packages/dde-earth/src/core/index.ts @@ -4,3 +4,5 @@ export * from "./layerItem"; export * from "./layerManager"; export * from "./terrainManager"; export * from "./debug"; +export * from "./event"; +export * from "./pluginManager"; diff --git a/packages/plugin-feature-click/CHANGELOG.md b/packages/plugin-feature-click/CHANGELOG.md new file mode 100644 index 0000000..8b2b6f5 --- /dev/null +++ b/packages/plugin-feature-click/CHANGELOG.md @@ -0,0 +1,8 @@ +# @dde-earth/plugin-feature-click + +## 1.3.3 + +### Patch Changes + +- Updated dependencies + - dde-earth@1.2.3 diff --git a/packages/plugin-feature-click/package.json b/packages/plugin-feature-click/package.json new file mode 100644 index 0000000..216cc9c --- /dev/null +++ b/packages/plugin-feature-click/package.json @@ -0,0 +1,37 @@ +{ + "name": "@dde-earth/plugin-feature-click", + "version": "1.3.3", + "type": "module", + "main": "./dist/lib/index.js", + "module": "./dist/es/index.js", + "types": "./dist/typings/index.d.ts", + "files": [ + "dist" + ], + "publishConfig": { + "access": "public" + }, + "scripts": { + "build": "rimraf dist && rollup -c", + "dev": "rollup -c --watch" + }, + "keywords": [ + "cesium", + "dde" + ], + "license": "MIT", + "peerDependencies": { + "cesium": "*" + }, + "devDependencies": { + "@dde-earth/recommend-plugins": "workspace:^", + "cesium": "latest" + }, + "engines": { + "node": "^18.0.0 || >=20.0.0" + }, + "dependencies": { + "@cesium-extends/primitive-geojson": "^1.0.7", + "dde-earth": "workspace:^" + } +} diff --git a/packages/plugin-feature-click/rollup.config.js b/packages/plugin-feature-click/rollup.config.js new file mode 100644 index 0000000..adabd80 --- /dev/null +++ b/packages/plugin-feature-click/rollup.config.js @@ -0,0 +1,3 @@ +import { createConfig } from "../../shared/rollup.config.mjs"; + +export default createConfig(); diff --git a/packages/plugin-feature-click/src/api.ts b/packages/plugin-feature-click/src/api.ts new file mode 100644 index 0000000..d245c96 --- /dev/null +++ b/packages/plugin-feature-click/src/api.ts @@ -0,0 +1,17 @@ +// eslint-disable-next-line @typescript-eslint/no-unused-vars +import { Earth } from "dde-earth"; + +declare module "dde-earth" { + namespace Earth { + interface Events { + FEATURE_CLICK: [ + reslt: { + feature: any; + position?: number[]; + properties: any; + [key: string]: any; + }, + ]; + } + } +} diff --git a/packages/plugin-feature-click/src/index.ts b/packages/plugin-feature-click/src/index.ts new file mode 100644 index 0000000..21a6d2e --- /dev/null +++ b/packages/plugin-feature-click/src/index.ts @@ -0,0 +1,76 @@ +import type { Earth, EventEmitter } from "dde-earth"; + +import "./api"; + +import { GeoJsonPrimitiveLayer } from "@cesium-extends/primitive-geojson"; +import { JulianDate } from "cesium"; +import { BasePlugin } from "dde-earth"; + +import type { Subscriber } from "@dde-earth/recommend-plugins"; +import type { DataSource, Entity } from "cesium"; + +export class FeatureClick extends BasePlugin< + FeatureClick.Args, + FeatureClick.Intl +> { + name = "FeatureClick"; + private _subscriber: Subscriber | undefined; + private _eventEmitter: EventEmitter | undefined; + + public init(earth: Earth) { + this._init(earth); + this._subscriber = this.earth.getSubscriber(); + this._eventEmitter = this.earth.eventEmitter; + this.addListner(); + return this; + } + + addListner() { + if (!this._subscriber || !this._eventEmitter) return; + + const sub = this._subscriber; + sub.on("LEFT_CLICK", (move, result) => { + if (result?.id) { + const entity = result.id as Entity; + const properties = entity.properties?.propertyNames?.length + ? entity.properties?.getValue(new JulianDate()) + : undefined; + const position = sub.cartesiantoLonlat( + entity.position?.getValue(new JulianDate()), + ); + + this.earth.emit("FEATURE_CLICK", { + feature: entity, + properties, + position, + }); + } + }); + + this.earth.on("layer:add", (layerItem) => { + const layer = layerItem.instance; + if (layer instanceof GeoJsonPrimitiveLayer) { + sub.on("LEFT_CLICK", (move, result) => { + if (result?.primitive) { + const id = result.id; + const feature = layer.getFeatureItemById(id); + if (feature) + this.earth.emit("FEATURE_CLICK", { + feature: feature, + properties: feature.properties, + position: sub.cartesiantoLonlat(feature.center?.cartesian3), + }); + } + }); + } + }); + } +} + +export namespace FeatureClick { + export type Intl = {}; + + export type Args = []; + + export type SupportedLayer = GeoJsonPrimitiveLayer | DataSource; +} diff --git a/packages/plugin-feature-click/tsconfig.json b/packages/plugin-feature-click/tsconfig.json new file mode 100644 index 0000000..d576908 --- /dev/null +++ b/packages/plugin-feature-click/tsconfig.json @@ -0,0 +1,21 @@ +{ + "compilerOptions": { + "target": "esnext", + "module": "esnext", + "lib": ["esnext", "dom"], + "allowSyntheticDefaultImports": true, + "moduleResolution": "node", + "esModuleInterop": true, + "strict": true, + "strictNullChecks": true, + "resolveJsonModule": true, + "skipDefaultLibCheck": true, + "skipLibCheck": true, + "outDir": "./dist", + "declaration": true, + "inlineSourceMap": true, + "types": ["node"] + }, + "include": ["src/**/*", "test/**/*"], + "exclude": ["**/dist/**"] +} diff --git a/packages/plugin-geojson-loader/CHANGELOG.md b/packages/plugin-geojson-loader/CHANGELOG.md index f5f299d..f442abb 100644 --- a/packages/plugin-geojson-loader/CHANGELOG.md +++ b/packages/plugin-geojson-loader/CHANGELOG.md @@ -1,5 +1,12 @@ # @dde-earth/plugin-geojson-loader +## 1.2.3 + +### Patch Changes + +- Updated dependencies + - dde-earth@1.2.3 + ## 1.2.2 ### Patch Changes diff --git a/packages/plugin-geojson-loader/package.json b/packages/plugin-geojson-loader/package.json index 194f785..6faa4d6 100644 --- a/packages/plugin-geojson-loader/package.json +++ b/packages/plugin-geojson-loader/package.json @@ -1,6 +1,6 @@ { "name": "@dde-earth/plugin-geojson-loader", - "version": "1.2.2", + "version": "1.2.3", "type": "module", "main": "./dist/lib/index.js", "module": "./dist/es/index.js", diff --git a/packages/plugin-martini-terrain-loader/CHANGELOG.md b/packages/plugin-martini-terrain-loader/CHANGELOG.md index 46a2141..20166b6 100644 --- a/packages/plugin-martini-terrain-loader/CHANGELOG.md +++ b/packages/plugin-martini-terrain-loader/CHANGELOG.md @@ -1,5 +1,12 @@ # @dde-earth/plugin-martini-terrain-loader +## 1.0.3 + +### Patch Changes + +- Updated dependencies + - dde-earth@1.2.3 + ## 1.0.2 ### Patch Changes diff --git a/packages/plugin-martini-terrain-loader/package.json b/packages/plugin-martini-terrain-loader/package.json index 02f13e0..56fd628 100644 --- a/packages/plugin-martini-terrain-loader/package.json +++ b/packages/plugin-martini-terrain-loader/package.json @@ -1,6 +1,6 @@ { "name": "@dde-earth/plugin-martini-terrain-loader", - "version": "1.0.2", + "version": "1.0.3", "type": "module", "main": "./dist/lib/index.js", "module": "./dist/es/index.js", diff --git a/packages/plugin-mvt-loader/CHANGELOG.md b/packages/plugin-mvt-loader/CHANGELOG.md index 3f0cf46..6002734 100644 --- a/packages/plugin-mvt-loader/CHANGELOG.md +++ b/packages/plugin-mvt-loader/CHANGELOG.md @@ -1,5 +1,12 @@ # @dde-earth/plugin-mvt-loader +## 1.2.3 + +### Patch Changes + +- Updated dependencies + - dde-earth@1.2.3 + ## 1.2.2 ### Patch Changes diff --git a/packages/plugin-mvt-loader/package.json b/packages/plugin-mvt-loader/package.json index 68270cc..fe879c6 100644 --- a/packages/plugin-mvt-loader/package.json +++ b/packages/plugin-mvt-loader/package.json @@ -1,6 +1,6 @@ { "name": "@dde-earth/plugin-mvt-loader", - "version": "1.2.2", + "version": "1.2.3", "type": "module", "main": "./dist/lib/index.js", "module": "./dist/es/index.js", diff --git a/packages/plugin-nc-loader/CHANGELOG.md b/packages/plugin-nc-loader/CHANGELOG.md index 3f95584..461cfda 100644 --- a/packages/plugin-nc-loader/CHANGELOG.md +++ b/packages/plugin-nc-loader/CHANGELOG.md @@ -1,5 +1,12 @@ # @dde-earth/plugin-nc-loader +## 1.2.3 + +### Patch Changes + +- Updated dependencies + - dde-earth@1.2.3 + ## 1.2.2 ### Patch Changes diff --git a/packages/plugin-nc-loader/package.json b/packages/plugin-nc-loader/package.json index 0dd6742..695aef7 100644 --- a/packages/plugin-nc-loader/package.json +++ b/packages/plugin-nc-loader/package.json @@ -1,6 +1,6 @@ { "name": "@dde-earth/plugin-nc-loader", - "version": "1.2.2", + "version": "1.2.3", "type": "module", "main": "./dist/lib/index.js", "module": "./dist/es/index.js", diff --git a/packages/plugin-tiff-loader/CHANGELOG.md b/packages/plugin-tiff-loader/CHANGELOG.md index aea6b21..ba671db 100644 --- a/packages/plugin-tiff-loader/CHANGELOG.md +++ b/packages/plugin-tiff-loader/CHANGELOG.md @@ -1,5 +1,12 @@ # @dde-earth/plugin-tiff-loader +## 1.2.3 + +### Patch Changes + +- Updated dependencies + - dde-earth@1.2.3 + ## 1.2.2 ### Patch Changes diff --git a/packages/plugin-tiff-loader/package.json b/packages/plugin-tiff-loader/package.json index aaa2e05..35f0546 100644 --- a/packages/plugin-tiff-loader/package.json +++ b/packages/plugin-tiff-loader/package.json @@ -1,6 +1,6 @@ { "name": "@dde-earth/plugin-tiff-loader", - "version": "1.2.2", + "version": "1.2.3", "type": "module", "main": "./dist/lib/index.js", "module": "./dist/es/index.js", diff --git a/packages/recommend-plugins/CHANGELOG.md b/packages/recommend-plugins/CHANGELOG.md index 99d0436..2df9cf6 100644 --- a/packages/recommend-plugins/CHANGELOG.md +++ b/packages/recommend-plugins/CHANGELOG.md @@ -1,5 +1,12 @@ # @dde-earth/recommend-plugins +## 1.3.3 + +### Patch Changes + +- Updated dependencies + - dde-earth@1.2.3 + ## 1.3.2 ### Patch Changes diff --git a/packages/recommend-plugins/package.json b/packages/recommend-plugins/package.json index 8c6df3e..c3f46ba 100644 --- a/packages/recommend-plugins/package.json +++ b/packages/recommend-plugins/package.json @@ -1,6 +1,6 @@ { "name": "@dde-earth/recommend-plugins", - "version": "1.3.2", + "version": "1.3.3", "type": "module", "main": "./dist/lib/index.js", "module": "./dist/es/index.js", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 167b552..c545de9 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -155,6 +155,22 @@ importers: specifier: latest version: 1.115.0 + packages/plugin-feature-click: + dependencies: + '@cesium-extends/primitive-geojson': + specifier: ^1.0.7 + version: 1.0.7(cesium@1.116.0) + dde-earth: + specifier: workspace:^ + version: link:../dde-earth + devDependencies: + '@dde-earth/recommend-plugins': + specifier: workspace:^ + version: link:../recommend-plugins + cesium: + specifier: latest + version: 1.116.0 + packages/plugin-geojson-loader: dependencies: '@cesium-extends/geojson-render': @@ -507,6 +523,17 @@ packages: nanoid: 4.0.2 dev: false + /@cesium-extends/primitive-geojson@1.0.7(cesium@1.116.0): + resolution: {integrity: sha512-v9CZ1Eru9M1TV3Dt0lSpiDohWdIAR+202nlrpMEryJeWGm60QlxjpV04udBNsvYWLeVlI3d7nyzPwZhW4GbynQ==} + peerDependencies: + cesium: '*' + dependencies: + '@turf/centroid': 6.5.0 + '@turf/helpers': 6.5.0 + cesium: 1.116.0 + nanoid: 4.0.2 + dev: false + /@cesium/engine@8.0.0: resolution: {integrity: sha512-0HvvpoKPrb1Go6MnKsTk0Vn2HV4wv+UAlZGbzG3sD/QjEm4FOYj/sLFrwQqmCn6nFN1aRbhAH1xXJnA9bF+1Wg==} engines: {node: '>=14.0.0'}