gisviewer-vue3-arcgis 1.0.227 → 1.0.229

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.
Files changed (40) hide show
  1. package/es/src/gis-map/gis-map.vue.d.ts +8 -2
  2. package/es/src/gis-map/gis-map.vue.mjs +2 -2
  3. package/es/src/gis-map/index.d.ts +2 -2
  4. package/es/src/gis-map/utils/{signal-control-area-controller → signal-control-area}/district-controller.d.ts +2 -1
  5. package/es/src/gis-map/utils/signal-control-area/district-controller.mjs +45 -0
  6. package/es/src/gis-map/utils/signal-control-area/district-renderer.d.ts +40 -0
  7. package/es/src/gis-map/utils/signal-control-area/district-renderer.mjs +123 -0
  8. package/es/src/gis-map/utils/{signal-control-area-controller → signal-control-area}/layer-symbol.d.ts +8 -1
  9. package/es/src/gis-map/utils/{signal-control-area-controller → signal-control-area}/layer-symbol.mjs +74 -56
  10. package/es/src/gis-map/utils/{signal-control-area-controller → signal-control-area}/show-area.d.ts +4 -14
  11. package/es/src/gis-map/utils/signal-control-area/show-area.mjs +397 -0
  12. package/es/src/gis-map/utils/signal-control-area/signal-renderer.d.ts +22 -0
  13. package/es/src/gis-map/utils/signal-control-area/signal-renderer.mjs +124 -0
  14. package/es/src/gis-map/utils/signal-control-area/sub-district-renderer.d.ts +27 -0
  15. package/es/src/gis-map/utils/signal-control-area/sub-district-renderer.mjs +142 -0
  16. package/lib/src/gis-map/gis-map.vue.d.ts +8 -2
  17. package/lib/src/gis-map/gis-map.vue.js +1 -1
  18. package/lib/src/gis-map/index.d.ts +2 -2
  19. package/lib/src/gis-map/utils/{signal-control-area-controller → signal-control-area}/district-controller.d.ts +2 -1
  20. package/lib/src/gis-map/utils/signal-control-area/district-controller.js +1 -0
  21. package/lib/src/gis-map/utils/signal-control-area/district-renderer.d.ts +40 -0
  22. package/lib/src/gis-map/utils/signal-control-area/district-renderer.js +1 -0
  23. package/lib/src/gis-map/utils/{signal-control-area-controller → signal-control-area}/layer-symbol.d.ts +8 -1
  24. package/lib/src/gis-map/utils/signal-control-area/layer-symbol.js +1 -0
  25. package/lib/src/gis-map/utils/{signal-control-area-controller → signal-control-area}/show-area.d.ts +4 -14
  26. package/lib/src/gis-map/utils/signal-control-area/show-area.js +1 -0
  27. package/lib/src/gis-map/utils/signal-control-area/signal-renderer.d.ts +22 -0
  28. package/lib/src/gis-map/utils/signal-control-area/signal-renderer.js +1 -0
  29. package/lib/src/gis-map/utils/signal-control-area/sub-district-renderer.d.ts +27 -0
  30. package/lib/src/gis-map/utils/signal-control-area/sub-district-renderer.js +1 -0
  31. package/package.json +1 -1
  32. package/es/src/gis-map/utils/signal-control-area-controller/district-controller.mjs +0 -38
  33. package/es/src/gis-map/utils/signal-control-area-controller/show-area.mjs +0 -454
  34. package/lib/src/gis-map/utils/signal-control-area-controller/district-controller.js +0 -1
  35. package/lib/src/gis-map/utils/signal-control-area-controller/layer-symbol.js +0 -1
  36. package/lib/src/gis-map/utils/signal-control-area-controller/show-area.js +0 -1
  37. /package/es/src/gis-map/utils/{signal-control-area-controller → signal-control-area}/edit-area.d.ts +0 -0
  38. /package/es/src/gis-map/utils/{signal-control-area-controller → signal-control-area}/edit-area.mjs +0 -0
  39. /package/lib/src/gis-map/utils/{signal-control-area-controller → signal-control-area}/edit-area.d.ts +0 -0
  40. /package/lib/src/gis-map/utils/{signal-control-area-controller → signal-control-area}/edit-area.js +0 -0
