gisviewer-vue3-arcgis 1.0.241 → 1.0.242
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/es/src/gis-map/utils/common-utils.d.ts +1 -1
- package/es/src/gis-map/utils/common-utils.mjs +52 -39
- package/es/src/gis-map/utils/signal-control-area/sub-district-renderer.mjs +8 -8
- package/lib/src/gis-map/utils/common-utils.d.ts +1 -1
- package/lib/src/gis-map/utils/common-utils.js +1 -1
- package/lib/src/gis-map/utils/signal-control-area/sub-district-renderer.js +1 -1
- package/package.json +1 -1
|
@@ -90,5 +90,5 @@ export default class CommonUtils {
|
|
|
90
90
|
* @returns
|
|
91
91
|
*/
|
|
92
92
|
static getCenterPointInLine(line: number[][]): number[];
|
|
93
|
-
static viewGoto(view: __esri.MapView | __esri.SceneView, target: Graphic[]): Promise<void>;
|
|
93
|
+
static viewGoto(view: __esri.MapView | __esri.SceneView, target: Graphic[], zoom?: boolean): Promise<void>;
|
|
94
94
|
}
|
|
@@ -1,13 +1,13 @@
|
|
|
1
|
-
import { Point as L, Polyline as
|
|
2
|
-
import * as
|
|
3
|
-
import * as
|
|
4
|
-
import
|
|
5
|
-
import
|
|
6
|
-
import * as
|
|
1
|
+
import { Point as L, Polyline as l } from "@arcgis/core/geometry";
|
|
2
|
+
import * as u from "@arcgis/core/geometry/geometryEngineAsync";
|
|
3
|
+
import * as y from "@arcgis/core/geometry/support/webMercatorUtils";
|
|
4
|
+
import h from "@turf/bearing";
|
|
5
|
+
import p from "@turf/destination";
|
|
6
|
+
import * as f from "@turf/helpers";
|
|
7
7
|
import d from "@turf/length";
|
|
8
8
|
import O from "@turf/line-slice-along";
|
|
9
9
|
import w from "pako";
|
|
10
|
-
import
|
|
10
|
+
import P from "proj4";
|
|
11
11
|
class s {
|
|
12
12
|
/**
|
|
13
13
|
* 得到某个点在一定方向、距离之外的另一个点
|
|
@@ -17,7 +17,7 @@ class s {
|
|
|
17
17
|
* @returns
|
|
18
18
|
*/
|
|
19
19
|
static destinationWithPoint(t, e, n) {
|
|
20
|
-
const r =
|
|
20
|
+
const r = f.point([t.x, t.y]), i = p(r, n, e, {
|
|
21
21
|
units: "meters"
|
|
22
22
|
});
|
|
23
23
|
return new L({
|
|
@@ -31,8 +31,8 @@ class s {
|
|
|
31
31
|
* @returns
|
|
32
32
|
*/
|
|
33
33
|
static angleOfLine(t) {
|
|
34
|
-
const e = t.paths[0], n =
|
|
35
|
-
return
|
|
34
|
+
const e = t.paths[0], n = f.point(e[0]), r = f.point(e[e.length - 1]);
|
|
35
|
+
return h(n, r);
|
|
36
36
|
}
|
|
37
37
|
/**
|
|
38
38
|
* 在头尾两个方向上延长折线
|
|
@@ -40,14 +40,14 @@ class s {
|
|
|
40
40
|
* @param distance
|
|
41
41
|
*/
|
|
42
42
|
static extendLineInTowDir(t, e) {
|
|
43
|
-
const n = t.paths[0], r =
|
|
43
|
+
const n = t.paths[0], r = f.point(n[0]), i = f.point(n[1]), a = h(i, r), c = p(r, e, a, {
|
|
44
44
|
units: "meters"
|
|
45
|
-
}),
|
|
45
|
+
}), g = a > 0 ? a - 180 : a + 180, o = p(i, e, g, {
|
|
46
46
|
units: "meters"
|
|
47
47
|
});
|
|
48
|
-
return new
|
|
48
|
+
return new l({
|
|
49
49
|
paths: [
|
|
50
|
-
[
|
|
50
|
+
[c.geometry.coordinates, o.geometry.coordinates]
|
|
51
51
|
]
|
|
52
52
|
});
|
|
53
53
|
}
|
|
@@ -58,7 +58,7 @@ class s {
|
|
|
58
58
|
* @returns
|
|
59
59
|
*/
|
|
60
60
|
static async getIntersectPointOfTwoLines(t, e) {
|
|
61
|
-
const n = await
|
|
61
|
+
const n = await u.intersectLinesToPoints(
|
|
62
62
|
t,
|
|
63
63
|
e
|
|
64
64
|
);
|
|
@@ -84,9 +84,9 @@ class s {
|
|
|
84
84
|
e,
|
|
85
85
|
i
|
|
86
86
|
), await s.pointDistance(r) > 2.5) {
|
|
87
|
-
const
|
|
87
|
+
const a = new l({ paths: [r] });
|
|
88
88
|
return (await s.getOffsetLine(
|
|
89
|
-
|
|
89
|
+
a,
|
|
90
90
|
-i
|
|
91
91
|
)).paths[0];
|
|
92
92
|
}
|
|
@@ -102,8 +102,8 @@ class s {
|
|
|
102
102
|
static async pointDistance(t) {
|
|
103
103
|
if (t.length < 2)
|
|
104
104
|
return 0;
|
|
105
|
-
const e = new
|
|
106
|
-
return await
|
|
105
|
+
const e = new l({ paths: [t] });
|
|
106
|
+
return await u.geodesicLength(e, "meters");
|
|
107
107
|
}
|
|
108
108
|
/**
|
|
109
109
|
* 线按一定距离平移之后,与面相交的两个端点
|
|
@@ -114,10 +114,10 @@ class s {
|
|
|
114
114
|
*/
|
|
115
115
|
static async getIntersectPointOfLineAndPolygon(t, e, n = 0) {
|
|
116
116
|
n !== 0 && (t = await s.getOffsetLine(t, n));
|
|
117
|
-
const r = await
|
|
118
|
-
if (r instanceof
|
|
119
|
-
const i = r.paths[0],
|
|
120
|
-
return [
|
|
117
|
+
const r = await u.intersect(t, e);
|
|
118
|
+
if (r instanceof l) {
|
|
119
|
+
const i = r.paths[0], a = i[0], c = i[i.length - 1];
|
|
120
|
+
return [a, c];
|
|
121
121
|
}
|
|
122
122
|
return [];
|
|
123
123
|
}
|
|
@@ -128,12 +128,12 @@ class s {
|
|
|
128
128
|
* @returns 平移后的polyline
|
|
129
129
|
*/
|
|
130
130
|
static async getOffsetLine(t, e) {
|
|
131
|
-
const n =
|
|
131
|
+
const n = y.geographicToWebMercator(t), r = await u.offset(
|
|
132
132
|
n,
|
|
133
133
|
e,
|
|
134
134
|
"meters"
|
|
135
135
|
);
|
|
136
|
-
return
|
|
136
|
+
return y.webMercatorToGeographic(
|
|
137
137
|
r,
|
|
138
138
|
!1
|
|
139
139
|
);
|
|
@@ -147,8 +147,8 @@ class s {
|
|
|
147
147
|
try {
|
|
148
148
|
const e = [], n = t.split("");
|
|
149
149
|
for (let i = 0; i < n.length; i++) {
|
|
150
|
-
const
|
|
151
|
-
e.push(
|
|
150
|
+
const a = n[i];
|
|
151
|
+
e.push(a.charCodeAt(0));
|
|
152
152
|
}
|
|
153
153
|
const r = new Uint8Array(e);
|
|
154
154
|
return w.inflate(r, { to: "string" });
|
|
@@ -185,7 +185,7 @@ class s {
|
|
|
185
185
|
static transformLineProjection(t) {
|
|
186
186
|
try {
|
|
187
187
|
return t.map(
|
|
188
|
-
(e) =>
|
|
188
|
+
(e) => P(s.geoReference).inverse([
|
|
189
189
|
e[0] - s.xOffset,
|
|
190
190
|
e[1] - s.yOffset
|
|
191
191
|
])
|
|
@@ -199,7 +199,7 @@ class s {
|
|
|
199
199
|
}
|
|
200
200
|
static transformPointProjection(t) {
|
|
201
201
|
try {
|
|
202
|
-
return
|
|
202
|
+
return P(s.geoReference).inverse([
|
|
203
203
|
t[0] - s.xOffset,
|
|
204
204
|
t[1] - s.yOffset
|
|
205
205
|
]);
|
|
@@ -214,8 +214,8 @@ class s {
|
|
|
214
214
|
return Math.abs(t[0] - e[0]) < Number.EPSILON && Math.abs(t[1] - e[1]) < Number.EPSILON;
|
|
215
215
|
}
|
|
216
216
|
static getExtensionLine(t, e, n) {
|
|
217
|
-
const r =
|
|
218
|
-
return
|
|
217
|
+
const r = f.point(t), i = f.point(e), a = h(r, i);
|
|
218
|
+
return p(i, n, a, { units: "meters" }).geometry.coordinates;
|
|
219
219
|
}
|
|
220
220
|
static isCoordinateValid(t) {
|
|
221
221
|
return typeof t.latitude == "string" && (t.latitude = Number(t.latitude)), typeof t.longitude == "string" && (t.longitude = Number(t.longitude)), t.latitude !== null && t.longitude !== null && !isNaN(t.latitude) && !isNaN(t.longitude) && t.latitude !== 0 && t.longitude !== 0;
|
|
@@ -226,22 +226,35 @@ class s {
|
|
|
226
226
|
* @returns
|
|
227
227
|
*/
|
|
228
228
|
static getCenterPointInLine(t) {
|
|
229
|
-
const e =
|
|
229
|
+
const e = f.lineString(t), n = d(e, { units: "meters" }) / 2, r = O(e, 0, n, {
|
|
230
230
|
units: "meters"
|
|
231
231
|
});
|
|
232
232
|
return r.geometry.coordinates[r.geometry.coordinates.length - 1];
|
|
233
233
|
}
|
|
234
|
-
static async viewGoto(t, e) {
|
|
235
|
-
var
|
|
236
|
-
|
|
234
|
+
static async viewGoto(t, e, n = !0) {
|
|
235
|
+
var a, c;
|
|
236
|
+
const i = localStorage.getItem("gpu") !== "Unknown";
|
|
237
|
+
if (!n) {
|
|
238
|
+
if (e.length > 0) {
|
|
239
|
+
const g = e.map((o) => o.geometry).filter((o) => o);
|
|
240
|
+
if (g.length > 0) {
|
|
241
|
+
const o = (a = await u.union(g)) == null ? void 0 : a.extent;
|
|
242
|
+
o && (i ? await t.goTo(o.center, {
|
|
243
|
+
duration: 1e3
|
|
244
|
+
}) : t.center = o.center);
|
|
245
|
+
}
|
|
246
|
+
}
|
|
247
|
+
return;
|
|
248
|
+
}
|
|
249
|
+
if (i)
|
|
237
250
|
await t.goTo(e, {
|
|
238
251
|
duration: 1e3
|
|
239
252
|
});
|
|
240
253
|
else if (e.length > 0) {
|
|
241
|
-
const
|
|
242
|
-
if (
|
|
243
|
-
const
|
|
244
|
-
|
|
254
|
+
const g = e.map((o) => o.geometry).filter((o) => o);
|
|
255
|
+
if (g.length > 0) {
|
|
256
|
+
const o = (c = await u.union(g)) == null ? void 0 : c.extent;
|
|
257
|
+
o && (t.extent = o);
|
|
245
258
|
}
|
|
246
259
|
}
|
|
247
260
|
}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import
|
|
1
|
+
import L from "@arcgis/core/Graphic";
|
|
2
2
|
import m from "@arcgis/core/layers/FeatureLayer";
|
|
3
3
|
import v from "../common-utils.mjs";
|
|
4
4
|
import { subDistrictPointLayerOptions as I, subDistrictLineLayerOptions as z } from "./layer-symbol.mjs";
|
|
@@ -32,7 +32,7 @@ class C {
|
|
|
32
32
|
}
|
|
33
33
|
}
|
|
34
34
|
}), i.signals.forEach((a) => {
|
|
35
|
-
const n = new
|
|
35
|
+
const n = new L({
|
|
36
36
|
geometry: {
|
|
37
37
|
type: "point",
|
|
38
38
|
longitude: a.longitude,
|
|
@@ -116,14 +116,14 @@ class C {
|
|
|
116
116
|
color: c,
|
|
117
117
|
id: d,
|
|
118
118
|
districtName: p,
|
|
119
|
-
subDistrictName:
|
|
119
|
+
subDistrictName: f,
|
|
120
120
|
signalCount: b
|
|
121
121
|
} = u.attributes;
|
|
122
122
|
n.has(o) || n.set(o, {
|
|
123
123
|
color: c,
|
|
124
124
|
signalIds: [],
|
|
125
125
|
districtName: p,
|
|
126
|
-
subDistrictName:
|
|
126
|
+
subDistrictName: f,
|
|
127
127
|
signalCount: b
|
|
128
128
|
}), (y = n.get(o)) == null || y.signalIds.push(d);
|
|
129
129
|
});
|
|
@@ -140,11 +140,11 @@ class C {
|
|
|
140
140
|
style: "solid"
|
|
141
141
|
}
|
|
142
142
|
});
|
|
143
|
-
const { districtName: d, subDistrictName: p, signalIds:
|
|
143
|
+
const { districtName: d, subDistrictName: p, signalIds: f, signalCount: b } = u[1];
|
|
144
144
|
this.roadConnections.filter(
|
|
145
145
|
(l) => l.subDistrictId === c
|
|
146
146
|
).forEach((l) => {
|
|
147
|
-
const w = new
|
|
147
|
+
const w = new L({
|
|
148
148
|
geometry: {
|
|
149
149
|
type: "polyline",
|
|
150
150
|
paths: l.coordinates
|
|
@@ -228,7 +228,7 @@ class C {
|
|
|
228
228
|
const s = this.subDistrictPointLayer.createQuery();
|
|
229
229
|
s.where = `subDistrictId = '${e}'`, s.returnGeometry = !0;
|
|
230
230
|
const t = await this.subDistrictPointLayer.queryFeatures(s);
|
|
231
|
-
return t.features.length > 0 ? (await v.viewGoto(this.view, t.features), { status: 0, message: "ok" }) : { status: 1, message: "未找到子区" };
|
|
231
|
+
return t.features.length > 0 ? (await v.viewGoto(this.view, t.features, !1), { status: 0, message: "ok" }) : { status: 1, message: "未找到子区" };
|
|
232
232
|
}
|
|
233
233
|
/**
|
|
234
234
|
* 高亮子区, 其他子区隐藏
|
|
@@ -240,7 +240,7 @@ class C {
|
|
|
240
240
|
const t = this.subDistrictPointLayer.definitionExpression;
|
|
241
241
|
this.subDistrictPointLayer.definitionExpression = `subDistrictId = '${e}'`;
|
|
242
242
|
const r = await this.subDistrictPointLayer.queryFeatures(), i = r.features.length;
|
|
243
|
-
return i > 0 ? (this.subDistrictLineLayer.definitionExpression = `subDistrictId = '${e}'`, s = r.features[0].attributes.districtId, await v.viewGoto(this.view, r.features)) : this.subDistrictPointLayer.definitionExpression = t, { count: i, parentId: s };
|
|
243
|
+
return i > 0 ? (this.subDistrictLineLayer.definitionExpression = `subDistrictId = '${e}'`, s = r.features[0].attributes.districtId, await v.viewGoto(this.view, r.features, !1)) : this.subDistrictPointLayer.definitionExpression = t, { count: i, parentId: s };
|
|
244
244
|
}
|
|
245
245
|
/**
|
|
246
246
|
* 按照区控、子区id显示子区
|
|
@@ -90,5 +90,5 @@ export default class CommonUtils {
|
|
|
90
90
|
* @returns
|
|
91
91
|
*/
|
|
92
92
|
static getCenterPointInLine(line: number[][]): number[];
|
|
93
|
-
static viewGoto(view: __esri.MapView | __esri.SceneView, target: Graphic[]): Promise<void>;
|
|
93
|
+
static viewGoto(view: __esri.MapView | __esri.SceneView, target: Graphic[], zoom?: boolean): Promise<void>;
|
|
94
94
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const
|
|
1
|
+
"use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const p=require("@arcgis/core/geometry"),L=require("@arcgis/core/geometry/geometryEngineAsync"),w=require("@arcgis/core/geometry/support/webMercatorUtils"),h=require("@turf/bearing"),y=require("@turf/destination"),b=require("@turf/helpers"),S=require("@turf/length"),x=require("@turf/line-slice-along"),A=require("pako"),d=require("proj4");function P(l){const e=Object.create(null,{[Symbol.toStringTag]:{value:"Module"}});if(l){for(const t in l)if(t!=="default"){const n=Object.getOwnPropertyDescriptor(l,t);Object.defineProperty(e,t,n.get?n:{enumerable:!0,get:()=>l[t]})}}return e.default=l,Object.freeze(e)}const g=P(L),O=P(w),f=P(b);class s{static destinationWithPoint(e,t,n){const r=f.point([e.x,e.y]),i=y(r,n,t,{units:"meters"});return new p.Point({x:i.geometry.coordinates[0],y:i.geometry.coordinates[1]})}static angleOfLine(e){const t=e.paths[0],n=f.point(t[0]),r=f.point(t[t.length-1]);return h(n,r)}static extendLineInTowDir(e,t){const n=e.paths[0],r=f.point(n[0]),i=f.point(n[1]),c=h(i,r),a=y(r,t,c,{units:"meters"}),u=c>0?c-180:c+180,o=y(i,t,u,{units:"meters"});return new p.Polyline({paths:[[a.geometry.coordinates,o.geometry.coordinates]]})}static async getIntersectPointOfTwoLines(e,t){const n=await g.intersectLinesToPoints(e,t);if(n.length)return n[0]}static async getIntersectPointsOfStopLineAndLane(e,t,n){let r=await s.getIntersectPointOfLineAndPolygon(e,t);if(await s.pointDistance(r)<3&&n){for(const i of n)if(r=await s.getIntersectPointOfLineAndPolygon(e,t,i),await s.pointDistance(r)>2.5){const c=new p.Polyline({paths:[r]});return(await s.getOffsetLine(c,-i)).paths[0]}}else return r;return[]}static async pointDistance(e){if(e.length<2)return 0;const t=new p.Polyline({paths:[e]});return await g.geodesicLength(t,"meters")}static async getIntersectPointOfLineAndPolygon(e,t,n=0){n!==0&&(e=await s.getOffsetLine(e,n));const r=await g.intersect(e,t);if(r instanceof p.Polyline){const i=r.paths[0],c=i[0],a=i[i.length-1];return[c,a]}return[]}static async getOffsetLine(e,t){const n=O.geographicToWebMercator(e),r=await g.offset(n,t,"meters");return O.webMercatorToGeographic(r,!1)}static unzip(e){try{const t=[],n=e.split("");for(let i=0;i<n.length;i++){const c=n[i];t.push(c.charCodeAt(0))}const r=new Uint8Array(t);return A.inflate(r,{to:"string"})}catch{console.log(`非压缩内容: ${e}`)}}static getStdVecEntries(e,t=!1){const n=new Array(e.size());for(let r=0;r<e.size();r++)n[r]=e.get(r);return t&&e.delete(),n}static getStdMapEntries(e){const t=[];for(const n of s.getStdMapKeys(e))t.push([n,e.get(n)]);return t}static getStdMapKeys(e,t=!1){const n=[],r=e.keys();for(let i=0;i<r.size();i++)n.push(r.get(i));return r.delete(),t&&e.delete(),n}static setGeoData(e,t,n){s.geoReference=e,s.xOffset=t,s.yOffset=n}static transformLineProjection(e){try{return e.map(t=>d(s.geoReference).inverse([t[0]-s.xOffset,t[1]-s.yOffset]))}catch{return console.error("OpenDrive坐标转换为WGS84坐标失败",s.geoReference),e}}static transformPointProjection(e){try{return d(s.geoReference).inverse([e[0]-s.xOffset,e[1]-s.yOffset])}catch{return console.error("OpenDrive坐标转换为WGS84坐标失败",s.geoReference),e}}static pointsEqual(e,t){return Math.abs(e[0]-t[0])<Number.EPSILON&&Math.abs(e[1]-t[1])<Number.EPSILON}static getExtensionLine(e,t,n){const r=f.point(e),i=f.point(t),c=h(r,i);return y(i,n,c,{units:"meters"}).geometry.coordinates}static isCoordinateValid(e){return typeof e.latitude=="string"&&(e.latitude=Number(e.latitude)),typeof e.longitude=="string"&&(e.longitude=Number(e.longitude)),e.latitude!==null&&e.longitude!==null&&!isNaN(e.latitude)&&!isNaN(e.longitude)&&e.latitude!==0&&e.longitude!==0}static getCenterPointInLine(e){const t=f.lineString(e),n=S(t,{units:"meters"})/2,r=x(t,0,n,{units:"meters"});return r.geometry.coordinates[r.geometry.coordinates.length-1]}static async viewGoto(e,t,n=!0){var c,a;const i=localStorage.getItem("gpu")!=="Unknown";if(!n){if(t.length>0){const u=t.map(o=>o.geometry).filter(o=>o);if(u.length>0){const o=(c=await g.union(u))==null?void 0:c.extent;o&&(i?await e.goTo(o.center,{duration:1e3}):e.center=o.center)}}return}if(i)await e.goTo(t,{duration:1e3});else if(t.length>0){const u=t.map(o=>o.geometry).filter(o=>o);if(u.length>0){const o=(a=await g.union(u))==null?void 0:a.extent;o&&(e.extent=o)}}}}exports.default=s;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const f=require("@arcgis/core/Graphic"),v=require("@arcgis/core/layers/FeatureLayer"),m=require("../common-utils.js"),w=require("./layer-symbol.js");class g{constructor(i){this.roadConnections=[],this.view=i,this.subDistrictPointLayer=new v(w.subDistrictPointLayerOptions),this.subDistrictPointLayer.spatialReference=i.spatialReference,this.subDistrictPointLayer.popupEnabled=!0,this.subDistrictLineLayer=new v(w.subDistrictLineLayerOptions),this.subDistrictLineLayer.spatialReference=i.spatialReference,this.subDistrictLineLayer.popupEnabled=!0,this.view.map.addMany([this.subDistrictLineLayer,this.subDistrictPointLayer])}async showSubDistricts(i){await this.clearSubDistricts(),this.clickHandler=this.view.on("click",this.viewHitTest.bind(this));let s=0;const t=[],r=[];i.forEach(e=>{e.roadConnections.length>0&&this.roadConnections.push(...e.roadConnections),r.push({value:e.id,label:e.name,symbol:{type:"simple-marker",style:"circle",color:[...e.areaColor,.8],size:"8px",outline:{color:[...e.areaColor],width:4}}}),e.signals.forEach(a=>{const u=new f({geometry:{type:"point",longitude:a.longitude,latitude:a.latitude},attributes:{ObjectID:s++,id:a.nodeId,name:a.name,subDistrictId:e.id,subDistrictName:e.name,districtId:e.parentId,districtName:e.parentName,signalCount:e.signalCount,color:e.areaColor.join(","),type:"subDistrict"}});t.push(u)})}),this.subDistrictPointLayer.renderer={type:"unique-value",field:"subDistrictId",defaultSymbol:{type:"simple-marker",color:[180,180,180,.5],size:"8px",outline:{color:"white",width:1}},defaultLabel:"其他子区",uniqueValueInfos:r,visualVariables:[{type:"size",valueExpression:"$view.scale",stops:[{size:24,value:2500},{size:20,value:5e3},{size:8,value:18055.954822000003},{size:4,value:144447.638572},{size:2,value:1155581108577e-6}]}]},this.currentPointRenderer=this.subDistrictPointLayer.renderer.clone(),await this.subDistrictPointLayer.applyEdits({addFeatures:t})}async showRoads(i){const{type:s,id:t}=i,r=this.subDistrictPointLayer.createQuery(),e=s==="district"?"districtId":"subDistrictId";r.where=`${e} = '${t}'`;const a=await this.subDistrictPointLayer.queryFeatures(r),u=new Map;a.features.forEach(n=>{var y;const{subDistrictId:o,color:c,id:d,districtName:b,subDistrictName:L,signalCount:p}=n.attributes;u.has(o)||u.set(o,{color:c,signalIds:[],districtName:b,subDistrictName:L,signalCount:p}),(y=u.get(o))==null||y.signalIds.push(d)});const h=[],D=[];for(const n of u){let o=0;const c=n[0];h.push({value:c,symbol:{type:"simple-line",color:n[1].color.split(",").map(Number),width:2,style:"solid"}});const{districtName:d,subDistrictName:b,signalIds:L,signalCount:p}=n[1];this.roadConnections.filter(l=>l.subDistrictId===c).forEach(l=>{const I=new f({geometry:{type:"polyline",paths:l.coordinates},attributes:{ObjectID:o++,id:l.id,districtId:l.districtId,subDistrictId:c,subDistrictName:b,districtName:d,signalCount:p,color:n[1].color}});D.push(I)})}this.subDistrictLineLayer.renderer={type:"unique-value",field:"subDistrictId",defaultSymbol:{type:"simple-line",color:[180,180,180,.5],width:2,style:"solid"},defaultLabel:"其他子区",uniqueValueInfos:h,visualVariables:[{type:"size",valueExpression:"$view.scale",stops:[{size:6,value:2500},{size:5,value:5e3},{size:4,value:18055.954822000003},{size:3,value:144447.638572},{size:2,value:1155581108577e-6}]}]},this.currentLineRenderer=this.subDistrictLineLayer.renderer.clone(),await this.subDistrictLineLayer.applyEdits({addFeatures:D})}async clearSubDistricts(){var t;const i=await this.subDistrictPointLayer.queryFeatures();i.features.length>0&&await this.subDistrictPointLayer.applyEdits({deleteFeatures:i.features}),this.subDistrictPointLayer.definitionExpression="1=1";const s=await this.subDistrictLineLayer.queryFeatures();s.features.length>0&&await this.subDistrictLineLayer.applyEdits({deleteFeatures:s.features}),this.subDistrictLineLayer.definitionExpression="1=1",(t=this.clickHandler)==null||t.remove()}setVisible(i){this.subDistrictPointLayer.visible=i,this.subDistrictLineLayer.visible=i}async locateSubDistrict(i){const s=this.subDistrictPointLayer.createQuery();s.where=`subDistrictId = '${i}'`,s.returnGeometry=!0;const t=await this.subDistrictPointLayer.queryFeatures(s);return t.features.length>0?(await m.default.viewGoto(this.view,t.features),{status:0,message:"ok"}):{status:1,message:"未找到子区"}}async highlightSubDistrict(i){let s="";const t=this.subDistrictPointLayer.definitionExpression;this.subDistrictPointLayer.definitionExpression=`subDistrictId = '${i}'`;const r=await this.subDistrictPointLayer.queryFeatures(),e=r.features.length;return e>0?(this.subDistrictLineLayer.definitionExpression=`subDistrictId = '${i}'`,s=r.features[0].attributes.districtId,await m.default.viewGoto(this.view,r.features)):this.subDistrictPointLayer.definitionExpression=t,{count:e,parentId:s}}filter(i){const{type:s,id:t}=i,r=`${s==="district"?"districtId":"subDistrictId"} = '${t}'`;this.subDistrictPointLayer.definitionExpression=r,this.subDistrictLineLayer.definitionExpression=r}resetFilter(){this.subDistrictPointLayer.definitionExpression="1=1",this.subDistrictLineLayer.definitionExpression="1=1"}async viewHitTest(i){var r;const t=(r=(await this.view.hitTest(i,{include:[this.subDistrictPointLayer,this.subDistrictLineLayer]})).results)==null?void 0:r.filter(e=>e.type==="graphic");if(t.length===0)console.time("resetRenderer"),this.subDistrictPointLayer.renderer=this.currentPointRenderer,this.subDistrictLineLayer.renderer=this.currentLineRenderer;else{const e=t[0].graphic,a=e.attributes.color.split(",").map(Number);this.subDistrictPointLayer.renderer={type:"unique-value",field:"subDistrictId",defaultSymbol:{type:"simple-marker",style:"circle",color:[0,0,0,0],size:"8px",outline:{color:[180,180,180,.5],width:4}},defaultLabel:"其他子区",uniqueValueInfos:[{value:e.attributes.subDistrictId,symbol:{type:"simple-marker",style:"circle",color:[...a,.8],size:"8px",outline:{color:a,width:4}}}],visualVariables:[{type:"size",valueExpression:"$view.scale",stops:[{size:24,value:2500},{size:20,value:5e3},{size:8,value:18055.954822000003},{size:4,value:144447.638572},{size:2,value:1155581108577e-6}]}]},this.subDistrictLineLayer.renderer={type:"unique-value",field:"subDistrictId",defaultSymbol:{type:"simple-line",style:"solid",color:[180,180,180,.5],width:"8px"},defaultLabel:"其他子区",uniqueValueInfos:[{value:e.attributes.subDistrictId,symbol:{type:"simple-line",style:"solid",color:e.attributes.color.split(",").map(Number),width:"8px"}}],visualVariables:[{type:"size",valueExpression:"$view.scale",stops:[{size:6,value:2500},{size:5,value:5e3},{size:4,value:18055.954822000003},{size:3,value:144447.638572},{size:2,value:1155581108577e-6}]}]}}}}exports.default=g;
|
|
1
|
+
"use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const f=require("@arcgis/core/Graphic"),v=require("@arcgis/core/layers/FeatureLayer"),m=require("../common-utils.js"),w=require("./layer-symbol.js");class g{constructor(i){this.roadConnections=[],this.view=i,this.subDistrictPointLayer=new v(w.subDistrictPointLayerOptions),this.subDistrictPointLayer.spatialReference=i.spatialReference,this.subDistrictPointLayer.popupEnabled=!0,this.subDistrictLineLayer=new v(w.subDistrictLineLayerOptions),this.subDistrictLineLayer.spatialReference=i.spatialReference,this.subDistrictLineLayer.popupEnabled=!0,this.view.map.addMany([this.subDistrictLineLayer,this.subDistrictPointLayer])}async showSubDistricts(i){await this.clearSubDistricts(),this.clickHandler=this.view.on("click",this.viewHitTest.bind(this));let s=0;const t=[],r=[];i.forEach(e=>{e.roadConnections.length>0&&this.roadConnections.push(...e.roadConnections),r.push({value:e.id,label:e.name,symbol:{type:"simple-marker",style:"circle",color:[...e.areaColor,.8],size:"8px",outline:{color:[...e.areaColor],width:4}}}),e.signals.forEach(a=>{const u=new f({geometry:{type:"point",longitude:a.longitude,latitude:a.latitude},attributes:{ObjectID:s++,id:a.nodeId,name:a.name,subDistrictId:e.id,subDistrictName:e.name,districtId:e.parentId,districtName:e.parentName,signalCount:e.signalCount,color:e.areaColor.join(","),type:"subDistrict"}});t.push(u)})}),this.subDistrictPointLayer.renderer={type:"unique-value",field:"subDistrictId",defaultSymbol:{type:"simple-marker",color:[180,180,180,.5],size:"8px",outline:{color:"white",width:1}},defaultLabel:"其他子区",uniqueValueInfos:r,visualVariables:[{type:"size",valueExpression:"$view.scale",stops:[{size:24,value:2500},{size:20,value:5e3},{size:8,value:18055.954822000003},{size:4,value:144447.638572},{size:2,value:1155581108577e-6}]}]},this.currentPointRenderer=this.subDistrictPointLayer.renderer.clone(),await this.subDistrictPointLayer.applyEdits({addFeatures:t})}async showRoads(i){const{type:s,id:t}=i,r=this.subDistrictPointLayer.createQuery(),e=s==="district"?"districtId":"subDistrictId";r.where=`${e} = '${t}'`;const a=await this.subDistrictPointLayer.queryFeatures(r),u=new Map;a.features.forEach(n=>{var y;const{subDistrictId:o,color:c,id:d,districtName:b,subDistrictName:L,signalCount:p}=n.attributes;u.has(o)||u.set(o,{color:c,signalIds:[],districtName:b,subDistrictName:L,signalCount:p}),(y=u.get(o))==null||y.signalIds.push(d)});const h=[],D=[];for(const n of u){let o=0;const c=n[0];h.push({value:c,symbol:{type:"simple-line",color:n[1].color.split(",").map(Number),width:2,style:"solid"}});const{districtName:d,subDistrictName:b,signalIds:L,signalCount:p}=n[1];this.roadConnections.filter(l=>l.subDistrictId===c).forEach(l=>{const I=new f({geometry:{type:"polyline",paths:l.coordinates},attributes:{ObjectID:o++,id:l.id,districtId:l.districtId,subDistrictId:c,subDistrictName:b,districtName:d,signalCount:p,color:n[1].color}});D.push(I)})}this.subDistrictLineLayer.renderer={type:"unique-value",field:"subDistrictId",defaultSymbol:{type:"simple-line",color:[180,180,180,.5],width:2,style:"solid"},defaultLabel:"其他子区",uniqueValueInfos:h,visualVariables:[{type:"size",valueExpression:"$view.scale",stops:[{size:6,value:2500},{size:5,value:5e3},{size:4,value:18055.954822000003},{size:3,value:144447.638572},{size:2,value:1155581108577e-6}]}]},this.currentLineRenderer=this.subDistrictLineLayer.renderer.clone(),await this.subDistrictLineLayer.applyEdits({addFeatures:D})}async clearSubDistricts(){var t;const i=await this.subDistrictPointLayer.queryFeatures();i.features.length>0&&await this.subDistrictPointLayer.applyEdits({deleteFeatures:i.features}),this.subDistrictPointLayer.definitionExpression="1=1";const s=await this.subDistrictLineLayer.queryFeatures();s.features.length>0&&await this.subDistrictLineLayer.applyEdits({deleteFeatures:s.features}),this.subDistrictLineLayer.definitionExpression="1=1",(t=this.clickHandler)==null||t.remove()}setVisible(i){this.subDistrictPointLayer.visible=i,this.subDistrictLineLayer.visible=i}async locateSubDistrict(i){const s=this.subDistrictPointLayer.createQuery();s.where=`subDistrictId = '${i}'`,s.returnGeometry=!0;const t=await this.subDistrictPointLayer.queryFeatures(s);return t.features.length>0?(await m.default.viewGoto(this.view,t.features,!1),{status:0,message:"ok"}):{status:1,message:"未找到子区"}}async highlightSubDistrict(i){let s="";const t=this.subDistrictPointLayer.definitionExpression;this.subDistrictPointLayer.definitionExpression=`subDistrictId = '${i}'`;const r=await this.subDistrictPointLayer.queryFeatures(),e=r.features.length;return e>0?(this.subDistrictLineLayer.definitionExpression=`subDistrictId = '${i}'`,s=r.features[0].attributes.districtId,await m.default.viewGoto(this.view,r.features,!1)):this.subDistrictPointLayer.definitionExpression=t,{count:e,parentId:s}}filter(i){const{type:s,id:t}=i,r=`${s==="district"?"districtId":"subDistrictId"} = '${t}'`;this.subDistrictPointLayer.definitionExpression=r,this.subDistrictLineLayer.definitionExpression=r}resetFilter(){this.subDistrictPointLayer.definitionExpression="1=1",this.subDistrictLineLayer.definitionExpression="1=1"}async viewHitTest(i){var r;const t=(r=(await this.view.hitTest(i,{include:[this.subDistrictPointLayer,this.subDistrictLineLayer]})).results)==null?void 0:r.filter(e=>e.type==="graphic");if(t.length===0)console.time("resetRenderer"),this.subDistrictPointLayer.renderer=this.currentPointRenderer,this.subDistrictLineLayer.renderer=this.currentLineRenderer;else{const e=t[0].graphic,a=e.attributes.color.split(",").map(Number);this.subDistrictPointLayer.renderer={type:"unique-value",field:"subDistrictId",defaultSymbol:{type:"simple-marker",style:"circle",color:[0,0,0,0],size:"8px",outline:{color:[180,180,180,.5],width:4}},defaultLabel:"其他子区",uniqueValueInfos:[{value:e.attributes.subDistrictId,symbol:{type:"simple-marker",style:"circle",color:[...a,.8],size:"8px",outline:{color:a,width:4}}}],visualVariables:[{type:"size",valueExpression:"$view.scale",stops:[{size:24,value:2500},{size:20,value:5e3},{size:8,value:18055.954822000003},{size:4,value:144447.638572},{size:2,value:1155581108577e-6}]}]},this.subDistrictLineLayer.renderer={type:"unique-value",field:"subDistrictId",defaultSymbol:{type:"simple-line",style:"solid",color:[180,180,180,.5],width:"8px"},defaultLabel:"其他子区",uniqueValueInfos:[{value:e.attributes.subDistrictId,symbol:{type:"simple-line",style:"solid",color:e.attributes.color.split(",").map(Number),width:"8px"}}],visualVariables:[{type:"size",valueExpression:"$view.scale",stops:[{size:6,value:2500},{size:5,value:5e3},{size:4,value:18055.954822000003},{size:3,value:144447.638572},{size:2,value:1155581108577e-6}]}]}}}}exports.default=g;
|