gisviewer-vue3-arcgis 1.0.267 → 1.0.269

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.
@@ -5,5 +5,11 @@ export default class PoliceJurisdiction {
5
5
  private maskLayer;
6
6
  constructor(view: __esri.MapView | __esri.SceneView);
7
7
  showJurisdiction(params: IShowJurisdictionParams): Promise<IResult>;
8
+ /**
9
+ * 显示支队辖区
10
+ * @param zdCode
11
+ */
12
+ private showZD;
13
+ private showDD;
8
14
  clearJurisdiction(): void;
9
15
  }
@@ -1,94 +1,66 @@
1
- import { Polygon as L } from "@arcgis/core/geometry";
2
- import * as l from "@arcgis/core/geometry/geometryEngine";
3
- import i from "@arcgis/core/Graphic";
4
- import S from "@arcgis/core/layers/GraphicsLayer";
5
- import _ from "axios";
6
- import { toRaw as b } from "vue";
7
- import k from "../stores/index.mjs";
8
- class M {
9
- constructor(e) {
10
- this.view = e, this.maskLayer = new S({
1
+ import { Polygon as h } from "@arcgis/core/geometry";
2
+ import * as n from "@arcgis/core/geometry/geometryEngine.js";
3
+ import m from "@arcgis/core/Graphic";
4
+ import k from "@arcgis/core/layers/GraphicsLayer";
5
+ import g from "axios";
6
+ import { toRaw as L } from "vue";
7
+ import E from "../stores/index.mjs";
8
+ import f from "./common-utils.mjs";
9
+ class R {
10
+ constructor(o) {
11
+ this.view = o, this.maskLayer = new k({
11
12
  id: "police-jurisdiction"
12
13
  }), this.view.map.add(this.maskLayer);
13
- const a = k.useAppDataStore, n = b(a.mapConfig);
14
- this.geoServer = n.geoServer;
14
+ const t = E.useAppDataStore, r = L(t.mapConfig);
15
+ this.geoServer = r.geoServer;
15
16
  }
16
- async showJurisdiction(e) {
17
- if (!this.geoServer)
18
- return { status: -1, message: "未配置GeoServer" };
19
- const a = e.type.toLowerCase() === "zd" ? "VIEW_SH_ZD" : "VW_DWD_GEO_SH_DD", n = e.type.toLowerCase() === "zd" ? "ZD_CODE" : "DD_CODE", y = e.type.toLowerCase() === "zd" ? "ZD_NAME" : "DD_NAME", h = e.ids.join(","), s = await _.get(`${this.geoServer}/zd_edpass/wms`, {
17
+ async showJurisdiction(o) {
18
+ return this.geoServer ? o.type.toLowerCase() === "zd" ? await this.showZD(o.id) : o.type.toLowerCase() === "dd" ? await this.showDD(o.id) : { status: 0, message: "ok" } : { status: -1, message: "未配置GeoServer" };
19
+ }
20
+ /**
21
+ * 显示支队辖区
22
+ * @param zdCode
23
+ */
24
+ async showZD(o) {
25
+ let t = await g.get(`${this.geoServer}/zd_edpass/wms`, {
20
26
  params: {
21
27
  service: "WFS",
22
28
  version: "1.1.0",
23
29
  request: "GetFeature",
24
- typename: `zd_edpass:${a}`,
30
+ typename: "zd_edpass:VIEW_SH_ZD",
25
31
  outputFormat: "application/json",
26
- CQL_FILTER: `${n} IN (${h})`
32
+ CQL_FILTER: `ZD_CODE = ${o}`
27
33
  }
28
34
  });
29
- if (s.status !== 200)
30
- return { status: -1, message: s.status + " " + s.statusText };
31
- const { features: c } = s.data;
32
- if (!c || c.length === 0)
35
+ if (t.status !== 200)
36
+ return { status: -1, message: t.status + " " + t.statusText };
37
+ const { features: r } = t.data;
38
+ if (!r || r.length === 0)
33
39
  return { status: -1, message: "未查询到数据" };
34
40
  this.maskLayer.removeAll();
35
- const t = [], p = [], d = [];
36
- c.forEach((o) => {
37
- const w = o.geometry.coordinates, r = new L({
38
- rings: w[0]
39
- });
40
- t.push(r);
41
- const v = new i({
42
- geometry: r,
43
- symbol: {
44
- type: "simple-line",
45
- style: "dash",
46
- color: [111, 100, 255],
47
- width: 4
48
- }
49
- }), D = new i({
50
- geometry: r,
51
- symbol: {
52
- type: "simple-line",
53
- style: "solid",
54
- color: [111, 100, 255, 0.6],
55
- width: 4
56
- }
57
- });
58
- p.push(v, D);
59
- const G = new i({
60
- geometry: r.centroid,
61
- symbol: {
62
- type: "text",
63
- color: [0, 0, 0],
64
- haloColor: [255, 255, 255],
65
- haloSize: "1px",
66
- text: o.properties[y],
67
- font: {
68
- size: "14px",
69
- weight: "bold",
70
- family: "msyh"
71
- }
72
- }
41
+ const l = r[0].geometry.coordinates, s = [];
42
+ l.forEach((e) => {
43
+ const i = new h({
44
+ rings: e
73
45
  });
74
- d.push(G);
46
+ s.push(i);
75
47
  });
76
- const u = t[0].centroid, f = l.geodesicBuffer(
77
- u,
48
+ const p = s[0].centroid, u = n.geodesicBuffer(
49
+ p,
78
50
  100,
79
51
  "kilometers"
80
52
  );
81
- let m = l.difference(
82
- f,
83
- t[0]
53
+ let a = n.difference(
54
+ u,
55
+ s[0]
84
56
  );
85
- for (let o = 1; o < t.length; o++)
86
- m = l.difference(
87
- m,
88
- t[o]
57
+ for (let e = 1; e < s.length; e++)
58
+ a = n.difference(
59
+ a,
60
+ s[e]
89
61
  );
90
- const g = new i({
91
- geometry: m,
62
+ const y = new m({
63
+ geometry: a,
92
64
  symbol: {
93
65
  type: "simple-fill",
94
66
  color: [100, 100, 100, 0.8],
@@ -98,12 +70,133 @@ class M {
98
70
  },
99
71
  attributes: { type: "mask" }
100
72
  });
101
- return this.maskLayer.add(g), this.maskLayer.addMany(p), this.maskLayer.addMany(d), await this.view.goTo(t), { status: 0, message: "ok" };
73
+ this.maskLayer.add(y);
74
+ const d = s.map((e) => new m({
75
+ geometry: e,
76
+ symbol: {
77
+ type: "simple-line",
78
+ style: "solid",
79
+ color: [240, 156, 69],
80
+ width: 2
81
+ }
82
+ }));
83
+ if (this.maskLayer.addMany(d), await f.viewGoto(this.view, d), t = await g.get(`${this.geoServer}/zd_edpass/wms`, {
84
+ params: {
85
+ service: "WFS",
86
+ version: "1.1.0",
87
+ request: "GetFeature",
88
+ typename: "zd_edpass:VW_DWD_GEO_SH_DD",
89
+ outputFormat: "application/json",
90
+ CQL_FILTER: `ZD_CODE = ${o}`
91
+ }
92
+ }), t.status === 200) {
93
+ const { features: e } = t.data;
94
+ if (e && e.length > 0) {
95
+ const i = [];
96
+ e.forEach((c) => {
97
+ c.geometry.coordinates.forEach((_) => {
98
+ const v = new h({
99
+ rings: _
100
+ }), G = new m({
101
+ geometry: v,
102
+ symbol: {
103
+ type: "simple-line",
104
+ style: "dash",
105
+ color: [240, 156, 69],
106
+ width: 1
107
+ }
108
+ });
109
+ i.push(G);
110
+ });
111
+ const w = c.properties.DD_NAME, D = new m({
112
+ geometry: {
113
+ type: "point",
114
+ longitude: c.properties.CENTER_X,
115
+ latitude: c.properties.CENTER_Y
116
+ },
117
+ symbol: {
118
+ type: "text",
119
+ color: [240, 156, 69],
120
+ haloColor: [255, 255, 255],
121
+ haloSize: "2px",
122
+ text: w,
123
+ font: {
124
+ size: "14px",
125
+ weight: "bold",
126
+ family: "msyh"
127
+ }
128
+ }
129
+ });
130
+ i.push(D);
131
+ }), this.maskLayer.addMany(i);
132
+ }
133
+ }
134
+ return { status: 0, message: "ok" };
135
+ }
136
+ async showDD(o) {
137
+ this.maskLayer.removeAll();
138
+ const t = await g.get(`${this.geoServer}/zd_edpass/wms`, {
139
+ params: {
140
+ service: "WFS",
141
+ version: "1.1.0",
142
+ request: "GetFeature",
143
+ typename: "zd_edpass:VW_DWD_GEO_SH_DD",
144
+ outputFormat: "application/json",
145
+ CQL_FILTER: `DD_CODE = ${o}`
146
+ }
147
+ });
148
+ if (console.log(t), t.status !== 200)
149
+ return { status: -1, message: t.status + " " + t.statusText };
150
+ const { features: r } = t.data;
151
+ if (!r || r.length === 0)
152
+ return { status: -1, message: "未查询到数据" };
153
+ const l = r[0].geometry.coordinates, s = [];
154
+ l.forEach((e) => {
155
+ const i = new h({
156
+ rings: e
157
+ });
158
+ s.push(i);
159
+ });
160
+ const p = s[0].centroid, u = n.geodesicBuffer(
161
+ p,
162
+ 100,
163
+ "kilometers"
164
+ );
165
+ let a = n.difference(
166
+ u,
167
+ s[0]
168
+ );
169
+ for (let e = 1; e < s.length; e++)
170
+ a = n.difference(
171
+ a,
172
+ s[e]
173
+ );
174
+ const y = new m({
175
+ geometry: a,
176
+ symbol: {
177
+ type: "simple-fill",
178
+ color: [100, 100, 100, 0.8],
179
+ outline: {
180
+ width: 0
181
+ }
182
+ }
183
+ });
184
+ this.maskLayer.add(y);
185
+ const d = s.map((e) => new m({
186
+ geometry: e,
187
+ symbol: {
188
+ type: "simple-line",
189
+ style: "dash",
190
+ color: [240, 156, 69],
191
+ width: 1
192
+ }
193
+ }));
194
+ return this.maskLayer.addMany(d), await f.viewGoto(this.view, d), { status: 0, message: "ok" };
102
195
  }
103
196
  clearJurisdiction() {
104
197
  this.maskLayer.removeAll();
105
198
  }
106
199
  }
107
200
  export {
108
- M as default
201
+ R as default
109
202
  };
@@ -6,10 +6,20 @@ export default class SignalCrossController {
6
6
  private view;
7
7
  private crossLayer;
8
8
  private readonly symbolScale;
9
+ private oldScale;
9
10
  private scaleWatchHandle;
10
11
  private showName;
11
12
  private showStyle;
13
+ private readonly clusterRadius;
14
+ private readonly minClusterPoints;
15
+ private readonly maxClusterSymbolSize;
16
+ private readonly minClusterSymbolSize;
17
+ /** 需要进行聚合的点位,一般为当前屏幕范围内的点位 */
18
+ private clusteredLocations;
19
+ /** 所有路口点位 */
20
+ private locations;
12
21
  constructor(view: __esri.MapView | __esri.SceneView);
22
+ private locationToScreen;
13
23
  /**
14
24
  * 显示信控路口
15
25
  * @param params
@@ -17,6 +27,36 @@ export default class SignalCrossController {
17
27
  */
18
28
  showSignalCross(params: IShowSignalCrossParams): IResult;
19
29
  clearSignalCross(): void;
30
+ /**
31
+ * 按照像素距离聚类
32
+ * @param locations
33
+ * @param eps
34
+ * @param minPoints
35
+ * @returns
36
+ */
37
+ private doPixelCluster;
38
+ /**
39
+ * 获取邻居点
40
+ * @param locations
41
+ * @param index
42
+ * @param eps
43
+ * @returns
44
+ */
45
+ private getNeighbors;
46
+ /**
47
+ * 两点间的像素距离
48
+ * @param point1
49
+ * @param point2
50
+ * @returns
51
+ */
52
+ private getDistance;
53
+ /**
54
+ * 从聚类结果中创建聚类对象
55
+ * @param locations
56
+ * @returns
57
+ */
58
+ private createClusters;
59
+ private showClusterResult;
20
60
  private getBrandLabel;
21
61
  private getOnlineLabel;
22
62
  private getMalfunctionLabel;
@@ -1,76 +1,71 @@
1
- import o from "@arcgis/core/Graphic";
2
- import n from "@arcgis/core/layers/GraphicsLayer";
3
- class b {
1
+ import { Point as u } from "@arcgis/core/geometry";
2
+ import y from "@arcgis/core/Graphic";
3
+ import d from "@arcgis/core/layers/GraphicsLayer";
4
+ class C {
4
5
  constructor(e) {
5
- this.symbolScale = 6e3, this.showName = "signalId", this.showStyle = "scatter", this.view = e, this.crossLayer = new n({
6
+ this.symbolScale = 6e3, this.oldScale = 0, this.showName = "signalId", this.showStyle = "scatter", this.clusterRadius = 120, this.minClusterPoints = 2, this.maxClusterSymbolSize = 50, this.minClusterSymbolSize = 25, this.clusteredLocations = [], this.locations = [], this.view = e, this.crossLayer = new d({
6
7
  id: "signal-control-cross-layer",
7
8
  title: "信控路口图层"
8
9
  }), this.view.map.add(this.crossLayer);
9
10
  }
11
+ locationToScreen() {
12
+ this.clusteredLocations = [], this.locations.forEach((e) => {
13
+ const t = this.view.toScreen(
14
+ new u({ x: e.x, y: e.y })
15
+ );
16
+ t.x > 0 && t.y > 0 && (e.properties.screenX = t.x, e.properties.screenY = t.y, e.visited = !1, e.clusterId = void 0, this.clusteredLocations.push(e));
17
+ });
18
+ }
10
19
  /**
11
20
  * 显示信控路口
12
21
  * @param params
13
22
  * @returns
14
23
  */
15
24
  showSignalCross(e) {
16
- if (this.crossLayer.removeAll(), this.showName = e.showName || "signalId", this.showStyle = e.style || "scatter", this.scaleWatchHandle || (this.scaleWatchHandle = this.view.watch("scale", (t, i) => {
17
- (t <= this.symbolScale && i > this.symbolScale || t > this.symbolScale && i <= this.symbolScale) && this.crossLayer.graphics.forEach((l) => {
18
- const s = l.attributes;
19
- l.symbol = this.getCrossSymbol(s);
20
- });
25
+ if (this.crossLayer.removeAll(), this.showName = e.showName || "signalId", this.showStyle = e.style || "scatter", this.scaleWatchHandle || (this.scaleWatchHandle = this.view.watch("stationary", () => {
26
+ if (this.showStyle === "scatter")
27
+ (this.oldScale < this.symbolScale && this.view.scale >= this.symbolScale || this.oldScale >= this.symbolScale && this.view.scale < this.symbolScale) && this.crossLayer.graphics.forEach((t) => {
28
+ t.symbol = this.getCrossSymbol(t.attributes);
29
+ }), this.oldScale = this.view.scale;
30
+ else {
31
+ this.locationToScreen();
32
+ const t = this.doPixelCluster(this.clusterRadius);
33
+ this.showClusterResult(t);
34
+ }
21
35
  })), this.showStyle === "scatter") {
22
36
  const t = e.points.map((i) => {
23
- const l = this.getCrossSymbol(i), s = this.getBrandLabel(i.brand), a = this.getOnlineLabel(i.isOnline), r = this.getMalfunctionLabel(
37
+ const s = this.getCrossSymbol(i), r = this.getBrandLabel(i.brand), o = this.getOnlineLabel(i.isOnline), n = this.getMalfunctionLabel(
24
38
  i.isMalfunction
25
39
  );
26
- return new o({
40
+ return new y({
27
41
  geometry: {
28
42
  type: "point",
29
43
  longitude: i.x,
30
44
  latitude: i.y
31
45
  },
32
- symbol: l,
46
+ symbol: s,
33
47
  attributes: {
34
48
  type: "signal-cross",
35
49
  id: i.crossId,
36
- brandLabel: s,
37
- isOnlineLabel: a,
38
- isMalfunctionLabel: r,
50
+ brandLabel: r,
51
+ isOnlineLabel: o,
52
+ isMalfunctionLabel: n,
39
53
  ...i
40
- },
41
- popupTemplate: {
42
- title: "{name}信号机",
43
- content: [
44
- {
45
- type: "fields",
46
- fieldInfos: [
47
- {
48
- fieldName: "signalId",
49
- label: "信号机编号"
50
- },
51
- {
52
- fieldName: "crossId",
53
- label: "路口编号"
54
- },
55
- {
56
- fieldName: "brandLabel",
57
- label: "品牌"
58
- },
59
- {
60
- fieldName: "isOnlineLabel",
61
- label: "是否在线"
62
- },
63
- {
64
- fieldName: "isMalfunctionLabel",
65
- label: "是否故障"
66
- }
67
- ]
68
- }
69
- ]
70
54
  }
71
55
  });
72
56
  });
73
57
  this.crossLayer.addMany(t);
58
+ } else {
59
+ this.locations = e.points.map((i) => ({
60
+ id: i.crossId,
61
+ x: i.x,
62
+ y: i.y,
63
+ visited: !1,
64
+ clusterId: void 0,
65
+ properties: i
66
+ })), this.locationToScreen();
67
+ const t = this.doPixelCluster(this.clusterRadius);
68
+ this.showClusterResult(t);
74
69
  }
75
70
  return { status: 0, message: "ok" };
76
71
  }
@@ -78,6 +73,215 @@ class b {
78
73
  var e;
79
74
  this.crossLayer.removeAll(), (e = this.scaleWatchHandle) == null || e.remove(), this.scaleWatchHandle = null;
80
75
  }
76
+ /**
77
+ * 按照像素距离聚类
78
+ * @param locations
79
+ * @param eps
80
+ * @param minPoints
81
+ * @returns
82
+ */
83
+ doPixelCluster(e) {
84
+ let t = 0;
85
+ for (let i = 0; i < this.clusteredLocations.length; i++) {
86
+ const s = this.clusteredLocations[i];
87
+ if (s.visited)
88
+ continue;
89
+ s.visited = !0;
90
+ const r = this.getNeighbors(s, e);
91
+ r.length < this.minClusterPoints ? s.clusterId = -1 : (r.forEach((o) => {
92
+ o.visited = !0, o.clusterId = t;
93
+ }), s.clusterId = t, t++);
94
+ }
95
+ return this.createClusters();
96
+ }
97
+ /**
98
+ * 获取邻居点
99
+ * @param locations
100
+ * @param index
101
+ * @param eps
102
+ * @returns
103
+ */
104
+ getNeighbors(e, t) {
105
+ return this.clusteredLocations.filter((i) => i.id === e.id || i.visited ? !1 : this.getDistance(e, i) <= t);
106
+ }
107
+ /**
108
+ * 两点间的像素距离
109
+ * @param point1
110
+ * @param point2
111
+ * @returns
112
+ */
113
+ getDistance(e, t) {
114
+ return Math.sqrt(
115
+ Math.pow(e.properties.screenX - t.properties.screenX, 2) + Math.pow(e.properties.screenY - t.properties.screenY, 2)
116
+ );
117
+ }
118
+ /**
119
+ * 从聚类结果中创建聚类对象
120
+ * @param locations
121
+ * @returns
122
+ */
123
+ createClusters() {
124
+ const e = {}, t = [];
125
+ for (const s of this.clusteredLocations)
126
+ s.clusterId === void 0 || s.clusterId === -1 ? t.push(s) : (e[s.clusterId] || (e[s.clusterId] = []), e[s.clusterId].push(s));
127
+ const i = Object.keys(e).map((s, r) => {
128
+ const o = e[Number(s)], n = o.length, l = o.reduce((c, h) => c + h.x, 0), a = o.reduce((c, h) => c + h.y, 0), m = l / n, p = a / n;
129
+ return {
130
+ id: Number(s),
131
+ items: o,
132
+ count: n,
133
+ center: {
134
+ x: m,
135
+ y: p
136
+ }
137
+ };
138
+ });
139
+ return t.length > 0 && i.push({
140
+ id: -1,
141
+ items: t,
142
+ count: t.length,
143
+ center: null
144
+ }), i;
145
+ }
146
+ showClusterResult(e) {
147
+ this.crossLayer.removeAll();
148
+ let t = Number.MIN_VALUE, i = Number.MAX_VALUE;
149
+ e.forEach((s) => {
150
+ s.count > 1 && (i = Math.min(i, s.count), t = Math.max(t, s.count));
151
+ }), e.forEach((s) => {
152
+ if (s.id !== -1) {
153
+ let r = i === t ? (this.maxClusterSymbolSize + this.minClusterSymbolSize) / 2 : this.minClusterSymbolSize + (s.count - i) / (t - i) * (this.maxClusterSymbolSize - this.minClusterSymbolSize);
154
+ r *= 0.75;
155
+ const l = (s.count.toString().length * 8 + 6) / 2, a = new y({
156
+ geometry: new u({ x: s.center.x, y: s.center.y }),
157
+ attributes: {
158
+ count: s.count
159
+ },
160
+ symbol: {
161
+ type: "cim",
162
+ data: {
163
+ type: "CIMSymbolReference",
164
+ primitiveOverrides: [
165
+ {
166
+ // 将textGraphic的TextString替换为graphic.attributes.name
167
+ type: "CIMPrimitiveOverride",
168
+ primitiveName: "textGraphic",
169
+ propertyName: "TextString",
170
+ valueExpressionInfo: {
171
+ type: "CIMExpressionInfo",
172
+ title: "Custom",
173
+ expression: "$feature.count",
174
+ returnType: "Default"
175
+ }
176
+ }
177
+ ],
178
+ symbol: {
179
+ type: "CIMPointSymbol",
180
+ symbolLayers: [
181
+ // 聚合数量
182
+ {
183
+ type: "CIMVectorMarker",
184
+ size: r,
185
+ colorLocked: !0,
186
+ anchorPointUnits: "Relative",
187
+ frame: { xmin: -16, ymin: -16, xmax: 16, ymax: 16 },
188
+ markerGraphics: [
189
+ // 数量文本框
190
+ {
191
+ type: "CIMMarkerGraphic",
192
+ geometry: {
193
+ rings: [
194
+ [
195
+ [-l, 40],
196
+ [l, 40],
197
+ [l, 20],
198
+ [-l, 20],
199
+ [-l, 40]
200
+ ]
201
+ ]
202
+ },
203
+ symbol: {
204
+ type: "CIMPolygonSymbol",
205
+ symbolLayers: [
206
+ {
207
+ type: "CIMSolidFill",
208
+ enable: !0,
209
+ color: [2, 72, 200, 255]
210
+ },
211
+ {
212
+ type: "CIMSolidStroke",
213
+ enable: !0,
214
+ width: 5,
215
+ color: [2, 72, 200, 128]
216
+ }
217
+ ]
218
+ }
219
+ },
220
+ // 数量文字
221
+ {
222
+ type: "CIMMarkerGraphic",
223
+ primitiveName: "textGraphic",
224
+ geometry: { x: 0, y: 0 },
225
+ symbol: {
226
+ type: "CIMTextSymbol",
227
+ height: 16,
228
+ horizontalAlignment: "Center",
229
+ offsetX: 0,
230
+ offsetY: 30,
231
+ symbol: {
232
+ type: "CIMPolygonSymbol",
233
+ symbolLayers: [
234
+ {
235
+ type: "CIMSolidFill",
236
+ enable: !0,
237
+ color: [255, 255, 255, 255]
238
+ }
239
+ ]
240
+ },
241
+ verticalAlignment: "Center"
242
+ },
243
+ textString: ""
244
+ }
245
+ ],
246
+ scaleSymbolsProportionally: !0,
247
+ respectFrame: !0
248
+ },
249
+ // 聚合图标
250
+ {
251
+ type: "CIMPictureMarker",
252
+ enable: !0,
253
+ anchorPoint: {
254
+ x: 0,
255
+ y: 0
256
+ },
257
+ anchorPointUnits: "Relative",
258
+ size: r,
259
+ rotateClockwise: !0,
260
+ textureFilter: "Picture",
261
+ url: "/GisViewerAssets/Images/cross/gis_xhj_blue.png"
262
+ }
263
+ ]
264
+ }
265
+ }
266
+ }
267
+ });
268
+ this.crossLayer.add(a);
269
+ } else
270
+ s.items.forEach((r) => {
271
+ const o = new y({
272
+ geometry: new u({ x: r.x, y: r.y }),
273
+ attributes: {
274
+ ...r,
275
+ ...r.properties,
276
+ type: "signal-cross",
277
+ id: r.id
278
+ },
279
+ symbol: this.getCrossSymbol(r.properties)
280
+ });
281
+ this.crossLayer.add(o);
282
+ });
283
+ });
284
+ }
81
285
  getBrandLabel(e) {
82
286
  const t = (e ?? "").toLowerCase();
83
287
  return t === "scats" ? "SCATS" : t === "gc" ? "国产" : e ?? "";
@@ -189,5 +393,5 @@ class b {
189
393
  }
190
394
  }
191
395
  export {
192
- b as default
396
+ C as default
193
397
  };
@@ -368,7 +368,7 @@ export interface IRoadLine {
368
368
  }
369
369
  export interface IShowJurisdictionParams {
370
370
  type: string;
371
- ids: string[];
371
+ id: string;
372
372
  }
373
373
  export interface IShowEdpassDeviceParams {
374
374
  deviceType: string;
@@ -5,5 +5,11 @@ export default class PoliceJurisdiction {
5
5
  private maskLayer;
6
6
  constructor(view: __esri.MapView | __esri.SceneView);
7
7
  showJurisdiction(params: IShowJurisdictionParams): Promise<IResult>;
8
+ /**
9
+ * 显示支队辖区
10
+ * @param zdCode
11
+ */
12
+ private showZD;
13
+ private showDD;
8
14
  clearJurisdiction(): void;
9
15
  }
@@ -1 +1 @@
1
- "use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const S=require("@arcgis/core/geometry"),G=require("@arcgis/core/geometry/geometryEngine"),c=require("@arcgis/core/Graphic"),k=require("@arcgis/core/layers/GraphicsLayer"),L=require("axios"),C=require("vue"),E=require("../stores/index.js");function O(s){const e=Object.create(null,{[Symbol.toStringTag]:{value:"Module"}});if(s){for(const t in s)if(t!=="default"){const o=Object.getOwnPropertyDescriptor(s,t);Object.defineProperty(e,t,o.get?o:{enumerable:!0,get:()=>s[t]})}}return e.default=s,Object.freeze(e)}const d=O(G);class j{constructor(e){this.view=e,this.maskLayer=new k({id:"police-jurisdiction"}),this.view.map.add(this.maskLayer);const t=E.default.useAppDataStore,o=C.toRaw(t.mapConfig);this.geoServer=o.geoServer}async showJurisdiction(e){if(!this.geoServer)return{status:-1,message:"未配置GeoServer"};const t=e.type.toLowerCase()==="zd"?"VIEW_SH_ZD":"VW_DWD_GEO_SH_DD",o=e.type.toLowerCase()==="zd"?"ZD_CODE":"DD_CODE",y=e.type.toLowerCase()==="zd"?"ZD_NAME":"DD_NAME",h=e.ids.join(","),a=await L.get(`${this.geoServer}/zd_edpass/wms`,{params:{service:"WFS",version:"1.1.0",request:"GetFeature",typename:`zd_edpass:${t}`,outputFormat:"application/json",CQL_FILTER:`${o} IN (${h})`}});if(a.status!==200)return{status:-1,message:a.status+" "+a.statusText};const{features:l}=a.data;if(!l||l.length===0)return{status:-1,message:"未查询到数据"};this.maskLayer.removeAll();const r=[],m=[],p=[];l.forEach(i=>{const b=i.geometry.coordinates,n=new S.Polygon({rings:b[0]});r.push(n);const v=new c({geometry:n,symbol:{type:"simple-line",style:"dash",color:[111,100,255],width:4}}),D=new c({geometry:n,symbol:{type:"simple-line",style:"solid",color:[111,100,255,.6],width:4}});m.push(v,D);const _=new c({geometry:n.centroid,symbol:{type:"text",color:[0,0,0],haloColor:[255,255,255],haloSize:"1px",text:i.properties[y],font:{size:"14px",weight:"bold",family:"msyh"}}});p.push(_)});const g=r[0].centroid,f=d.geodesicBuffer(g,100,"kilometers");let u=d.difference(f,r[0]);for(let i=1;i<r.length;i++)u=d.difference(u,r[i]);const w=new c({geometry:u,symbol:{type:"simple-fill",color:[100,100,100,.8],outline:{width:0}},attributes:{type:"mask"}});return this.maskLayer.add(w),this.maskLayer.addMany(m),this.maskLayer.addMany(p),await this.view.goTo(r),{status:0,message:"ok"}}clearJurisdiction(){this.maskLayer.removeAll()}}exports.default=j;
1
+ "use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const h=require("@arcgis/core/geometry"),E=require("@arcgis/core/geometry/geometryEngine.js"),c=require("@arcgis/core/Graphic"),L=require("@arcgis/core/layers/GraphicsLayer"),f=require("axios"),S=require("vue"),b=require("../stores/index.js"),w=require("./common-utils.js");function F(n){const s=Object.create(null,{[Symbol.toStringTag]:{value:"Module"}});if(n){for(const e in n)if(e!=="default"){const r=Object.getOwnPropertyDescriptor(n,e);Object.defineProperty(s,e,r.get?r:{enumerable:!0,get:()=>n[e]})}}return s.default=n,Object.freeze(s)}const d=F(E);class C{constructor(s){this.view=s,this.maskLayer=new L({id:"police-jurisdiction"}),this.view.map.add(this.maskLayer);const e=b.default.useAppDataStore,r=S.toRaw(e.mapConfig);this.geoServer=r.geoServer}async showJurisdiction(s){return this.geoServer?s.type.toLowerCase()==="zd"?await this.showZD(s.id):s.type.toLowerCase()==="dd"?await this.showDD(s.id):{status:0,message:"ok"}:{status:-1,message:"未配置GeoServer"}}async showZD(s){let e=await f.get(`${this.geoServer}/zd_edpass/wms`,{params:{service:"WFS",version:"1.1.0",request:"GetFeature",typename:"zd_edpass:VIEW_SH_ZD",outputFormat:"application/json",CQL_FILTER:`ZD_CODE = ${s}`}});if(e.status!==200)return{status:-1,message:e.status+" "+e.statusText};const{features:r}=e.data;if(!r||r.length===0)return{status:-1,message:"未查询到数据"};this.maskLayer.removeAll();const m=r[0].geometry.coordinates,o=[];m.forEach(t=>{const i=new h.Polygon({rings:t});o.push(i)});const p=o[0].centroid,y=d.geodesicBuffer(p,100,"kilometers");let a=d.difference(y,o[0]);for(let t=1;t<o.length;t++)a=d.difference(a,o[t]);const g=new c({geometry:a,symbol:{type:"simple-fill",color:[100,100,100,.8],outline:{width:0}},attributes:{type:"mask"}});this.maskLayer.add(g);const l=o.map(t=>new c({geometry:t,symbol:{type:"simple-line",style:"solid",color:[240,156,69],width:2}}));if(this.maskLayer.addMany(l),await w.default.viewGoto(this.view,l),e=await f.get(`${this.geoServer}/zd_edpass/wms`,{params:{service:"WFS",version:"1.1.0",request:"GetFeature",typename:"zd_edpass:VW_DWD_GEO_SH_DD",outputFormat:"application/json",CQL_FILTER:`ZD_CODE = ${s}`}}),e.status===200){const{features:t}=e.data;if(t&&t.length>0){const i=[];t.forEach(u=>{u.geometry.coordinates.forEach(D=>{const k=new h.Polygon({rings:D}),G=new c({geometry:k,symbol:{type:"simple-line",style:"dash",color:[240,156,69],width:1}});i.push(G)});const _=u.properties.DD_NAME,v=new c({geometry:{type:"point",longitude:u.properties.CENTER_X,latitude:u.properties.CENTER_Y},symbol:{type:"text",color:[240,156,69],haloColor:[255,255,255],haloSize:"2px",text:_,font:{size:"14px",weight:"bold",family:"msyh"}}});i.push(v)}),this.maskLayer.addMany(i)}}return{status:0,message:"ok"}}async showDD(s){this.maskLayer.removeAll();const e=await f.get(`${this.geoServer}/zd_edpass/wms`,{params:{service:"WFS",version:"1.1.0",request:"GetFeature",typename:"zd_edpass:VW_DWD_GEO_SH_DD",outputFormat:"application/json",CQL_FILTER:`DD_CODE = ${s}`}});if(console.log(e),e.status!==200)return{status:-1,message:e.status+" "+e.statusText};const{features:r}=e.data;if(!r||r.length===0)return{status:-1,message:"未查询到数据"};const m=r[0].geometry.coordinates,o=[];m.forEach(t=>{const i=new h.Polygon({rings:t});o.push(i)});const p=o[0].centroid,y=d.geodesicBuffer(p,100,"kilometers");let a=d.difference(y,o[0]);for(let t=1;t<o.length;t++)a=d.difference(a,o[t]);const g=new c({geometry:a,symbol:{type:"simple-fill",color:[100,100,100,.8],outline:{width:0}}});this.maskLayer.add(g);const l=o.map(t=>new c({geometry:t,symbol:{type:"simple-line",style:"dash",color:[240,156,69],width:1}}));return this.maskLayer.addMany(l),await w.default.viewGoto(this.view,l),{status:0,message:"ok"}}clearJurisdiction(){this.maskLayer.removeAll()}}exports.default=C;
@@ -6,10 +6,20 @@ export default class SignalCrossController {
6
6
  private view;
7
7
  private crossLayer;
8
8
  private readonly symbolScale;
9
+ private oldScale;
9
10
  private scaleWatchHandle;
10
11
  private showName;
11
12
  private showStyle;
13
+ private readonly clusterRadius;
14
+ private readonly minClusterPoints;
15
+ private readonly maxClusterSymbolSize;
16
+ private readonly minClusterSymbolSize;
17
+ /** 需要进行聚合的点位,一般为当前屏幕范围内的点位 */
18
+ private clusteredLocations;
19
+ /** 所有路口点位 */
20
+ private locations;
12
21
  constructor(view: __esri.MapView | __esri.SceneView);
22
+ private locationToScreen;
13
23
  /**
14
24
  * 显示信控路口
15
25
  * @param params
@@ -17,6 +27,36 @@ export default class SignalCrossController {
17
27
  */
18
28
  showSignalCross(params: IShowSignalCrossParams): IResult;
19
29
  clearSignalCross(): void;
30
+ /**
31
+ * 按照像素距离聚类
32
+ * @param locations
33
+ * @param eps
34
+ * @param minPoints
35
+ * @returns
36
+ */
37
+ private doPixelCluster;
38
+ /**
39
+ * 获取邻居点
40
+ * @param locations
41
+ * @param index
42
+ * @param eps
43
+ * @returns
44
+ */
45
+ private getNeighbors;
46
+ /**
47
+ * 两点间的像素距离
48
+ * @param point1
49
+ * @param point2
50
+ * @returns
51
+ */
52
+ private getDistance;
53
+ /**
54
+ * 从聚类结果中创建聚类对象
55
+ * @param locations
56
+ * @returns
57
+ */
58
+ private createClusters;
59
+ private showClusterResult;
20
60
  private getBrandLabel;
21
61
  private getOnlineLabel;
22
62
  private getMalfunctionLabel;
@@ -1 +1 @@
1
- "use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const o=require("@arcgis/core/Graphic"),n=require("@arcgis/core/layers/GraphicsLayer");class c{constructor(e){this.symbolScale=6e3,this.showName="signalId",this.showStyle="scatter",this.view=e,this.crossLayer=new n({id:"signal-control-cross-layer",title:"信控路口图层"}),this.view.map.add(this.crossLayer)}showSignalCross(e){if(this.crossLayer.removeAll(),this.showName=e.showName||"signalId",this.showStyle=e.style||"scatter",this.scaleWatchHandle||(this.scaleWatchHandle=this.view.watch("scale",(t,i)=>{(t<=this.symbolScale&&i>this.symbolScale||t>this.symbolScale&&i<=this.symbolScale)&&this.crossLayer.graphics.forEach(l=>{const s=l.attributes;l.symbol=this.getCrossSymbol(s)})})),this.showStyle==="scatter"){const t=e.points.map(i=>{const l=this.getCrossSymbol(i),s=this.getBrandLabel(i.brand),a=this.getOnlineLabel(i.isOnline),r=this.getMalfunctionLabel(i.isMalfunction);return new o({geometry:{type:"point",longitude:i.x,latitude:i.y},symbol:l,attributes:{type:"signal-cross",id:i.crossId,brandLabel:s,isOnlineLabel:a,isMalfunctionLabel:r,...i},popupTemplate:{title:"{name}信号机",content:[{type:"fields",fieldInfos:[{fieldName:"signalId",label:"信号机编号"},{fieldName:"crossId",label:"路口编号"},{fieldName:"brandLabel",label:"品牌"},{fieldName:"isOnlineLabel",label:"是否在线"},{fieldName:"isMalfunctionLabel",label:"是否故障"}]}]}})});this.crossLayer.addMany(t)}return{status:0,message:"ok"}}clearSignalCross(){var e;this.crossLayer.removeAll(),(e=this.scaleWatchHandle)==null||e.remove(),this.scaleWatchHandle=null}getBrandLabel(e){const t=(e??"").toLowerCase();return t==="scats"?"SCATS":t==="gc"?"国产":e??""}getOnlineLabel(e){return e?"在线":"离线"}getMalfunctionLabel(e){return e?"故障":"正常"}getCrossSymbol(e){if(this.view.scale<=this.symbolScale){let t="/GisViewerAssets/Images/cross/ic_";return t+=e.brand==="scats"?"scats_":"gc_",t+=e.isOnline?"online_":"offline_",t+=e.isMalfunction?"malfunction.png":"normal.png",{type:"cim",data:{type:"CIMSymbolReference",primitiveOverrides:[{type:"CIMPrimitiveOverride",primitiveName:"textGraphic",propertyName:"TextString",valueExpressionInfo:{type:"CIMExpressionInfo",title:"Custom",expression:this.showName==="signalId"?'Replace($feature.name, "与", "/") + " " + $feature.signalId':'Replace($feature.name, "与", "/") + " " + $feature.crossId',returnType:"Default"}}],symbol:{type:"CIMPointSymbol",symbolLayers:[{type:"CIMVectorMarker",size:25,colorLocked:!0,anchorPointUnits:"Relative",frame:{xmin:-16,ymin:-16,xmax:16,ymax:16},markerGraphics:[{type:"CIMMarkerGraphic",primitiveName:"textGraphic",geometry:{x:0,y:0},symbol:{type:"CIMTextSymbol",height:12,horizontalAlignment:"Center",offsetX:0,offsetY:20,haloSize:1,haloSymbol:{type:"CIMPolygonSymbol",symbolLayers:[{type:"CIMSolidFill",enable:!0,color:[255,255,255,255]}]},symbol:{type:"CIMPolygonSymbol",symbolLayers:[{type:"CIMSolidFill",enable:!0,color:[0,0,0,255]}]},verticalAlignment:"Center"},textString:""}],scaleSymbolsProportionally:!0,respectFrame:!0},{type:"CIMPictureMarker",enable:!0,anchorPoint:{x:0,y:0},anchorPointUnits:"Relative",size:20,rotateClockwise:!0,textureFilter:"Picture",url:t}]}}}}else{const t={type:"simple-marker",style:"circle",size:6,outline:{width:0}};return e.brand.toLowerCase()==="scats"?(e.isOnline?t.color=[23,169,100]:t.color=[202,202,202],t.outline.color=[23,169,100]):e.isOnline?t.color=[33,240,142]:t.color=[202,202,202],t}}}exports.default=c;
1
+ "use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const h=require("@arcgis/core/geometry"),y=require("@arcgis/core/Graphic"),d=require("@arcgis/core/layers/GraphicsLayer");class b{constructor(e){this.symbolScale=6e3,this.oldScale=0,this.showName="signalId",this.showStyle="scatter",this.clusterRadius=120,this.minClusterPoints=2,this.maxClusterSymbolSize=50,this.minClusterSymbolSize=25,this.clusteredLocations=[],this.locations=[],this.view=e,this.crossLayer=new d({id:"signal-control-cross-layer",title:"信控路口图层"}),this.view.map.add(this.crossLayer)}locationToScreen(){this.clusteredLocations=[],this.locations.forEach(e=>{const t=this.view.toScreen(new h.Point({x:e.x,y:e.y}));t.x>0&&t.y>0&&(e.properties.screenX=t.x,e.properties.screenY=t.y,e.visited=!1,e.clusterId=void 0,this.clusteredLocations.push(e))})}showSignalCross(e){if(this.crossLayer.removeAll(),this.showName=e.showName||"signalId",this.showStyle=e.style||"scatter",this.scaleWatchHandle||(this.scaleWatchHandle=this.view.watch("stationary",()=>{if(this.showStyle==="scatter")(this.oldScale<this.symbolScale&&this.view.scale>=this.symbolScale||this.oldScale>=this.symbolScale&&this.view.scale<this.symbolScale)&&this.crossLayer.graphics.forEach(t=>{t.symbol=this.getCrossSymbol(t.attributes)}),this.oldScale=this.view.scale;else{this.locationToScreen();const t=this.doPixelCluster(this.clusterRadius);this.showClusterResult(t)}})),this.showStyle==="scatter"){const t=e.points.map(i=>{const s=this.getCrossSymbol(i),r=this.getBrandLabel(i.brand),o=this.getOnlineLabel(i.isOnline),n=this.getMalfunctionLabel(i.isMalfunction);return new y({geometry:{type:"point",longitude:i.x,latitude:i.y},symbol:s,attributes:{type:"signal-cross",id:i.crossId,brandLabel:r,isOnlineLabel:o,isMalfunctionLabel:n,...i}})});this.crossLayer.addMany(t)}else{this.locations=e.points.map(i=>({id:i.crossId,x:i.x,y:i.y,visited:!1,clusterId:void 0,properties:i})),this.locationToScreen();const t=this.doPixelCluster(this.clusterRadius);this.showClusterResult(t)}return{status:0,message:"ok"}}clearSignalCross(){var e;this.crossLayer.removeAll(),(e=this.scaleWatchHandle)==null||e.remove(),this.scaleWatchHandle=null}doPixelCluster(e){let t=0;for(let i=0;i<this.clusteredLocations.length;i++){const s=this.clusteredLocations[i];if(s.visited)continue;s.visited=!0;const r=this.getNeighbors(s,e);r.length<this.minClusterPoints?s.clusterId=-1:(r.forEach(o=>{o.visited=!0,o.clusterId=t}),s.clusterId=t,t++)}return this.createClusters()}getNeighbors(e,t){return this.clusteredLocations.filter(i=>i.id===e.id||i.visited?!1:this.getDistance(e,i)<=t)}getDistance(e,t){return Math.sqrt(Math.pow(e.properties.screenX-t.properties.screenX,2)+Math.pow(e.properties.screenY-t.properties.screenY,2))}createClusters(){const e={},t=[];for(const s of this.clusteredLocations)s.clusterId===void 0||s.clusterId===-1?t.push(s):(e[s.clusterId]||(e[s.clusterId]=[]),e[s.clusterId].push(s));const i=Object.keys(e).map((s,r)=>{const o=e[Number(s)],n=o.length,l=o.reduce((c,u)=>c+u.x,0),a=o.reduce((c,u)=>c+u.y,0),m=l/n,p=a/n;return{id:Number(s),items:o,count:n,center:{x:m,y:p}}});return t.length>0&&i.push({id:-1,items:t,count:t.length,center:null}),i}showClusterResult(e){this.crossLayer.removeAll();let t=Number.MIN_VALUE,i=Number.MAX_VALUE;e.forEach(s=>{s.count>1&&(i=Math.min(i,s.count),t=Math.max(t,s.count))}),e.forEach(s=>{if(s.id!==-1){let r=i===t?(this.maxClusterSymbolSize+this.minClusterSymbolSize)/2:this.minClusterSymbolSize+(s.count-i)/(t-i)*(this.maxClusterSymbolSize-this.minClusterSymbolSize);r*=.75;const l=(s.count.toString().length*8+6)/2,a=new y({geometry:new h.Point({x:s.center.x,y:s.center.y}),attributes:{count:s.count},symbol:{type:"cim",data:{type:"CIMSymbolReference",primitiveOverrides:[{type:"CIMPrimitiveOverride",primitiveName:"textGraphic",propertyName:"TextString",valueExpressionInfo:{type:"CIMExpressionInfo",title:"Custom",expression:"$feature.count",returnType:"Default"}}],symbol:{type:"CIMPointSymbol",symbolLayers:[{type:"CIMVectorMarker",size:r,colorLocked:!0,anchorPointUnits:"Relative",frame:{xmin:-16,ymin:-16,xmax:16,ymax:16},markerGraphics:[{type:"CIMMarkerGraphic",geometry:{rings:[[[-l,40],[l,40],[l,20],[-l,20],[-l,40]]]},symbol:{type:"CIMPolygonSymbol",symbolLayers:[{type:"CIMSolidFill",enable:!0,color:[2,72,200,255]},{type:"CIMSolidStroke",enable:!0,width:5,color:[2,72,200,128]}]}},{type:"CIMMarkerGraphic",primitiveName:"textGraphic",geometry:{x:0,y:0},symbol:{type:"CIMTextSymbol",height:16,horizontalAlignment:"Center",offsetX:0,offsetY:30,symbol:{type:"CIMPolygonSymbol",symbolLayers:[{type:"CIMSolidFill",enable:!0,color:[255,255,255,255]}]},verticalAlignment:"Center"},textString:""}],scaleSymbolsProportionally:!0,respectFrame:!0},{type:"CIMPictureMarker",enable:!0,anchorPoint:{x:0,y:0},anchorPointUnits:"Relative",size:r,rotateClockwise:!0,textureFilter:"Picture",url:"/GisViewerAssets/Images/cross/gis_xhj_blue.png"}]}}}});this.crossLayer.add(a)}else s.items.forEach(r=>{const o=new y({geometry:new h.Point({x:r.x,y:r.y}),attributes:{...r,...r.properties,type:"signal-cross",id:r.id},symbol:this.getCrossSymbol(r.properties)});this.crossLayer.add(o)})})}getBrandLabel(e){const t=(e??"").toLowerCase();return t==="scats"?"SCATS":t==="gc"?"国产":e??""}getOnlineLabel(e){return e?"在线":"离线"}getMalfunctionLabel(e){return e?"故障":"正常"}getCrossSymbol(e){if(this.view.scale<=this.symbolScale){let t="/GisViewerAssets/Images/cross/ic_";return t+=e.brand==="scats"?"scats_":"gc_",t+=e.isOnline?"online_":"offline_",t+=e.isMalfunction?"malfunction.png":"normal.png",{type:"cim",data:{type:"CIMSymbolReference",primitiveOverrides:[{type:"CIMPrimitiveOverride",primitiveName:"textGraphic",propertyName:"TextString",valueExpressionInfo:{type:"CIMExpressionInfo",title:"Custom",expression:this.showName==="signalId"?'Replace($feature.name, "与", "/") + " " + $feature.signalId':'Replace($feature.name, "与", "/") + " " + $feature.crossId',returnType:"Default"}}],symbol:{type:"CIMPointSymbol",symbolLayers:[{type:"CIMVectorMarker",size:25,colorLocked:!0,anchorPointUnits:"Relative",frame:{xmin:-16,ymin:-16,xmax:16,ymax:16},markerGraphics:[{type:"CIMMarkerGraphic",primitiveName:"textGraphic",geometry:{x:0,y:0},symbol:{type:"CIMTextSymbol",height:12,horizontalAlignment:"Center",offsetX:0,offsetY:20,haloSize:1,haloSymbol:{type:"CIMPolygonSymbol",symbolLayers:[{type:"CIMSolidFill",enable:!0,color:[255,255,255,255]}]},symbol:{type:"CIMPolygonSymbol",symbolLayers:[{type:"CIMSolidFill",enable:!0,color:[0,0,0,255]}]},verticalAlignment:"Center"},textString:""}],scaleSymbolsProportionally:!0,respectFrame:!0},{type:"CIMPictureMarker",enable:!0,anchorPoint:{x:0,y:0},anchorPointUnits:"Relative",size:20,rotateClockwise:!0,textureFilter:"Picture",url:t}]}}}}else{const t={type:"simple-marker",style:"circle",size:6,outline:{width:0}};return e.brand.toLowerCase()==="scats"?(e.isOnline?t.color=[23,169,100]:t.color=[202,202,202],t.outline.color=[23,169,100]):e.isOnline?t.color=[33,240,142]:t.color=[202,202,202],t}}}exports.default=b;
@@ -368,7 +368,7 @@ export interface IRoadLine {
368
368
  }
369
369
  export interface IShowJurisdictionParams {
370
370
  type: string;
371
- ids: string[];
371
+ id: string;
372
372
  }
373
373
  export interface IShowEdpassDeviceParams {
374
374
  deviceType: string;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "gisviewer-vue3-arcgis",
3
- "version": "1.0.267",
3
+ "version": "1.0.269",
4
4
  "main": "lib/index.js",
5
5
  "module": "es/index.mjs",
6
6
  "files": [