@@ -0,0 +1,397 @@
1
+ import { Polygon as f } from "@arcgis/core/geometry";
2
+ import { webMercatorToGeographic as m } from "@arcgis/core/geometry/support/webMercatorUtils";
3
+ import u from "@arcgis/core/Graphic";
4
+ import y from "@arcgis/core/layers/GraphicsLayer";
5
+ import D from "@turf/buffer";
6
+ import w from "@turf/convex";
7
+ import * as c from "@turf/helpers";
8
+ import R from "concaveman";
9
+ import S from "../../stores/index.mjs";
10
+ import G from "./district-controller.mjs";
11
+ import C from "./district-renderer.mjs";
12
+ import I from "./signal-renderer.mjs";
13
+ import L from "./sub-district-renderer.mjs";
14
+ class T {
15
+ constructor(t) {
16
+ this.detachmentLayerLoaded = !1, this.districtControllerOid = 0, this.subDistrictControllerOid = 0, this.signalOid = 0, this.popupEnabled = !0, this.districtGraphics = [], this.subDistrictGraphics = [], this.signalGraphics = [], this.view = t, this.hasGpu = localStorage.getItem("gpu") !== "Unknown";
17
+ const e = S.useAppDataStore;
18
+ this.mapConfig = JSON.parse(JSON.stringify(e.mapConfig)), this.detachmentLayer = new y(), this.view.map.add(this.detachmentLayer), this.districtRenderer = new C(t, this.hasGpu), this.subDistrictRenderer = new L(t, this.hasGpu), this.signalRenderer = new I(t, this.hasGpu);
19
+ }
20
+ /**
21
+ * 显示所有区控、子区、信号机
22
+ * @param params
23
+ * @returns
24
+ */
25
+ async showSignalControlArea(t) {
26
+ this.detachmentLayerLoaded || await this.loadDetachmentLayer(), await this.clearSignalControlArea(), this.districtRenderer.setVisible(!1), this.subDistrictRenderer.setVisible(!1), this.signalRenderer.setClusterVisible(!1), this.signalRenderer.setPointVisible(!1);
27
+ const e = [], s = [];
28
+ for (const r of t.areaList) {
29
+ const a = new G(
30
+ r,
31
+ t.style || ""
32
+ );
33
+ e.push(a), s.push(...a.subDistricts);
34
+ }
35
+ return this.districtRenderer.style = t.style || "", await this.districtRenderer.showDistricts(e), await this.subDistrictRenderer.showSubDistricts(s), await this.signalRenderer.showSignals(e), { status: 0, message: "ok" };
36
+ }
37
+ /**
38
+ * 清空区控、子区、信号机
39
+ * @returns
40
+ */
41
+ async clearSignalControlArea() {
42
+ return this.districtGraphics = [], this.subDistrictGraphics = [], this.signalGraphics = [], this.districtControllerOid = 0, this.subDistrictControllerOid = 0, this.signalOid = 0, await this.districtRenderer.clearDistricts(), await this.subDistrictRenderer.clearSubDistricts(), await this.signalRenderer.clearSignals(), { status: 0, message: "ok" };
43
+ }
44
+ /**
45
+ * 设置区控、子区、信号机图层可见性
46
+ * @param layerName
47
+ * @param visible
48
+ */
49
+ setLayerVisibility(t) {
50
+ switch (t.visible === !1 && this.view.closePopup(), t.id) {
51
+ case "district":
52
+ this.districtRenderer.setVisible(t.visible);
53
+ break;
54
+ case "subDistrict":
55
+ this.subDistrictRenderer.setVisible(t.visible);
56
+ break;
57
+ case "signal":
58
+ this.signalRenderer.setPointVisible(t.visible);
59
+ break;
60
+ case "signalCluster":
61
+ this.signalRenderer.setClusterVisible(t.visible);
62
+ break;
63
+ case "shanghai_district":
64
+ this.detachmentLayer.visible = t.visible;
65
+ break;
66
+ }
67
+ return { status: 0, message: "ok" };
68
+ }
69
+ /**
70
+ * 定位区控、子区、信号机
71
+ * @param params
72
+ * @returns
73
+ */
74
+ async locateSignalControlArea(t) {
75
+ switch (t.type) {
76
+ case "district":
77
+ return await this.districtRenderer.locateDistrict(t.id);
78
+ case "subDistrict":
79
+ return await this.subDistrictRenderer.locateSubDistrict(t.id);
80
+ case "signal":
81
+ return await this.signalRenderer.locateSignal(t.id);
82
+ default:
83
+ return { status: 1, message: "未知类型" };
84
+ }
85
+ }
86
+ /**
87
+ * 高亮指定的区控、子区、信号机,其他隐藏
88
+ * @param params
89
+ * @returns
90
+ */
91
+ async highlightSignalControlArea(t) {
92
+ switch (this.view.closePopup(), t.type) {
93
+ case "district":
94
+ return await this.districtRenderer.highlightDistrict(t.id) ? (this.subDistrictRenderer.filter("district", t.id), this.signalRenderer.filter("district", t.id), { status: 0, message: "ok" }) : { status: 1, message: "未找到区控" };
95
+ case "subDistrict": {
96
+ const { count: e, parentId: s } = await this.subDistrictRenderer.highlightSubDistrict(t.id);
97
+ return e > 0 ? (this.districtRenderer.filter(s), this.signalRenderer.filter("subDistrict", t.id), { status: 0, message: "ok" }) : { status: 1, message: "未找到子区" };
98
+ }
99
+ case "signal": {
100
+ const { districtId: e, subDistrictId: s, count: r } = await this.signalRenderer.highlightSignal(t.id);
101
+ return r > 0 ? (this.districtRenderer.filter(e), this.subDistrictRenderer.filter("subDistrict", s), await this.view.goTo(
102
+ { target: this.signalGraphics, scale: t.scale || 1e3 },
103
+ {
104
+ duration: this.hasGpu ? 1e3 : 0
105
+ }
106
+ ), { status: 0, message: "ok" }) : { status: 1, message: "未找到信号机" };
107
+ }
108
+ default:
109
+ return { status: 1, message: "未知类型" };
110
+ }
111
+ }
112
+ /**
113
+ * 重置高亮,恢复全图视角
114
+ * @returns
115
+ */
116
+ async resetHighlight() {
117
+ return this.districtRenderer.resetFilter(), this.subDistrictRenderer.resetFilter(), this.signalRenderer.resetFilter(), { status: 0, message: "ok" };
118
+ }
119
+ /**
120
+ * 生成区控、子区和信号机graphic
121
+ * @param districtController
122
+ * @param isDistrict 是否是区控
123
+ * @returns
124
+ */
125
+ generateGraphic(t, e, s) {
126
+ const r = t.getAllSignalCoordinates();
127
+ let a = null;
128
+ if (r.length >= 2)
129
+ if (r.length === 2)
130
+ a = c.lineString(r);
131
+ else {
132
+ if (e) {
133
+ const i = c.featureCollection(
134
+ r.map((o) => c.point(o))
135
+ );
136
+ a = w(i);
137
+ } else {
138
+ const i = R(r, 0.5);
139
+ i.length >= 4 && (a = c.polygon([i]));
140
+ }
141
+ a || (a = c.lineString(r));
142
+ }
143
+ else if (r.length === 1)
144
+ a = c.point(r[0]);
145
+ else
146
+ return;
147
+ const n = D(
148
+ a.geometry,
149
+ // 区控面积更大,需要更大的缓冲半径
150
+ e ? 200 : 30,
151
+ {
152
+ units: "meters"
153
+ }
154
+ ), l = new u({
155
+ geometry: {
156
+ type: "polyline",
157
+ paths: n.geometry.coordinates
158
+ },
159
+ attributes: {
160
+ ObjectID: e ? this.districtControllerOid++ : this.subDistrictControllerOid++,
161
+ id: t.id,
162
+ name: t.name,
163
+ subDistrictCount: t.subDistrictCount,
164
+ signalCount: t.signalCount,
165
+ parentId: t.parentId,
166
+ parentName: t.parentName,
167
+ selected: s,
168
+ type: e ? "district" : "subDistrict"
169
+ }
170
+ });
171
+ e ? this.districtGraphics.push(l) : this.subDistrictGraphics.push(l);
172
+ for (const i of t.subDistricts)
173
+ this.generateGraphic(i, !1, s);
174
+ t.signals.forEach((i) => {
175
+ const o = new u({
176
+ geometry: {
177
+ type: "point",
178
+ x: i.longitude,
179
+ y: i.latitude
180
+ },
181
+ attributes: {
182
+ ObjectID: this.signalOid++,
183
+ id: i.id,
184
+ name: i.name,
185
+ signalId: i.signalId,
186
+ nodeId: i.nodeId,
187
+ isKey: i.isKey,
188
+ districtId: e ? t.id : t.parentId,
189
+ districtName: e ? t.name : t.parentName,
190
+ subDistrictId: e ? "" : t.id,
191
+ subDistrictName: e ? "" : t.name,
192
+ type: "signal",
193
+ selected: !0
194
+ }
195
+ });
196
+ this.signalGraphics.push(o);
197
+ });
198
+ }
199
+ // private async viewHitTest(event: __esri.ViewClickEvent) {
200
+ // // 捕捉点击事件
201
+ // const response = await this.view.hitTest(event, {
202
+ // include: [
203
+ // // this.districtControllerSolidLayer,
204
+ // this.subDistrictControllerLayer,
205
+ // this.signalMarkerLayer,
206
+ // this.signalPictureLayer,
207
+ // this.signalClusterLayer
208
+ // ]
209
+ // });
210
+ // const graphicHits = response.results?.filter(
211
+ // (hitResult) => hitResult.type === 'graphic'
212
+ // );
213
+ // if (graphicHits.length === 0) {
214
+ // return;
215
+ // }
216
+ // const hitGraphic = (graphicHits[0] as __esri.GraphicHit).graphic;
217
+ // let centerPoint: __esri.Point | null = null;
218
+ // if (hitGraphic.geometry.type === 'point') {
219
+ // centerPoint = hitGraphic.geometry as __esri.Point;
220
+ // } else if (hitGraphic.geometry.type === 'polyline') {
221
+ // centerPoint = hitGraphic.geometry.extent.center;
222
+ // } else if (hitGraphic.geometry.type === 'polygon') {
223
+ // centerPoint = (hitGraphic.geometry as __esri.Polygon).centroid;
224
+ // }
225
+ // if (centerPoint !== null)
226
+ // await this.view.goTo(centerPoint, { duration: 1000 });
227
+ // // 未选中的同级graphic置灰
228
+ // const clickedType = hitGraphic.getAttribute('type');
229
+ // const clickedId = hitGraphic.getAttribute('id');
230
+ // switch (clickedType) {
231
+ // case 'district': {
232
+ // let result = await this.districtControllerSolidLayer.queryFeatures();
233
+ // result.features.forEach((feature) => {
234
+ // feature.attributes.selected = feature.attributes.id === clickedId;
235
+ // });
236
+ // await this.districtControllerSolidLayer.applyEdits({
237
+ // updateFeatures: result.features
238
+ // });
239
+ // result = await this.districtControllerDashLayer.queryFeatures();
240
+ // result.features.forEach((feature) => {
241
+ // feature.attributes.selected = feature.attributes.id === clickedId;
242
+ // });
243
+ // await this.districtControllerDashLayer.applyEdits({
244
+ // updateFeatures: result.features
245
+ // });
246
+ // break;
247
+ // }
248
+ // case 'subDistrict': {
249
+ // let result = await this.subDistrictControllerLayer.queryFeatures();
250
+ // result.features.forEach((feature) => {
251
+ // feature.attributes.selected = feature.attributes.id === clickedId;
252
+ // });
253
+ // await this.subDistrictControllerLayer.applyEdits({
254
+ // updateFeatures: result.features
255
+ // });
256
+ // // 其他子区的信号机置灰
257
+ // result = await this.signalMarkerLayer.queryFeatures();
258
+ // result.features.forEach((feature) => {
259
+ // feature.attributes.selected =
260
+ // feature.attributes.subDistrictId === clickedId;
261
+ // });
262
+ // let editResult = await this.signalMarkerLayer.applyEdits({
263
+ // updateFeatures: result.features
264
+ // });
265
+ // result = await this.signalPictureLayer.queryFeatures();
266
+ // result.features.forEach((feature) => {
267
+ // feature.attributes.selected =
268
+ // feature.attributes.subDistrictId === clickedId;
269
+ // });
270
+ // editResult = await this.signalPictureLayer.applyEdits({
271
+ // updateFeatures: result.features
272
+ // });
273
+ // break;
274
+ // }
275
+ // }
276
+ // reactiveUtils.when(
277
+ // () => this.view.popup.visible === false,
278
+ // async () => {
279
+ // await this.resetSelectedSymbol(clickedType);
280
+ // },
281
+ // {
282
+ // once: true
283
+ // }
284
+ // );
285
+ // }
286
+ /**
287
+ * 重置所有graphic的置灰状态
288
+ */
289
+ // private async resetSelectedSymbol(type: string) {
290
+ // switch (type) {
291
+ // case 'district': {
292
+ // let result = await this.districtControllerSolidLayer.queryFeatures();
293
+ // result.features.forEach((feature) => {
294
+ // feature.attributes.selected = true;
295
+ // });
296
+ // await this.districtControllerSolidLayer.applyEdits({
297
+ // updateFeatures: result.features
298
+ // });
299
+ // result = await this.districtControllerDashLayer.queryFeatures();
300
+ // result.features.forEach((feature) => {
301
+ // feature.attributes.selected = true;
302
+ // });
303
+ // await this.districtControllerDashLayer.applyEdits({
304
+ // updateFeatures: result.features
305
+ // });
306
+ // break;
307
+ // }
308
+ // case 'subDistrict': {
309
+ // let result = await this.subDistrictControllerLayer.queryFeatures();
310
+ // result.features.forEach((feature) => {
311
+ // feature.attributes.selected = true;
312
+ // });
313
+ // await this.subDistrictControllerLayer.applyEdits({
314
+ // updateFeatures: result.features
315
+ // });
316
+ // result = await this.signalMarkerLayer.queryFeatures();
317
+ // result.features.forEach((feature) => {
318
+ // feature.attributes.selected = true;
319
+ // });
320
+ // await this.signalMarkerLayer.applyEdits({
321
+ // updateFeatures: result.features
322
+ // });
323
+ // result = await this.signalPictureLayer.queryFeatures();
324
+ // result.features.forEach((feature) => {
325
+ // feature.attributes.selected = true;
326
+ // });
327
+ // await this.signalPictureLayer.applyEdits({
328
+ // updateFeatures: result.features
329
+ // });
330
+ // break;
331
+ // }
332
+ // }
333
+ // }
334
+ /**
335
+ * 加载支队图层
336
+ * 现场环境用url创建FeatureLayer有各种问题,
337
+ * 改为图层导出为json,用json创建Graphic,再将Graphic添加到FeatureLayer
338
+ */
339
+ async loadDetachmentLayer() {
340
+ const t = this.mapConfig.baseLayers;
341
+ if (!t)
342
+ return;
343
+ const e = t.find(
344
+ (s) => s.options.id === "shanghai_district"
345
+ );
346
+ if (e)
347
+ try {
348
+ const r = await (await fetch(
349
+ "/GisViewerAssets/ShangHai/Layers/district.json"
350
+ )).json(), a = [], { renderer: n, labelingInfo: l } = e.options;
351
+ r.features.forEach((i) => {
352
+ const o = i.attributes.ZD_NAME;
353
+ if (o !== "高架支队") {
354
+ let d = new f({
355
+ rings: i.geometry.rings
356
+ });
357
+ d = m(d);
358
+ const h = new u({
359
+ geometry: d,
360
+ attributes: i.attributes
361
+ });
362
+ if (n) {
363
+ if (n.type === "simple")
364
+ h.symbol = n.symbol;
365
+ else if (n.type === "unique-value") {
366
+ const g = h.getAttribute("OBJECTID"), b = n.uniqueValueInfos.find(
367
+ (p) => p.value == g
368
+ );
369
+ h.symbol = b ? b.symbol : n.defaultSymbol;
370
+ }
371
+ } else
372
+ h.symbol = {
373
+ type: "simple-fill",
374
+ color: [227, 237, 255, 0.4],
375
+ outline: {
376
+ color: [255, 195, 153],
377
+ width: 2
378
+ }
379
+ };
380
+ if (a.push(h), l && o !== "边防港航支队" && o !== "机场支队") {
381
+ const g = new u({
382
+ geometry: d.centroid,
383
+ symbol: { ...l.symbol, text: o }
384
+ });
385
+ a.push(g);
386
+ }
387
+ }
388
+ }), this.detachmentLayer.addMany(a), this.detachmentLayerLoaded = !0;
389
+ } catch (s) {
390
+ console.error("加载支队图层失败:", s);
391
+ return;
392
+ }
393
+ }
394
+ }
395
+ export {
396
+ T as default
397
+ };
@@ -0,0 +1,22 @@
1
+ import { IResult } from '../../../types';
2
+ import DistrictController from './district-controller';
3
+ export default class CrossRenderer {
4
+ private view;
5
+ private hasGpu;
6
+ private signalMarkerLayer;
7
+ private signalPictureLayer;
8
+ private signalClusterLayer;
9
+ constructor(view: __esri.MapView | __esri.SceneView, hasGpu: boolean);
10
+ showSignals(controllers: DistrictController[]): Promise<void>;
11
+ clearSignals(): Promise<void>;
12
+ setPointVisible(visible: boolean): Promise<void>;
13
+ setClusterVisible(visible: boolean): void;
14
+ locateSignal(id: string): Promise<IResult>;
15
+ highlightSignal(id: string): Promise<{
16
+ districtId: string;
17
+ subDistrictId: string;
18
+ count: number;
19
+ }>;
20
+ filter(type: string, id: string): void;
21
+ resetFilter(): void;
22
+ }
@@ -0,0 +1,124 @@
1
+ import d from "@arcgis/core/Graphic";
2
+ import u from "@arcgis/core/layers/FeatureLayer";
3
+ import { signalMarkerLayerOptions as y, signalPictureLayerOptions as c, signalClusterLayerOptions as o } from "./layer-symbol.mjs";
4
+ class f {
5
+ constructor(e, a) {
6
+ this.view = e, this.hasGpu = a, this.signalMarkerLayer = new u(
7
+ y
8
+ ), this.signalMarkerLayer.spatialReference = e.spatialReference, this.signalMarkerLayer.popupEnabled = !0, this.signalPictureLayer = new u(
9
+ c
10
+ ), this.signalPictureLayer.spatialReference = e.spatialReference, this.signalPictureLayer.popupEnabled = !0, this.signalClusterLayer = new u(
11
+ o
12
+ ), this.signalClusterLayer.spatialReference = e.spatialReference, this.signalClusterLayer.popupEnabled = !0, this.view.map.addMany([
13
+ this.signalMarkerLayer,
14
+ this.signalPictureLayer,
15
+ this.signalClusterLayer
16
+ ]);
17
+ }
18
+ async showSignals(e) {
19
+ await this.clearSignals();
20
+ let a = 0;
21
+ const s = [];
22
+ e.forEach((r) => {
23
+ r.signals.forEach((i) => {
24
+ const t = new d({
25
+ geometry: {
26
+ type: "point",
27
+ longitude: i.longitude,
28
+ latitude: i.latitude
29
+ },
30
+ attributes: {
31
+ ObjectID: a++,
32
+ id: i.id,
33
+ name: i.name,
34
+ signalId: i.signalId,
35
+ nodeId: i.nodeId || i.id,
36
+ districtId: r.id,
37
+ districtName: r.name,
38
+ subDistrictId: "",
39
+ subDistrictName: "",
40
+ isKey: i.isKey,
41
+ type: "signal",
42
+ selected: !0
43
+ }
44
+ });
45
+ s.push(t);
46
+ }), r.subDistricts.forEach((i) => {
47
+ i.signals.forEach((t) => {
48
+ const n = new d({
49
+ geometry: {
50
+ type: "point",
51
+ longitude: t.longitude,
52
+ latitude: t.latitude
53
+ },
54
+ attributes: {
55
+ ObjectID: a++,
56
+ id: t.id,
57
+ name: t.name,
58
+ signalId: t.signalId,
59
+ nodeId: t.nodeId || t.id,
60
+ districtId: r.id,
61
+ districtName: r.name,
62
+ subDistrictId: i.id,
63
+ subDistrictName: i.name,
64
+ isKey: t.isKey,
65
+ type: "signal",
66
+ selected: !0
67
+ }
68
+ });
69
+ s.push(n);
70
+ });
71
+ });
72
+ }), await this.signalMarkerLayer.applyEdits({
73
+ addFeatures: s
74
+ }), await this.signalPictureLayer.applyEdits({
75
+ addFeatures: s
76
+ }), await this.signalClusterLayer.applyEdits({
77
+ addFeatures: s
78
+ });
79
+ }
80
+ async clearSignals() {
81
+ let e = await this.signalMarkerLayer.queryFeatures();
82
+ await this.signalMarkerLayer.applyEdits({
83
+ deleteFeatures: e.features
84
+ }), this.signalMarkerLayer.definitionExpression = "1=1", e = await this.signalPictureLayer.queryFeatures(), await this.signalPictureLayer.applyEdits({
85
+ deleteFeatures: e.features
86
+ }), this.signalPictureLayer.definitionExpression = "1=1", e = await this.signalClusterLayer.queryFeatures(), await this.signalClusterLayer.applyEdits({
87
+ deleteFeatures: e.features
88
+ }), this.signalClusterLayer.definitionExpression = "1=1";
89
+ }
90
+ async setPointVisible(e) {
91
+ this.signalMarkerLayer.visible = e, this.signalPictureLayer.visible = e;
92
+ }
93
+ setClusterVisible(e) {
94
+ this.signalClusterLayer.visible = e;
95
+ }
96
+ async locateSignal(e) {
97
+ return { status: 0, message: "ok" };
98
+ }
99
+ async highlightSignal(e) {
100
+ let a = "", s = "";
101
+ const r = this.signalMarkerLayer.definitionExpression;
102
+ this.signalMarkerLayer.definitionExpression = `signalId = '${e}'`;
103
+ const i = await this.signalMarkerLayer.queryFeatures(), t = i.features.length;
104
+ if (t > 0) {
105
+ const n = i.features[0].attributes.districtId || "", l = i.features[0].attributes.subDistrictId || "";
106
+ return await this.view.goTo(i.features, {
107
+ duration: this.hasGpu ? 1e3 : 0
108
+ }), { districtId: n, subDistrictId: l, count: t };
109
+ } else
110
+ this.signalMarkerLayer.definitionExpression = r;
111
+ return { districtId: a, subDistrictId: s, count: t };
112
+ }
113
+ filter(e, a) {
114
+ const s = `${e === "district" ? "districtId" : "subDistrictId"} = '${a}'`;
115
+ this.signalClusterLayer.definitionExpression = s, this.signalMarkerLayer.definitionExpression = s, this.signalPictureLayer.definitionExpression = s;
116
+ }
117
+ resetFilter() {
118
+ const e = "1=1";
119
+ this.signalClusterLayer.definitionExpression = e, this.signalMarkerLayer.definitionExpression = e, this.signalPictureLayer.definitionExpression = e;
120
+ }
121
+ }
122
+ export {
123
+ f as default
124
+ };
@@ -0,0 +1,27 @@
1
+ import { IResult } from '../../../types';
2
+ import DistrictController from './district-controller';
3
+ export default class SubDistrictRenderer {
4
+ private view;
5
+ private hasGpu;
6
+ private subDistrictPointLayer;
7
+ constructor(view: __esri.MapView | __esri.SceneView, hasGpu: boolean);
8
+ showSubDistricts(controllers: DistrictController[]): Promise<void>;
9
+ clearSubDistricts(): Promise<void>;
10
+ setVisible(visible: boolean): void;
11
+ /**
12
+ * 定位子区
13
+ * @param id 子区ID
14
+ */
15
+ locateSubDistrict(id: string): Promise<IResult>;
16
+ /**
17
+ * 高亮子区, 其他子区隐藏
18
+ * @param id 子区ID
19
+ * @return 返回高亮子区的数量以及区控id
20
+ */
21
+ highlightSubDistrict(id: string): Promise<{
22
+ count: number;
23
+ parentId: string;
24
+ }>;
25
+ filter(type: string, id: string): void;
26
+ resetFilter(): void;
27
+ }