@kq_npm/client3d_webgl_vue 4.5.55 → 4.5.57
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/adddata/index.js +189 -21
- package/airspacegridoccupancyquery/index.js +1977 -0
- package/airspacegridoccupancyquery/style/airspacegridoccupancyquery.css +1 -0
- package/airspacegridoccupancyquery/style/index.js +3 -0
- package/airspaceprofileanalysis/index.js +1870 -0
- package/airspaceprofileanalysis/style/airspaceprofileanalysis.css +1 -0
- package/airspaceprofileanalysis/style/index.js +3 -0
- package/aspectanalysis/index.js +25 -7
- package/baseterraingallery/index.js +16 -4
- package/boxclip/index.js +58 -16
- package/buildpointmodel/index.js +3207 -230
- package/buildpointmodel/style/buildpointmodel.css +1 -1
- package/buildpolygonmodel/index.js +205 -81
- package/buildpolylinemodel/index.js +346 -70
- package/clientPrint/index.js +32440 -2337
- package/comparemap/index.js +132 -60
- package/compass/index.js +16 -6
- package/excavatefillanalysis/index.js +51 -7
- package/fixedzoomin/index.js +24 -7
- package/fixedzoomout/index.js +25 -7
- package/flight/index.js +113 -26
- package/floodanalysis/index.js +79 -14
- package/geologicalbodyanalysis/index.js +41 -5
- package/gpuspatialquery/index.js +127 -19
- package/gridoccupancyquery/index.js +627 -0
- package/gridoccupancyquery/style/gridoccupancyquery.css +1 -0
- package/gridoccupancyquery/style/index.js +3 -0
- package/hawkeye/index.js +20 -2
- package/headertemp/index.js +7 -2
- package/heatmap3d/index.js +282 -158
- package/index.js +32440 -2337
- package/isolineanalysis/index.js +113 -38
- package/light/index.js +80 -22
- package/limitheightanalysis/index.js +30 -10
- package/lowaltitudefeature/index.js +5027 -0
- package/lowaltitudefeature/style/index.js +3 -0
- package/lowaltitudefeature/style/lowaltitudefeature.css +1 -0
- package/measure/index.js +60 -19
- package/modelFlat/index.js +48 -8
- package/modeledit/index.js +38 -4
- package/modelexcavate/index.js +48 -7
- package/modelfilter/index.js +51 -8
- package/modelmaterialedit/index.js +127 -25
- package/modelprofileanalysis/index.js +51 -14
- package/modelselect/index.js +34 -3
- package/modelstyleedit/index.js +39 -3
- package/modeltransform/index.js +79 -14
- package/package.json +1 -1
- package/particleeffect/index.js +83 -17
- package/planeclip/index.js +66 -17
- package/pointcloudrender/index.js +134 -15
- package/radarscananalysis/index.js +35 -3
- package/resetview/index.js +14 -6
- package/roller/index.js +55 -18
- package/scaneffect/index.js +98 -29
- package/sceneadvancedtoimage/index.js +32 -6
- package/sceneapp/index.js +32440 -2337
- package/sceneset/index.js +141 -71
- package/scenetohdimage/index.js +23 -3
- package/sceneview/index.js +32440 -2337
- package/sceneview/style/sceneview.css +1 -1
- package/screenshot/index.js +44 -11
- package/shadowanalysis/index.js +79 -19
- package/sightlineanalysis/index.js +66 -15
- package/skylineanalysis/index.js +20 -4
- package/slopeanalysis/index.js +75 -16
- package/slopeaspectanalysis/index.js +128 -26
- package/statusbar/index.js +80 -67
- package/style.css +1 -1
- package/terrainoperation/index.js +39 -7
- package/terrainprofileanalysis/index.js +43 -5
- package/toolbarapp/index.js +32440 -2337
- package/toolboxapp/index.js +32440 -2337
- package/typhoontrac/index.js +134 -16
- package/underground/index.js +8 -2
- package/videofusion/index.js +164 -79
- package/videoproject/index.js +77 -23
- package/viewshedanalysis/index.js +61 -14
- package/weathereffect/index.js +73 -18
- package/webgl.es.js +866 -16
- package/windyslicing/index.js +258 -54
- package/wireframesketch/index.js +25 -8
|
@@ -0,0 +1,627 @@
|
|
|
1
|
+
(function webpackUniversalModuleDefinition(root, factory) {
|
|
2
|
+
if(typeof exports === 'object' && typeof module === 'object')
|
|
3
|
+
module.exports = factory(require("vue"), require("@kq_npm/client_common_vue/_utils/gis-utils"), require("@kq_npm/client_common_vue/init.js"), require("@kq_npm/client_common_vue/configprovider/useGlobalConfig"));
|
|
4
|
+
else if(typeof define === 'function' && define.amd)
|
|
5
|
+
define("@kq_npm/client3d_webgl_vue", ["vue", "@kq_npm/client_common_vue/_utils/gis-utils", "@kq_npm/client_common_vue/init.js", "@kq_npm/client_common_vue/configprovider/useGlobalConfig"], factory);
|
|
6
|
+
else if(typeof exports === 'object')
|
|
7
|
+
exports["@kq_npm/client3d_webgl_vue"] = factory(require("vue"), require("@kq_npm/client_common_vue/_utils/gis-utils"), require("@kq_npm/client_common_vue/init.js"), require("@kq_npm/client_common_vue/configprovider/useGlobalConfig"));
|
|
8
|
+
else
|
|
9
|
+
root["@kq_npm/client3d_webgl_vue"] = factory(root["Vue"], root["@kq_npm/client_common_vue/_utils/gis-utils"], root["@kq_npm/client_common_vue/init.js"], root["@kq_npm/client_common_vue/configprovider/useGlobalConfig"]);
|
|
10
|
+
})(this, function(__WEBPACK_EXTERNAL_MODULE__50154__, __WEBPACK_EXTERNAL_MODULE__20064__, __WEBPACK_EXTERNAL_MODULE__20455__, __WEBPACK_EXTERNAL_MODULE__22686__) {
|
|
11
|
+
return /******/ (function() { // webpackBootstrap
|
|
12
|
+
/******/ "use strict";
|
|
13
|
+
/******/ var __webpack_modules__ = ({
|
|
14
|
+
|
|
15
|
+
/***/ 20064:
|
|
16
|
+
/***/ (function(module) {
|
|
17
|
+
|
|
18
|
+
module.exports = __WEBPACK_EXTERNAL_MODULE__20064__;
|
|
19
|
+
|
|
20
|
+
/***/ }),
|
|
21
|
+
|
|
22
|
+
/***/ 20455:
|
|
23
|
+
/***/ (function(module) {
|
|
24
|
+
|
|
25
|
+
module.exports = __WEBPACK_EXTERNAL_MODULE__20455__;
|
|
26
|
+
|
|
27
|
+
/***/ }),
|
|
28
|
+
|
|
29
|
+
/***/ 21365:
|
|
30
|
+
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
|
|
31
|
+
|
|
32
|
+
// ESM COMPAT FLAG
|
|
33
|
+
__webpack_require__.r(__webpack_exports__);
|
|
34
|
+
|
|
35
|
+
// EXPORTS
|
|
36
|
+
__webpack_require__.d(__webpack_exports__, {
|
|
37
|
+
__esModule: function() { return /* reexport */ GridOccupancyQueryvue_type_script_setup_true_lang_js/* __esModule */.B; },
|
|
38
|
+
"default": function() { return /* binding */ GridOccupancyQuery; }
|
|
39
|
+
});
|
|
40
|
+
|
|
41
|
+
// EXTERNAL MODULE: ./node_modules/babel-loader/lib/index.js??clonedRuleSet-1.use[0]!./node_modules/vue-loader/dist/index.js??ruleSet[0].use[0]!./src/webgl/gridoccupancyquery/GridOccupancyQuery.vue?vue&type=script&setup=true&lang=js
|
|
42
|
+
var GridOccupancyQueryvue_type_script_setup_true_lang_js = __webpack_require__(41433);
|
|
43
|
+
;// ./src/webgl/gridoccupancyquery/GridOccupancyQuery.vue?vue&type=script&setup=true&lang=js
|
|
44
|
+
|
|
45
|
+
;// ./src/webgl/gridoccupancyquery/GridOccupancyQuery.vue
|
|
46
|
+
|
|
47
|
+
|
|
48
|
+
|
|
49
|
+
const __exports__ = GridOccupancyQueryvue_type_script_setup_true_lang_js/* default */.A;
|
|
50
|
+
|
|
51
|
+
/* harmony default export */ var GridOccupancyQuery = (__exports__);
|
|
52
|
+
|
|
53
|
+
/***/ }),
|
|
54
|
+
|
|
55
|
+
/***/ 22686:
|
|
56
|
+
/***/ (function(module) {
|
|
57
|
+
|
|
58
|
+
module.exports = __WEBPACK_EXTERNAL_MODULE__22686__;
|
|
59
|
+
|
|
60
|
+
/***/ }),
|
|
61
|
+
|
|
62
|
+
/***/ 33751:
|
|
63
|
+
/***/ (function(module) {
|
|
64
|
+
|
|
65
|
+
module.exports = require("@babel/runtime/helpers/interopRequireDefault");
|
|
66
|
+
|
|
67
|
+
/***/ }),
|
|
68
|
+
|
|
69
|
+
/***/ 41433:
|
|
70
|
+
/***/ (function(__unused_webpack_module, exports, __webpack_require__) {
|
|
71
|
+
|
|
72
|
+
|
|
73
|
+
|
|
74
|
+
var _interopRequireDefault = __webpack_require__(33751);
|
|
75
|
+
Object.defineProperty(exports, "B", ({
|
|
76
|
+
value: true
|
|
77
|
+
}));
|
|
78
|
+
exports.A = void 0;
|
|
79
|
+
var _vue = __webpack_require__(50154);
|
|
80
|
+
var _client_icons_vue = __webpack_require__(65698);
|
|
81
|
+
var _gisUtils = __webpack_require__(20064);
|
|
82
|
+
var _GridOccupancyQueryViewModel = _interopRequireDefault(__webpack_require__(65588));
|
|
83
|
+
var _useGlobalConfig = __webpack_require__(22686);
|
|
84
|
+
const __default__ = {
|
|
85
|
+
name: "Kq3dGridOccupancyQuery"
|
|
86
|
+
};
|
|
87
|
+
var _default = exports.A = /*@__PURE__*/Object.assign(__default__, {
|
|
88
|
+
props: {
|
|
89
|
+
mapTarget: String,
|
|
90
|
+
// 关联的地图目标 id
|
|
91
|
+
settingParams: {
|
|
92
|
+
type: Object,
|
|
93
|
+
default: () => ({})
|
|
94
|
+
} // 组件配置参数
|
|
95
|
+
},
|
|
96
|
+
setup(__props, {
|
|
97
|
+
expose: __expose
|
|
98
|
+
}) {
|
|
99
|
+
const {
|
|
100
|
+
locale
|
|
101
|
+
} = (0, _useGlobalConfig.useLocale)(); // 当前语言包
|
|
102
|
+
|
|
103
|
+
const props = __props;
|
|
104
|
+
let viewModel = null; // 视图模型实例
|
|
105
|
+
|
|
106
|
+
// 组件挂载时获取场景视图并初始化视图模型
|
|
107
|
+
(0, _vue.onMounted)(() => {
|
|
108
|
+
_gisUtils.utils.getWebMap(props.mapTarget, scenceView => {
|
|
109
|
+
if (scenceView) {
|
|
110
|
+
viewModel = new _GridOccupancyQueryViewModel.default(scenceView, {
|
|
111
|
+
queryUrl: props?.settingParams.queryUrl ?? "",
|
|
112
|
+
calcLevel: props?.settingParams.calcLevel ?? 23,
|
|
113
|
+
isMulti: props?.settingParams.isMulti ?? false
|
|
114
|
+
});
|
|
115
|
+
}
|
|
116
|
+
});
|
|
117
|
+
});
|
|
118
|
+
|
|
119
|
+
// 触发查询,启动绘制
|
|
120
|
+
function startQuery() {
|
|
121
|
+
viewModel && viewModel.start();
|
|
122
|
+
}
|
|
123
|
+
|
|
124
|
+
// 组件卸载前销毁视图模型释放资源
|
|
125
|
+
(0, _vue.onBeforeUnmount)(() => {
|
|
126
|
+
viewModel && viewModel.destroy();
|
|
127
|
+
});
|
|
128
|
+
__expose({
|
|
129
|
+
startQuery
|
|
130
|
+
});
|
|
131
|
+
return (_ctx, _cache) => {
|
|
132
|
+
const _component_kq_icon = (0, _vue.resolveComponent)("kq-icon");
|
|
133
|
+
const _component_kq_button = (0, _vue.resolveComponent)("kq-button");
|
|
134
|
+
return (0, _vue.openBlock)(), (0, _vue.createBlock)(_component_kq_button, {
|
|
135
|
+
title: (0, _vue.unref)(locale).webgl.gridOccupancyQuery,
|
|
136
|
+
onClick: startQuery,
|
|
137
|
+
style: {
|
|
138
|
+
"width": "32px"
|
|
139
|
+
}
|
|
140
|
+
}, {
|
|
141
|
+
default: (0, _vue.withCtx)(() => [(0, _vue.createVNode)(_component_kq_icon, {
|
|
142
|
+
size: 16
|
|
143
|
+
}, {
|
|
144
|
+
default: (0, _vue.withCtx)(() => [(0, _vue.createVNode)((0, _vue.unref)(_client_icons_vue.IconGridCode))]),
|
|
145
|
+
_: 1 /* STABLE */
|
|
146
|
+
})]),
|
|
147
|
+
_: 1 /* STABLE */
|
|
148
|
+
}, 8 /* PROPS */, ["title"]);
|
|
149
|
+
};
|
|
150
|
+
}
|
|
151
|
+
});
|
|
152
|
+
|
|
153
|
+
/***/ }),
|
|
154
|
+
|
|
155
|
+
/***/ 50154:
|
|
156
|
+
/***/ (function(module) {
|
|
157
|
+
|
|
158
|
+
module.exports = __WEBPACK_EXTERNAL_MODULE__50154__;
|
|
159
|
+
|
|
160
|
+
/***/ }),
|
|
161
|
+
|
|
162
|
+
/***/ 56363:
|
|
163
|
+
/***/ (function(module) {
|
|
164
|
+
|
|
165
|
+
module.exports = require("element-plus/dist/index.full.js");
|
|
166
|
+
|
|
167
|
+
/***/ }),
|
|
168
|
+
|
|
169
|
+
/***/ 65588:
|
|
170
|
+
/***/ (function(__unused_webpack_module, exports, __webpack_require__) {
|
|
171
|
+
|
|
172
|
+
|
|
173
|
+
|
|
174
|
+
var _interopRequireDefault = __webpack_require__(33751);
|
|
175
|
+
Object.defineProperty(exports, "__esModule", ({
|
|
176
|
+
value: true
|
|
177
|
+
}));
|
|
178
|
+
exports["default"] = void 0;
|
|
179
|
+
var _message = _interopRequireDefault(__webpack_require__(71323));
|
|
180
|
+
var _loading = _interopRequireDefault(__webpack_require__(90724));
|
|
181
|
+
var _useGlobalConfig = __webpack_require__(22686);
|
|
182
|
+
class GridOccupancyQueryViewModel {
|
|
183
|
+
// 加载 loading 实例
|
|
184
|
+
|
|
185
|
+
/** @description 构造函数,初始化视图模型
|
|
186
|
+
* @param {Object} scenceView 场景视图对象,包含 viewer、drawManager 等
|
|
187
|
+
* @param {Object} options 配置项,包含 queryUrl、calcLevel、isMulti 等
|
|
188
|
+
*/
|
|
189
|
+
constructor(scenceView, options) {
|
|
190
|
+
this._viewer = null;
|
|
191
|
+
// Cesium Viewer 实例
|
|
192
|
+
this._mapTarget = null;
|
|
193
|
+
// 地图容器 DOM id
|
|
194
|
+
this._options = {};
|
|
195
|
+
// 外部传入的合并后配置项
|
|
196
|
+
this._defaultOptions = {
|
|
197
|
+
queryUrl: "",
|
|
198
|
+
// 网格占用查询服务地址
|
|
199
|
+
calcLevel: 23,
|
|
200
|
+
// 计算层级
|
|
201
|
+
isMulti: false // 是否支持多次绘制查询
|
|
202
|
+
};
|
|
203
|
+
this._drawManager = null;
|
|
204
|
+
// 绘制管理器实例
|
|
205
|
+
this._language = null;
|
|
206
|
+
// 当前语言包
|
|
207
|
+
this._htmlTag = null;
|
|
208
|
+
// 拖拽 HTML 标签实例
|
|
209
|
+
this._clickGirdPrimitive = null;
|
|
210
|
+
// 网格几何图元实例
|
|
211
|
+
this._loading = null;
|
|
212
|
+
const {
|
|
213
|
+
locale
|
|
214
|
+
} = (0, _useGlobalConfig.useLocale)();
|
|
215
|
+
this._language = locale;
|
|
216
|
+
this._options = Object.assign({}, this._defaultOptions, options);
|
|
217
|
+
this._viewer = scenceView._viewer;
|
|
218
|
+
this._drawManager = scenceView._drawManager;
|
|
219
|
+
this._mapTarget = scenceView._viewerId || null;
|
|
220
|
+
this._viewer.resolutionScale = 1; // 设置渲染分辨率为 1
|
|
221
|
+
this._viewer.postProcessStages.fxaa.enabled = true; // 开启抗锯齿
|
|
222
|
+
this._viewer.scene.logarithmicDepthBuffer = true; // 启用对数深度缓冲,避免 z-fighting
|
|
223
|
+
}
|
|
224
|
+
|
|
225
|
+
// 启动网格占用查询,进入标绘模式
|
|
226
|
+
start() {
|
|
227
|
+
const that = this;
|
|
228
|
+
const queryUrl = this._options.queryUrl || "";
|
|
229
|
+
// 查询服务地址为空时给出提示并终止
|
|
230
|
+
if (!queryUrl.trim()) {
|
|
231
|
+
(0, _message.default)({
|
|
232
|
+
message: that._language.value.webgl["gridOccupancyQueryUrlEmpty"] || "请配置查询服务地址",
|
|
233
|
+
type: "warning"
|
|
234
|
+
});
|
|
235
|
+
return;
|
|
236
|
+
}
|
|
237
|
+
this.removeData();
|
|
238
|
+
if (!this._drawManager) return;
|
|
239
|
+
// 调用绘制管理器进入标点绘制模式
|
|
240
|
+
this._drawManager.startDraw("marker", {
|
|
241
|
+
image: null
|
|
242
|
+
}, (feature, {
|
|
243
|
+
shape
|
|
244
|
+
}) => {
|
|
245
|
+
// 仅处理本组件绘制组的图形
|
|
246
|
+
if (!shape || !shape.groupName || shape.groupName !== "GridOccupancyQueryDraw") return;
|
|
247
|
+
that.showGridOccupancyQuery(shape._position);
|
|
248
|
+
that._drawManager.clearDrawGroup("GridOccupancyQueryDraw");
|
|
249
|
+
}, "GridOccupancyQueryDraw", that._options.isMulti);
|
|
250
|
+
}
|
|
251
|
+
|
|
252
|
+
/** @description 根据点击位置发起网格占用查询并渲染结果
|
|
253
|
+
* @param {Cesium.Cartesian3} position 点击位置的笛卡尔坐标
|
|
254
|
+
*/
|
|
255
|
+
showGridOccupancyQuery(position) {
|
|
256
|
+
this.removeData();
|
|
257
|
+
const that = this;
|
|
258
|
+
const queryUrl = this._options.queryUrl || "";
|
|
259
|
+
const level = this._options.calcLevel || 23;
|
|
260
|
+
// 将笛卡尔坐标转换为经纬度地理坐标
|
|
261
|
+
const cartographic = Cesium.Cartographic.fromCartesian(position);
|
|
262
|
+
const lon = Cesium.Math.toDegrees(cartographic.longitude);
|
|
263
|
+
const lat = Cesium.Math.toDegrees(cartographic.latitude);
|
|
264
|
+
const height = cartographic.height;
|
|
265
|
+
const url = `${queryUrl}/airspaceOccupyPosition?lon=${lon}&lat=${lat}&height=${height}&level=${level}`;
|
|
266
|
+
this._showLoading();
|
|
267
|
+
|
|
268
|
+
// 发起查询请求
|
|
269
|
+
fetch(url, {
|
|
270
|
+
method: "POST"
|
|
271
|
+
}).then(response => {
|
|
272
|
+
if (!response.ok) throw new Error("Network response was not ok");
|
|
273
|
+
return response.json();
|
|
274
|
+
}).then(data => {
|
|
275
|
+
// 请求成功且包含网格编码时渲染结果
|
|
276
|
+
if (data.code === 200 && data.content && data.content.code) {
|
|
277
|
+
const instanc = that.getGridInstanc(data.content.code);
|
|
278
|
+
if (instanc) {
|
|
279
|
+
that.renderGrid(instanc, data.content, position);
|
|
280
|
+
that._hideLoading();
|
|
281
|
+
return;
|
|
282
|
+
}
|
|
283
|
+
}
|
|
284
|
+
that._hideLoading();
|
|
285
|
+
}).catch(error => {
|
|
286
|
+
that._hideLoading();
|
|
287
|
+
console.error("Grid occupancy query error:", error);
|
|
288
|
+
(0, _message.default)({
|
|
289
|
+
message: that._language.value.webgl["gridOccupancyQueryFailed"] || "查询失败",
|
|
290
|
+
type: "error"
|
|
291
|
+
});
|
|
292
|
+
});
|
|
293
|
+
}
|
|
294
|
+
|
|
295
|
+
/** @description 渲染网格几何图元及信息浮窗
|
|
296
|
+
* @param {Cesium.GeometryInstance} instanc 网格几何实例
|
|
297
|
+
* @param {Object} content 查询返回的内容,包含 code、types 等
|
|
298
|
+
* @param {Cesium.Cartesian3} position 标绘点笛卡尔坐标
|
|
299
|
+
*/
|
|
300
|
+
renderGrid(instanc, content, position) {
|
|
301
|
+
const that = this;
|
|
302
|
+
// 已存在图元时复用并更新几何实例
|
|
303
|
+
if (that._clickGirdPrimitive) {
|
|
304
|
+
that._clickGirdPrimitive.geometryInstances = instanc;
|
|
305
|
+
that._clickGirdPrimitive._state = Cesium.PrimitiveState.READY;
|
|
306
|
+
that._clickGirdPrimitive.updateVertex = true;
|
|
307
|
+
} else {
|
|
308
|
+
// 首次渲染时创建带半透明红色材质的 Primitive
|
|
309
|
+
that._clickGirdPrimitive = that._viewer.scene.primitives.add(new Cesium.Primitive({
|
|
310
|
+
geometryInstances: instanc,
|
|
311
|
+
appearance: new Cesium.MaterialAppearance({
|
|
312
|
+
flat: true,
|
|
313
|
+
translucent: false,
|
|
314
|
+
material: new Cesium.Material({
|
|
315
|
+
fabric: {
|
|
316
|
+
type: "Color",
|
|
317
|
+
uniforms: {
|
|
318
|
+
color: Cesium.Color.RED.withAlpha(0.3)
|
|
319
|
+
}
|
|
320
|
+
}
|
|
321
|
+
}),
|
|
322
|
+
renderState: {
|
|
323
|
+
depthTest: {
|
|
324
|
+
enabled: true
|
|
325
|
+
}
|
|
326
|
+
}
|
|
327
|
+
}),
|
|
328
|
+
cull: false,
|
|
329
|
+
asynchronous: false
|
|
330
|
+
}));
|
|
331
|
+
}
|
|
332
|
+
const code = content.code || "";
|
|
333
|
+
const gridcode = code.substring(0, (code.length + 1) / 2); // 截取前半段作为网格编码
|
|
334
|
+
const type = (content.types || []).map(item => item.description).join(","); // 拼接占用类型描述
|
|
335
|
+
|
|
336
|
+
// 创建可拖拽 HTML 信息标签
|
|
337
|
+
that._htmlTag = new Cesium.Kq3dDragableHtmlTag(that._viewer, {
|
|
338
|
+
showLine: true,
|
|
339
|
+
lineStyle: "solid",
|
|
340
|
+
lineWidth: 2,
|
|
341
|
+
lineColor: Cesium.Color.DARKCYAN,
|
|
342
|
+
position: position,
|
|
343
|
+
panelOffset: [20, 20],
|
|
344
|
+
html: `<div class='grid_info'>
|
|
345
|
+
<span id='grid_info_close' class='close'>×</span>
|
|
346
|
+
<div class='title'>${that._language.value.webgl["gridOccupancyQuery"]}</div>
|
|
347
|
+
<div class='attr'>${that._language.value.common["gridCode"]}: ${gridcode}</div>
|
|
348
|
+
<div class='attr'>${that._language.value.webgl["occupancyType"]}: ${type}</div>
|
|
349
|
+
</div>`
|
|
350
|
+
});
|
|
351
|
+
|
|
352
|
+
// 延迟绑定关闭按钮事件
|
|
353
|
+
setTimeout(() => {
|
|
354
|
+
const close = document.querySelector("#grid_info_close");
|
|
355
|
+
if (close) {
|
|
356
|
+
close.addEventListener("click", function () {
|
|
357
|
+
that.clear();
|
|
358
|
+
});
|
|
359
|
+
}
|
|
360
|
+
}, 500);
|
|
361
|
+
}
|
|
362
|
+
|
|
363
|
+
/** @description 根据网格编码构建 Cesium 几何实例
|
|
364
|
+
* @param {String} code 网格编码字符串
|
|
365
|
+
* @returns {Cesium.GeometryInstance|null} 网格几何实例
|
|
366
|
+
*/
|
|
367
|
+
getGridInstanc(code) {
|
|
368
|
+
const index = (code.length + 1) / 2;
|
|
369
|
+
// 调用 WASM 模块解码网格编码为边界框
|
|
370
|
+
const grid = Module.decodeGeoSotGBCodeToBox(code.substring(0, index), code.substring(index));
|
|
371
|
+
if (!grid) return null;
|
|
372
|
+
// 限制经纬度范围在合法区间内
|
|
373
|
+
grid.minx = Math.max(grid.minx, -180);
|
|
374
|
+
grid.maxx = Math.min(grid.maxx, 180);
|
|
375
|
+
grid.miny = Math.max(grid.miny, -90);
|
|
376
|
+
grid.maxy = Math.min(grid.maxy, 90);
|
|
377
|
+
const minLon = Math.min(grid.minx, grid.maxx);
|
|
378
|
+
const minLat = Math.min(grid.miny, grid.maxy);
|
|
379
|
+
const maxLon = Math.max(grid.minx, grid.maxx);
|
|
380
|
+
const maxLat = Math.max(grid.miny, grid.maxy);
|
|
381
|
+
// 构建拉伸矩形几何体
|
|
382
|
+
const rectangle = new Cesium.RectangleGeometry({
|
|
383
|
+
ellipsoid: Cesium.Ellipsoid.WGS84,
|
|
384
|
+
rectangle: Cesium.Rectangle.fromDegrees(minLon, minLat, maxLon, maxLat),
|
|
385
|
+
height: grid.minz,
|
|
386
|
+
extrudedHeight: grid.maxz
|
|
387
|
+
});
|
|
388
|
+
return new Cesium.GeometryInstance({
|
|
389
|
+
geometry: rectangle
|
|
390
|
+
});
|
|
391
|
+
}
|
|
392
|
+
|
|
393
|
+
// 显示加载中遮罩
|
|
394
|
+
_showLoading() {
|
|
395
|
+
this._loading = _loading.default.service({
|
|
396
|
+
lock: true,
|
|
397
|
+
text: "Loading",
|
|
398
|
+
background: "rgba(0, 0, 0, 0.7)",
|
|
399
|
+
target: this._mapTarget ? document.getElementById(this._mapTarget) : null
|
|
400
|
+
});
|
|
401
|
+
}
|
|
402
|
+
|
|
403
|
+
// 关闭加载中遮罩
|
|
404
|
+
_hideLoading() {
|
|
405
|
+
if (this._loading) {
|
|
406
|
+
this._loading.close();
|
|
407
|
+
this._loading = null;
|
|
408
|
+
}
|
|
409
|
+
}
|
|
410
|
+
|
|
411
|
+
// 移除已渲染的网格图元与 HTML 标签数据
|
|
412
|
+
removeData() {
|
|
413
|
+
if (this._htmlTag) {
|
|
414
|
+
this._htmlTag.destroy();
|
|
415
|
+
this._htmlTag = null;
|
|
416
|
+
}
|
|
417
|
+
if (this._clickGirdPrimitive) {
|
|
418
|
+
this._clickGirdPrimitive.geometryInstances = [];
|
|
419
|
+
this._clickGirdPrimitive._state = Cesium.PrimitiveState.READY;
|
|
420
|
+
this._clickGirdPrimitive.updateVertex = true;
|
|
421
|
+
}
|
|
422
|
+
}
|
|
423
|
+
|
|
424
|
+
// 清空数据并停止绘制
|
|
425
|
+
clear() {
|
|
426
|
+
this.removeData();
|
|
427
|
+
this._hideLoading();
|
|
428
|
+
this._drawManager?.stopDraw();
|
|
429
|
+
this._drawManager?.clearDrawGroup("GridOccupancyQueryDraw");
|
|
430
|
+
}
|
|
431
|
+
|
|
432
|
+
// 销毁视图模型,释放资源
|
|
433
|
+
destroy() {
|
|
434
|
+
this.clear();
|
|
435
|
+
}
|
|
436
|
+
}
|
|
437
|
+
exports["default"] = GridOccupancyQueryViewModel;
|
|
438
|
+
|
|
439
|
+
/***/ }),
|
|
440
|
+
|
|
441
|
+
/***/ 65698:
|
|
442
|
+
/***/ (function(module) {
|
|
443
|
+
|
|
444
|
+
module.exports = require("@kq_npm/client_icons_vue");
|
|
445
|
+
|
|
446
|
+
/***/ }),
|
|
447
|
+
|
|
448
|
+
/***/ 71323:
|
|
449
|
+
/***/ (function(__unused_webpack_module, exports, __webpack_require__) {
|
|
450
|
+
|
|
451
|
+
|
|
452
|
+
|
|
453
|
+
var _interopRequireDefault = __webpack_require__(33751);
|
|
454
|
+
Object.defineProperty(exports, "__esModule", ({
|
|
455
|
+
value: true
|
|
456
|
+
}));
|
|
457
|
+
exports["default"] = void 0;
|
|
458
|
+
var _indexFull = __webpack_require__(56363);
|
|
459
|
+
var _KqGIS = __webpack_require__(99602);
|
|
460
|
+
var _init = _interopRequireDefault(__webpack_require__(20455));
|
|
461
|
+
/*
|
|
462
|
+
* Copyright (C) 2019 KQ GEO Technologies Co., Ltd.
|
|
463
|
+
* All rights reserved.
|
|
464
|
+
*/
|
|
465
|
+
|
|
466
|
+
_indexFull.ElMessage.install = (Vue, opts) => {
|
|
467
|
+
(0, _init.default)(Vue, opts);
|
|
468
|
+
Vue.component("KqMessage", _indexFull.ElMessage);
|
|
469
|
+
};
|
|
470
|
+
var _default = exports["default"] = _indexFull.ElMessage;
|
|
471
|
+
_KqGIS.kq_npm_client_common_vue.KqMessage = _indexFull.ElMessage;
|
|
472
|
+
|
|
473
|
+
/***/ }),
|
|
474
|
+
|
|
475
|
+
/***/ 90724:
|
|
476
|
+
/***/ (function(__unused_webpack_module, exports, __webpack_require__) {
|
|
477
|
+
|
|
478
|
+
|
|
479
|
+
|
|
480
|
+
var _interopRequireDefault = __webpack_require__(33751);
|
|
481
|
+
Object.defineProperty(exports, "__esModule", ({
|
|
482
|
+
value: true
|
|
483
|
+
}));
|
|
484
|
+
exports["default"] = void 0;
|
|
485
|
+
var _indexFull = __webpack_require__(56363);
|
|
486
|
+
var _init = _interopRequireDefault(__webpack_require__(20455));
|
|
487
|
+
var _KqGIS = __webpack_require__(99602);
|
|
488
|
+
/*
|
|
489
|
+
* Copyright (C) 2019 KQ GEO Technologies Co., Ltd.
|
|
490
|
+
* All rights reserved.
|
|
491
|
+
*/
|
|
492
|
+
|
|
493
|
+
_indexFull.ElLoading.install = (Vue, opts) => {
|
|
494
|
+
(0, _init.default)(Vue, opts);
|
|
495
|
+
Vue.component("KqLoading", _indexFull.ElLoading);
|
|
496
|
+
Vue.directive("loading", _indexFull.ElLoading.directive);
|
|
497
|
+
};
|
|
498
|
+
var _default = exports["default"] = _indexFull.ElLoading;
|
|
499
|
+
_KqGIS.kq_npm_client_common_vue.KqLoading = _indexFull.ElLoading;
|
|
500
|
+
|
|
501
|
+
/***/ }),
|
|
502
|
+
|
|
503
|
+
/***/ 99602:
|
|
504
|
+
/***/ (function(__unused_webpack_module, exports, __webpack_require__) {
|
|
505
|
+
|
|
506
|
+
|
|
507
|
+
|
|
508
|
+
Object.defineProperty(exports, "__esModule", ({
|
|
509
|
+
value: true
|
|
510
|
+
}));
|
|
511
|
+
exports.kq_npm_client_leaflet_vue = exports.kq_npm_client_common_vue = exports.kq_npm_client3d_webgl_vue = void 0;
|
|
512
|
+
const kq_npm_client_common_vue = exports.kq_npm_client_common_vue = window.kq_npm_client_common_vue = window.kq_npm_client_common_vue || {};
|
|
513
|
+
__webpack_require__.g.kq_npm_client_common_vue = kq_npm_client_common_vue;
|
|
514
|
+
const kq_npm_client_leaflet_vue = exports.kq_npm_client_leaflet_vue = window.kq_npm_client_leaflet_vue = window.kq_npm_client_leaflet_vue || {};
|
|
515
|
+
__webpack_require__.g.kq_npm_client_leaflet_vue = kq_npm_client_leaflet_vue;
|
|
516
|
+
const kq_npm_client3d_webgl_vue = exports.kq_npm_client3d_webgl_vue = window.kq_npm_client3d_webgl_vue = window.kq_npm_client3d_webgl_vue || {};
|
|
517
|
+
__webpack_require__.g.kq_npm_client3d_webgl_vue = kq_npm_client3d_webgl_vue;
|
|
518
|
+
|
|
519
|
+
/***/ })
|
|
520
|
+
|
|
521
|
+
/******/ });
|
|
522
|
+
/************************************************************************/
|
|
523
|
+
/******/ // The module cache
|
|
524
|
+
/******/ var __webpack_module_cache__ = {};
|
|
525
|
+
/******/
|
|
526
|
+
/******/ // The require function
|
|
527
|
+
/******/ function __webpack_require__(moduleId) {
|
|
528
|
+
/******/ // Check if module is in cache
|
|
529
|
+
/******/ var cachedModule = __webpack_module_cache__[moduleId];
|
|
530
|
+
/******/ if (cachedModule !== undefined) {
|
|
531
|
+
/******/ return cachedModule.exports;
|
|
532
|
+
/******/ }
|
|
533
|
+
/******/ // Create a new module (and put it into the cache)
|
|
534
|
+
/******/ var module = __webpack_module_cache__[moduleId] = {
|
|
535
|
+
/******/ // no module.id needed
|
|
536
|
+
/******/ // no module.loaded needed
|
|
537
|
+
/******/ exports: {}
|
|
538
|
+
/******/ };
|
|
539
|
+
/******/
|
|
540
|
+
/******/ // Execute the module function
|
|
541
|
+
/******/ __webpack_modules__[moduleId](module, module.exports, __webpack_require__);
|
|
542
|
+
/******/
|
|
543
|
+
/******/ // Return the exports of the module
|
|
544
|
+
/******/ return module.exports;
|
|
545
|
+
/******/ }
|
|
546
|
+
/******/
|
|
547
|
+
/************************************************************************/
|
|
548
|
+
/******/ /* webpack/runtime/define property getters */
|
|
549
|
+
/******/ !function() {
|
|
550
|
+
/******/ // define getter functions for harmony exports
|
|
551
|
+
/******/ __webpack_require__.d = function(exports, definition) {
|
|
552
|
+
/******/ for(var key in definition) {
|
|
553
|
+
/******/ if(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {
|
|
554
|
+
/******/ Object.defineProperty(exports, key, { enumerable: true, get: definition[key] });
|
|
555
|
+
/******/ }
|
|
556
|
+
/******/ }
|
|
557
|
+
/******/ };
|
|
558
|
+
/******/ }();
|
|
559
|
+
/******/
|
|
560
|
+
/******/ /* webpack/runtime/global */
|
|
561
|
+
/******/ !function() {
|
|
562
|
+
/******/ __webpack_require__.g = (function() {
|
|
563
|
+
/******/ if (typeof globalThis === 'object') return globalThis;
|
|
564
|
+
/******/ try {
|
|
565
|
+
/******/ return this || new Function('return this')();
|
|
566
|
+
/******/ } catch (e) {
|
|
567
|
+
/******/ if (typeof window === 'object') return window;
|
|
568
|
+
/******/ }
|
|
569
|
+
/******/ })();
|
|
570
|
+
/******/ }();
|
|
571
|
+
/******/
|
|
572
|
+
/******/ /* webpack/runtime/hasOwnProperty shorthand */
|
|
573
|
+
/******/ !function() {
|
|
574
|
+
/******/ __webpack_require__.o = function(obj, prop) { return Object.prototype.hasOwnProperty.call(obj, prop); }
|
|
575
|
+
/******/ }();
|
|
576
|
+
/******/
|
|
577
|
+
/******/ /* webpack/runtime/make namespace object */
|
|
578
|
+
/******/ !function() {
|
|
579
|
+
/******/ // define __esModule on exports
|
|
580
|
+
/******/ __webpack_require__.r = function(exports) {
|
|
581
|
+
/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
|
|
582
|
+
/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
|
|
583
|
+
/******/ }
|
|
584
|
+
/******/ Object.defineProperty(exports, '__esModule', { value: true });
|
|
585
|
+
/******/ };
|
|
586
|
+
/******/ }();
|
|
587
|
+
/******/
|
|
588
|
+
/************************************************************************/
|
|
589
|
+
var __webpack_exports__ = {};
|
|
590
|
+
// This entry needs to be wrapped in an IIFE because it uses a non-standard name for the exports (exports).
|
|
591
|
+
!function() {
|
|
592
|
+
var exports = __webpack_exports__;
|
|
593
|
+
|
|
594
|
+
|
|
595
|
+
var _interopRequireDefault = __webpack_require__(33751);
|
|
596
|
+
Object.defineProperty(exports, "__esModule", ({
|
|
597
|
+
value: true
|
|
598
|
+
}));
|
|
599
|
+
Object.defineProperty(exports, "GridOccupancyQueryViewModel", ({
|
|
600
|
+
enumerable: true,
|
|
601
|
+
get: function () {
|
|
602
|
+
return _GridOccupancyQueryViewModel.default;
|
|
603
|
+
}
|
|
604
|
+
}));
|
|
605
|
+
Object.defineProperty(exports, "default", ({
|
|
606
|
+
enumerable: true,
|
|
607
|
+
get: function () {
|
|
608
|
+
return _GridOccupancyQuery.default;
|
|
609
|
+
}
|
|
610
|
+
}));
|
|
611
|
+
var _GridOccupancyQuery = _interopRequireDefault(__webpack_require__(21365));
|
|
612
|
+
var _GridOccupancyQueryViewModel = _interopRequireDefault(__webpack_require__(65588));
|
|
613
|
+
var _init = _interopRequireDefault(__webpack_require__(20455));
|
|
614
|
+
/*
|
|
615
|
+
* Copyright (C) 2019 KQ GEO Technologies Co., Ltd.
|
|
616
|
+
* All rights reserved.
|
|
617
|
+
*/
|
|
618
|
+
|
|
619
|
+
_GridOccupancyQuery.default.install = (Vue, opts) => {
|
|
620
|
+
(0, _init.default)(Vue, opts);
|
|
621
|
+
Vue.component(_GridOccupancyQuery.default.name, _GridOccupancyQuery.default);
|
|
622
|
+
};
|
|
623
|
+
}();
|
|
624
|
+
/******/ return __webpack_exports__;
|
|
625
|
+
/******/ })()
|
|
626
|
+
;
|
|
627
|
+
});
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
.grid_info{width:325px;border:1px solid var(--kq-border-color-lighter);border-radius:5px;cursor:default;background-color:var(--kq-bg-color)}.grid_info .close{position:absolute;top:0;right:5px;font-size:var(--kq-font-size-extra-large);cursor:pointer}.grid_info .title{font-size:var(--kq-font-size-medium);font-weight:bolder;border-bottom:1px solid var(--kq-border-color-lighter)}.grid_info .attr,.grid_info .title{padding:5px 10px;background-color:var(--kq-bg-color)}.grid_info .attr{font-size:var(--kq-font-size-base)}
|
package/hawkeye/index.js
CHANGED
|
@@ -43,12 +43,20 @@ exports["default"] = void 0;
|
|
|
43
43
|
class HawkeyeViewModel {
|
|
44
44
|
//鹰眼三维对象
|
|
45
45
|
|
|
46
|
+
/** @description 构造函数,初始化鹰眼对象
|
|
47
|
+
* @param {Object} scenceView 场景视图对象,包含 viewer 等
|
|
48
|
+
* @param {Object} options 鹰眼配置项,包含 show、width、height、centerColor 等
|
|
49
|
+
*/
|
|
46
50
|
constructor(scenceView, options) {
|
|
47
51
|
this._overviewMap = null;
|
|
48
52
|
options.viewer = scenceView._viewer;
|
|
49
53
|
options.centerRectColor = Cesium.Color.fromCssColorString(options.centerColor || "#0000ff").withAlpha(options.centerColorAlpha || 0.5);
|
|
50
54
|
this.init(options);
|
|
51
55
|
}
|
|
56
|
+
|
|
57
|
+
/** @description 初始化鹰眼地图对象
|
|
58
|
+
* @param {Object} options 鹰眼配置项
|
|
59
|
+
*/
|
|
52
60
|
init(options) {
|
|
53
61
|
// if(!options.layers) {
|
|
54
62
|
// let layers = [];
|
|
@@ -73,7 +81,9 @@ class HawkeyeViewModel {
|
|
|
73
81
|
this._overviewMap.show = false;
|
|
74
82
|
}
|
|
75
83
|
|
|
76
|
-
|
|
84
|
+
/** @description 设置图层
|
|
85
|
+
* @param {Array} layers 图层数组
|
|
86
|
+
*/
|
|
77
87
|
setLayers(layers) {
|
|
78
88
|
if (Array.isArray(layers)) {
|
|
79
89
|
this._overviewMap._viewer.imageryLayers.removeAll();
|
|
@@ -188,7 +198,7 @@ var _default = exports.A = /*@__PURE__*/Object.assign(__default__, {
|
|
|
188
198
|
setup(__props, {
|
|
189
199
|
expose: __expose
|
|
190
200
|
}) {
|
|
191
|
-
let viewModel = null;
|
|
201
|
+
let viewModel = null; // 鹰眼视图模型实例
|
|
192
202
|
|
|
193
203
|
// 获取组件传参
|
|
194
204
|
const props = __props;
|
|
@@ -211,12 +221,20 @@ var _default = exports.A = /*@__PURE__*/Object.assign(__default__, {
|
|
|
211
221
|
}
|
|
212
222
|
});
|
|
213
223
|
});
|
|
224
|
+
|
|
225
|
+
// 显示鹰眼
|
|
214
226
|
function show() {
|
|
215
227
|
viewModel && viewModel.show();
|
|
216
228
|
}
|
|
229
|
+
|
|
230
|
+
// 隐藏鹰眼
|
|
217
231
|
function hide() {
|
|
218
232
|
viewModel && viewModel.hide();
|
|
219
233
|
}
|
|
234
|
+
|
|
235
|
+
/** @description 设置鹰眼图层
|
|
236
|
+
* @param {Array} layers 图层数组
|
|
237
|
+
*/
|
|
220
238
|
function setLayers(layers) {
|
|
221
239
|
viewModel && viewModel.setLayers(layers);
|
|
222
240
|
}
|