@mapgis/webclient-vue-cesium 10.5.5-1 → 10.5.5-6

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 (124) hide show
  1. package/README.md +46 -49
  2. package/dist-libs/webclient-vue-cesium.common.js +191087 -0
  3. package/dist-libs/webclient-vue-cesium.css +1 -1
  4. package/dist-libs/webclient-vue-cesium.umd.js +191097 -0
  5. package/dist-libs/webclient-vue-cesium.umd.min.js +204 -194
  6. package/docs/.vuepress/config.js +47 -46
  7. package/docs/README.md +5 -4
  8. package/docs/api/analysis/Aspect.md +236 -0
  9. package/docs/api/analysis/Contour.md +240 -0
  10. package/docs/api/analysis/CutFill.md +306 -0
  11. package/docs/api/analysis/DynamicSection.md +336 -0
  12. package/docs/api/analysis/Excavate.md +3 -11
  13. package/docs/api/analysis/Flood.md +177 -200
  14. package/docs/api/analysis/HeightLimited.md +7 -4
  15. package/docs/api/analysis/ParticleEffects.md +549 -0
  16. package/docs/api/analysis/Profile.md +464 -0
  17. package/docs/api/analysis/Shadow.md +76 -13
  18. package/docs/api/analysis/Sightline.md +66 -13
  19. package/docs/api/analysis/Skyline.md +144 -29
  20. package/docs/api/analysis/Slope.md +236 -0
  21. package/docs/api/analysis/Viewshed.md +100 -21
  22. package/docs/api/layer/IGServer/IgsDocLayer.md +10 -0
  23. package/docs/api/layer/IGServer/IgsFeatureLayer.md +253 -0
  24. package/docs/api/layer/IGServer/IgsTileLayer.md +11 -0
  25. package/docs/api/layer/OGC/CesiumOgcWmsLayer.md +20 -19
  26. package/docs/api/layer/OGC/Wms.png +0 -0
  27. package/docs/api/layer/marker/DynamicMarker.md +81 -0
  28. package/docs/api/layer/marker/dynamicmarker.png +0 -0
  29. package/docs/api/layer/marker/selects.png +0 -0
  30. package/docs/api/layer/vectortile/vectortile.md +10 -0
  31. package/docs/api/m3d/image/layer_control_1.png +0 -0
  32. package/docs/api/m3d/image/layer_control_2.png +0 -0
  33. package/docs/api/m3d/image/layer_control_3.png +0 -0
  34. package/docs/api/m3d/m3d.md +13 -2
  35. package/docs/api/service/comprehensiveQuery/comprehensiveQuery.md +946 -0
  36. package/docs/api/ui/draw.md +68 -40
  37. package/docs/api/ui/link.md +8 -1
  38. package/docs/api/ui/marker.md +19 -1
  39. package/docs/api/ui/measure.md +82 -10
  40. package/docs/api/ui/table.md +6 -6
  41. package/docs/guide/README.md +26 -23
  42. package/docs/guide/basemap.md +35 -33
  43. package/docs/guide/markers&popups.md +46 -53
  44. package/docs/plugin_components/create_storybook.md +241 -0
  45. package/docs/plugin_components/img.png +0 -0
  46. package/docs/plugin_components/img_1.png +0 -0
  47. package/docs/plugin_components/img_10.png +0 -0
  48. package/docs/plugin_components/img_2.png +0 -0
  49. package/docs/plugin_components/img_3.png +0 -0
  50. package/docs/plugin_components/img_4.png +0 -0
  51. package/docs/plugin_components/img_5.png +0 -0
  52. package/docs/plugin_components/img_6.png +0 -0
  53. package/docs/plugin_components/img_7.png +0 -0
  54. package/docs/plugin_components/img_8.png +0 -0
  55. package/docs/version/diff.md +4 -4
  56. package/docs/version/version.md +81 -0
  57. package/package.json +5 -5
  58. package/src/cdn/cdn_component.js +62 -0
  59. package/src/component.js +20 -2
  60. package/src/components/Analysis/Aspect.vue +318 -0
  61. package/src/components/Analysis/Contour.vue +257 -0
  62. package/src/components/Analysis/CutFill.vue +581 -0
  63. package/src/components/Analysis/DynamicCutting.vue +98 -59
  64. package/src/components/Analysis/DynamicSection.vue +494 -0
  65. package/src/components/Analysis/Excavate.vue +133 -87
  66. package/src/components/Analysis/Flood.vue +395 -487
  67. package/src/components/Analysis/Flood.vue-- +630 -0
  68. package/src/components/Analysis/HeightLimited.vue +66 -47
  69. package/src/components/Analysis/ModelFlatten.vue +2 -2
  70. package/src/components/Analysis/Profile.vue +503 -0
  71. package/src/components/Analysis/Shadow.vue +220 -309
  72. package/src/components/Analysis/Sightline.vue +393 -375
  73. package/src/components/Analysis/SkyLine.vue +283 -93
  74. package/src/components/Analysis/Slope.vue +317 -0
  75. package/src/components/Analysis/Viewshed.vue +806 -373
  76. package/src/components/Analysis/skyline2dChartOptions.js +66 -0
  77. package/src/components/DataSource/Geojson/GeoJsonDataSource.vue +201 -3
  78. package/src/components/Layer/GeoJSON/GeoJsonLayer.vue +345 -0
  79. package/src/components/Layer/IGServer/IgsFeatureLayer.vue +227 -0
  80. package/src/components/Layer/Marker/DynamicMarkerLayer.vue +487 -0
  81. package/src/components/Layer/Marker/Marker3dPro.vue +196 -0
  82. package/src/components/Layer/Marker/Marker3dSetPro.vue +67 -0
  83. package/src/components/Layer/VectorTile/VectorTileLayer.vue +117 -33
  84. package/src/components/Layer/VectorTile/VectorTileOptions.js +1 -1
  85. package/src/components/M3D/3DTilesetOptions.js +23 -1
  86. package/src/components/M3D/G3D.vue +150 -0
  87. package/src/components/M3D/M3d.vue +142 -32
  88. package/src/components/M3D/M3dSet.vue +118 -0
  89. package/src/components/M3D/M3dType.js +24 -0
  90. package/src/components/Overlay/Mapv3dLayer.vue +2 -0
  91. package/src/components/Overlay/ParticleEffects.vue +545 -0
  92. package/src/components/Overlay/mapv/MapvBaseLayer.js +351 -172
  93. package/src/components/Overlay/mapv/MapvLayer.js +372 -324
  94. package/src/components/Overlay/mapv/SuperCluster.js +611 -0
  95. package/src/components/Overlay/themeLayer/heater/CesiumHeater.vue +152 -0
  96. package/src/components/Overlay/themeLayer/heater/MapvHeater.vue +161 -0
  97. package/src/components/UI/Controls/Draw/Draw.vue +320 -92
  98. package/src/components/UI/Controls/Legend/Legend.vue +55 -51
  99. package/src/components/UI/Controls/Link/Link.vue +59 -37
  100. package/src/components/UI/Controls/Measure/Measure.vue +75 -33
  101. package/src/components/UI/Controls/Measure/components/MeasureResult.vue +71 -0
  102. package/src/components/UI/Controls/Measure/components/MeasureSetting.vue +63 -0
  103. package/src/components/UI/Controls/Measure/components/MeasureTool.vue +155 -0
  104. package/src/components/UI/Geojson/Popup.vue +101 -0
  105. package/src/components/UI/Marker/Marker.vue +185 -48
  106. package/src/components/UI/Popup/Popup.vue +21 -64
  107. package/src/components/Utils/common/color-util.js +159 -0
  108. package/src/components/Utils/util.js +311 -231
  109. package/src/components/WebGlobe/manager.js +81 -3
  110. package/src/components/WebGlobe/mixins/withPrivateMethods.js +4 -2
  111. package/src/components/WebGlobe/util.js +173 -0
  112. package/src/components/service/comprehensive-query/ComprehensiveQuery.vue +156 -0
  113. package/src/components/service/comprehensive-query/PlaceNameCesium.vue +102 -0
  114. package/src/components/service/comprehensive-query/util/catalog/document.js +626 -0
  115. package/src/components/service/comprehensive-query/util/feature/arcgis-feature-query.js +448 -0
  116. package/src/components/service/comprehensive-query/util/feature/feature-convert.js +408 -0
  117. package/src/components/service/comprehensive-query/util/feature/feature-edit.js +50 -0
  118. package/src/components/service/comprehensive-query/util/feature/feature-geojson.js +100 -0
  119. package/src/components/service/comprehensive-query/util/feature/feature-query.js +723 -0
  120. package/src/components/service/comprehensive-query/util/feature/feature.js +1 -0
  121. package/src/components/service/comprehensive-query/util/feature/index.js +9 -0
  122. package/src/components/service/comprehensive-query/util/objects/geometry.js +58 -0
  123. package/src/components/Overlay/Mapv.vue +0 -142
  124. package/src/components/Overlay/MapvHeater.vue +0 -98
@@ -0,0 +1,487 @@
1
+ <template>
2
+ <div>
3
+ <mapgis-3d-marker-set-pro
4
+ :vue-key="vueKey"
5
+ :markers="markers"
6
+ @mouseenter="mouseEnterEvent"
7
+ @mouseleave="mouseLeaveEvent"
8
+ @popupload="popupLoad"
9
+ >
10
+ <template slot="popup" slot-scope="slotProps">
11
+ <slot name="popup" v-bind="slotProps"></slot>
12
+ </template>
13
+ </mapgis-3d-marker-set-pro>
14
+ </div>
15
+ </template>
16
+
17
+ <script>
18
+ import { Style } from "@mapgis/webclient-es6-service";
19
+ import VueOptions from "../../Base/Vue/VueOptions";
20
+ import Mapgis3dMarkerSetPro from "./Marker3dSetPro.vue";
21
+ import * as turfjs from "@turf/turf";
22
+
23
+ const { MarkerStyle, LineStyle, PointStyle, FillStyle } = Style;
24
+ const DefaultActiveImagePlotting =
25
+ "data:image/png;base64,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";
26
+ const DefaultInactiveImagePlotting =
27
+ "data:image/png;base64,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";
28
+
29
+ export default {
30
+ name: "mapgis-3d-dynamic-marker-layer",
31
+ components: { Mapgis3dMarkerSetPro },
32
+ inject: ["Cesium", "CesiumZondy", "webGlobe"],
33
+ props: {
34
+ ...VueOptions,
35
+ data: {
36
+ type: [Object, String],
37
+ required: true
38
+ },
39
+ layerStyle: {
40
+ type: Object,
41
+ default: () => {
42
+ return new MarkerStyle({
43
+ symbol: DefaultInactiveImagePlotting
44
+ });
45
+ }
46
+ },
47
+ highlight: {
48
+ type: Boolean,
49
+ default: true
50
+ },
51
+ highlightStyle: {
52
+ type: Object,
53
+ default: () => {
54
+ return {
55
+ enableHoverMarker: true,
56
+ enableHoverFeature: true,
57
+ marker: new MarkerStyle({
58
+ symbol: DefaultActiveImagePlotting
59
+ }),
60
+ point: new PointStyle(),
61
+ line: new LineStyle(),
62
+ polygon: new FillStyle()
63
+ };
64
+ }
65
+ },
66
+ idField: {
67
+ type: String,
68
+ default: "fid"
69
+ },
70
+ selects: {
71
+ type: Array,
72
+ default: () => []
73
+ },
74
+ filterWithMap: {
75
+ type: Boolean,
76
+ default: false
77
+ },
78
+ fitBound: {
79
+ type: Object,
80
+ default: () => {
81
+ return {};
82
+ }
83
+ }
84
+ },
85
+ data() {
86
+ return {
87
+ markers: [],
88
+ currentLayer: null
89
+ };
90
+ },
91
+ watch: {
92
+ data: {
93
+ handler(next) {
94
+ // this.parseData(next);
95
+ this.unmount();
96
+ this.mount();
97
+ },
98
+ deep: true
99
+ },
100
+ selects: {
101
+ handler(markers, prevMarkers = []) {
102
+ prevMarkers.forEach(this.onClearHighlightFeature);
103
+ markers.forEach(this.onHighlightFeature);
104
+ }
105
+ },
106
+ fitBound(nV) {
107
+ if (nV) {
108
+ this.zoomTo(nV);
109
+ }
110
+ },
111
+ selectionBound(nV) {
112
+ this.zoomOrPanTo(nV);
113
+ },
114
+ center(nV) {
115
+ this.zoomToCartesian3(nV[0], nV[1]);
116
+ }
117
+ },
118
+ mounted() {
119
+ this.mount();
120
+ },
121
+ destroyed() {
122
+ this.unmount();
123
+ this.analysisManager = null;
124
+ },
125
+ methods: {
126
+ mount() {
127
+ this.parseData();
128
+
129
+ const vm = this;
130
+ const { CesiumZondy, vueKey, vueIndex, data } = this;
131
+ const webGlobe = this.CesiumZondy.getWebGlobe(vueKey) || this.webGlobe;
132
+ const { viewer } = webGlobe;
133
+ let analysisManager = new CesiumZondy.Manager.AnalysisManager({
134
+ viewer: viewer
135
+ });
136
+
137
+ let promise = new Cesium.GeoJsonDataSource.load(data);
138
+ promise.then(function(dataSource) {
139
+ viewer.dataSources.add(dataSource);
140
+ vm.changeColor(dataSource);
141
+ CesiumZondy.GeojsonManager.addSource(vueKey, vueIndex, dataSource, {
142
+ analysisManager: analysisManager
143
+ });
144
+ });
145
+ },
146
+ unmount() {
147
+ const { webGlobe, vueKey, vueIndex } = this;
148
+ const vm = this;
149
+ let CesiumZondy = this.CesiumZondy || window.CesiumZondy;
150
+ const { viewer } = webGlobe;
151
+ const { dataSources } = viewer;
152
+ let find = CesiumZondy.GeojsonManager.findSource(vueKey, vueIndex);
153
+ if (find) {
154
+ if (dataSources) {
155
+ dataSources.remove(find.source, true);
156
+ }
157
+ }
158
+ CesiumZondy.GeojsonManager.deleteSource(vueKey, vueIndex);
159
+ this.$emit("unload", this);
160
+ },
161
+ parseData(data) {
162
+ data = data || this.data;
163
+ const vm = this;
164
+ if (typeof data === "string") {
165
+ fetch(data)
166
+ .then(function(response) {
167
+ return response.json();
168
+ })
169
+ .then(function(resdata) {
170
+ vm.parseMarker(resdata);
171
+ });
172
+ } else {
173
+ vm.parseMarker(data);
174
+ }
175
+ },
176
+ parseMarker(geojson) {
177
+ const { idField, layerStyle } = this;
178
+ if (!geojson || !geojson.features) {
179
+ console.warn("请输入标准的GEOJSON格式,目前只支持FeatureCollection");
180
+ return;
181
+ }
182
+ let markers = geojson.features.map((f, i) => {
183
+ let coordinates = turfjs.center(f).geometry.coordinates;
184
+ let id =
185
+ f.properties && f.properties[idField] ? f.properties[idField] : i;
186
+ let marker = {
187
+ fid: id,
188
+ coordinates,
189
+ img: layerStyle.symbol,
190
+ properties: f.properties,
191
+ feature: f
192
+ };
193
+
194
+ return marker;
195
+ });
196
+ this.markers = markers;
197
+ },
198
+ getMarker(fid) {
199
+ return this.markers.find(marker => marker.fid === fid);
200
+ },
201
+ isSelectedMarker(id) {
202
+ return this.selects.findIndex(idField => idField === id) !== -1;
203
+ },
204
+ changeFilterWithMap() {
205
+ const { webGlobe } = this;
206
+ if (!this.filterWithMap) {
207
+ return;
208
+ }
209
+ const rectangle = webGlobe.viewer.camera.computeViewRectangle();
210
+ const bounds = {
211
+ xmin: (rectangle.west / Math.PI) * 180,
212
+ ymin: (rectangle.south / Math.PI) * 180,
213
+ xmax: (rectangle.east / Math.PI) * 180,
214
+ ymax: (rectangle.north / Math.PI) * 180
215
+ };
216
+ this.$emit("map-bound-change", bounds);
217
+ },
218
+ zoomToCartesian3(x, y) {
219
+ const { Cesium, webGlobe } = this;
220
+ const destination = Cesium.Cartesian3.fromDegrees(
221
+ x,
222
+ y,
223
+ webGlobe.viewer.camera.positionCartographic.height
224
+ );
225
+ webGlobe.viewer.camera.flyTo({ destination });
226
+ },
227
+ zoomTo(bound) {
228
+ const { Cesium, webGlobe } = this;
229
+ const { xmin, ymin, xmax, ymax } = bound;
230
+ const destination = new Cesium.Rectangle.fromDegrees(
231
+ xmin,
232
+ ymin,
233
+ xmax,
234
+ ymax
235
+ );
236
+ webGlobe.viewer.camera.flyTo({ destination });
237
+ },
238
+ zoomOrPanTo({ xmin, ymin, xmax, ymax }) {
239
+ const {
240
+ xmin: b_xmin,
241
+ ymin: b_ymin,
242
+ xmax: b_xmax,
243
+ ymax: b_ymax
244
+ } = this.getViewExtend();
245
+ // 先查看是否在地图范围内
246
+ if (xmin > b_xmin && ymin > b_ymin && xmax < b_xmax && ymax < b_ymax) {
247
+ return;
248
+ }
249
+ // 然后查看两个矩形的范围大小,如果选择集的范围较当前大,需要做缩放
250
+ if (xmax - xmin > b_xmax - b_xmin || ymax - ymin > b_ymax - b_ymin) {
251
+ this.zoomTo({ xmin, ymin, xmax, ymax });
252
+ } else {
253
+ this.zoomToCartesian3((xmin + xmax) / 2, (ymin + ymax) / 2);
254
+ }
255
+ },
256
+ mouseEnterEvent(e, id) {
257
+ // 高亮要素
258
+ const marker = this.getMarker(id);
259
+ const { highlightStyle } = this;
260
+ const {
261
+ enableHoverMarker = true,
262
+ enableHoverFeature = true
263
+ } = highlightStyle;
264
+
265
+ if (marker) {
266
+ enableHoverFeature && this.highlightFeature(marker);
267
+ enableHoverMarker && this.highlightMarker(marker);
268
+ }
269
+ },
270
+ mouseLeaveEvent(e, id) {
271
+ const marker = this.getMarker(id);
272
+ if (marker) {
273
+ this.clearHighlightFeature(marker);
274
+ this.clearHighlightMarker(marker);
275
+ this.stopDisplay();
276
+ }
277
+ },
278
+ popupLoad(markerId) {
279
+ this.$emit("popupload", markerId);
280
+ },
281
+ changeColor(dataSource) {
282
+ if (!dataSource) return;
283
+ const { Cesium, highlightStyle } = this;
284
+ let entities = dataSource.entities.values;
285
+ const vm = this;
286
+ const { point } = highlightStyle;
287
+ for (let i = 0; i < entities.length; i++) {
288
+ let entity = entities[i];
289
+ if (entity.billboard) {
290
+ entity.billboard.show = false;
291
+ const style = point.toCesiumStyle(Cesium);
292
+ const { material, radius, outline } = style;
293
+ entity.ellipse = new Cesium.EllipseGraphics({
294
+ semiMajorAxis: radius,
295
+ semiMinorAxis: radius,
296
+ outline: outline,
297
+ material: material
298
+ });
299
+ entity.ellipse.show = false;
300
+ } else if (entity.polyline) {
301
+ entity.polyline.show = false;
302
+ } else if (entity.polygon) {
303
+ entity.polygon.show = false;
304
+ }
305
+ }
306
+ },
307
+ getViewExtend() {
308
+ let { vueKey, webGlobe } = this;
309
+ const params = {};
310
+ webGlobe = this.CesiumZondy.getWebGlobe(vueKey) || webGlobe;
311
+ const extend = webGlobe.viewer.camera.computeViewRectangle();
312
+ if (typeof extend === "undefined") {
313
+ // 2D下会可能拾取不到坐标,extend返回undefined,所以做以下转换
314
+ const canvas = webGlobe.viewer.scene.canvas;
315
+ // canvas左上角坐标转2d坐标
316
+ const upperLeft = new this.Cesium.Cartesian2(0, 0);
317
+ // canvas右下角坐标转2d坐标
318
+ const lowerRight = new this.Cesium.Cartesian2(
319
+ canvas.clientWidth,
320
+ canvas.clientHeight
321
+ );
322
+
323
+ const ellipsoid = webGlobe.viewer.scene.globe.ellipsoid;
324
+ // 2D转3D世界坐标
325
+ const upperLeft3 = webGlobe.viewer.camera.pickEllipsoid(
326
+ upperLeft,
327
+ ellipsoid
328
+ );
329
+
330
+ // 2D转3D世界坐标
331
+ const lowerRight3 = webGlobe.viewer.camera.pickEllipsoid(
332
+ lowerRight,
333
+ ellipsoid
334
+ );
335
+
336
+ // 3D世界坐标转弧度
337
+ const upperLeftCartographic = ellipsoid.cartesianToCartographic(
338
+ upperLeft3
339
+ );
340
+ // 3D世界坐标转弧度
341
+ const lowerRightCartographic = ellipsoid.cartesianToCartographic(
342
+ lowerRight3
343
+ );
344
+
345
+ // 弧度转经纬度
346
+ const xmin = this.Cesium.Math.toDegrees(
347
+ upperLeftCartographic.longitude
348
+ );
349
+ // 弧度转经纬度
350
+ const xmax = this.Cesium.Math.toDegrees(
351
+ lowerRightCartographic.longitude
352
+ );
353
+
354
+ // 弧度转经纬度
355
+ const ymin = this.Cesium.Math.toDegrees(
356
+ lowerRightCartographic.latitude
357
+ );
358
+ // 弧度转经纬度
359
+ const ymax = this.Cesium.Math.toDegrees(upperLeftCartographic.latitude);
360
+
361
+ params.xmin = xmin;
362
+ params.xmax = xmax;
363
+ params.ymin = ymin;
364
+ params.ymax = ymax;
365
+ } else {
366
+ // 3D获取方式
367
+ params.xmax = this.Cesium.Math.toDegrees(extend.east);
368
+ params.ymax = this.Cesium.Math.toDegrees(extend.north);
369
+
370
+ params.xmin = this.Cesium.Math.toDegrees(extend.west);
371
+ params.ymin = this.Cesium.Math.toDegrees(extend.south);
372
+ }
373
+ // 返回屏幕所在经纬度范围
374
+ return params;
375
+ },
376
+ highlightFeature(marker) {
377
+ const vm = this;
378
+ const { vueKey, vueIndex } = this;
379
+ const { webGlobe, Cesium, CesiumZondy } = this;
380
+ const { layerStyle, highlightStyle, idField } = this;
381
+ const { point, line, polygon } = layerStyle;
382
+ const hpolygon = highlightStyle.polygon;
383
+ const hline = highlightStyle.line;
384
+ const hpoint = highlightStyle.point;
385
+
386
+ let find = CesiumZondy.GeojsonManager.findSource(vueKey, vueIndex);
387
+ if (!find) return;
388
+ for (let i = 0; i < find.source.entities.values.length; i++) {
389
+ let entity = find.source.entities.values[i];
390
+ if (entity.properties[idField] == marker.feature.properties.fid) {
391
+ if (entity.ellipse) {
392
+ const style = hpoint.toCesiumStyle(Cesium);
393
+ const { material, radius, outline } = style;
394
+ entity.ellipse.show = true;
395
+ entity.ellipse = new Cesium.EllipseGraphics({
396
+ semiMajorAxis: radius,
397
+ semiMinorAxis: radius,
398
+ outline: outline,
399
+ material: material
400
+ });
401
+ } else if (entity.polyline) {
402
+ const style = hline.toCesiumStyle(Cesium);
403
+ const { material, width } = style;
404
+ entity.polyline.show = true;
405
+ entity.polyline.material = material;
406
+ entity.polyline.width = width;
407
+ } else if (entity.polygon) {
408
+ const style = hpolygon.toCesiumStyle(Cesium);
409
+ const { material, outlineColor } = style;
410
+ entity.polygon.show = true;
411
+ entity.polygon.material = material;
412
+ entity.polygon.outlineColor = outlineColor;
413
+ }
414
+ } else {
415
+ if (entity.ellipse) {
416
+ entity.ellipse.show = false;
417
+ } else if (entity.polyline) {
418
+ entity.polyline.show = false;
419
+ } else if (entity.polygon) {
420
+ entity.polygon.show = false;
421
+ }
422
+ }
423
+ }
424
+ /* if (featureGeoJSON.features[0].geometry.type === "3DPolygon") {
425
+ const { source } = this.sceneController.findSource(
426
+ featureGeoJSON.features[0].properties.specialLayerId
427
+ );
428
+ if (source && source.length > 0) {
429
+ this.stopDisplay();
430
+ this.currentLayer = [source[0]];
431
+ const idList = [featureGeoJSON.features[0].properties.FID];
432
+ const options = {
433
+ // 高亮颜色
434
+ color: new this.Cesium.Color.fromCssColorString(
435
+ this.highlightStyle.feature.reg.color
436
+ ),
437
+ // 高亮模式:REPLACE为替换
438
+ colorBlendMode: this.Cesium.Cesium3DTileColorBlendMode.REPLACE
439
+ };
440
+ // 开始闪烁查找到的模型
441
+ this.analysisManager.startCustomDisplay(
442
+ this.currentLayer,
443
+ idList,
444
+ options
445
+ );
446
+ }
447
+ } */
448
+ },
449
+ stopDisplay() {
450
+ if (this.currentLayer) {
451
+ this.analysisManager.stopCustomDisplay(this.currentLayer);
452
+ this.currentLayer = null;
453
+ }
454
+ },
455
+ clearHighlightFeature(marker) {
456
+ const { CesiumZondy, vueKey, vueIndex, layerStyle } = this;
457
+ let dataSource = CesiumZondy.GeojsonManager.findSource(vueKey, vueIndex);
458
+ this.changeColor(dataSource.source);
459
+ },
460
+ highlightMarker(marker) {
461
+ marker.img = this.highlightStyle.marker.symbol;
462
+ },
463
+ clearHighlightMarker(marker) {
464
+ if (!this.isSelectedMarker(marker.fid)) {
465
+ marker.img = this.layerStyle.symbol;
466
+ }
467
+ },
468
+ onClearHighlightFeature(fid) {
469
+ const marker = this.getMarker(fid);
470
+ this.clearHighlightMarker(marker);
471
+ // this.stopDisplay();
472
+ },
473
+ onHighlightFeature(fid) {
474
+ const marker = this.getMarker(fid);
475
+ let bbox = turfjs.bbox(marker.feature);
476
+ let bound = {
477
+ xmin: bbox[0],
478
+ ymin: bbox[1],
479
+ xmax: bbox[2],
480
+ ymax: bbox[3]
481
+ };
482
+ this.zoomOrPanTo(bound);
483
+ this.highlightMarker(marker);
484
+ }
485
+ }
486
+ };
487
+ </script>
@@ -0,0 +1,196 @@
1
+ <template>
2
+ <mapgis-3d-marker
3
+ :longitude="popupPosition.longitude"
4
+ :latitude="popupPosition.latitude"
5
+ :height="popupPosition.height"
6
+ :iconUrl="img"
7
+ :fid="marker.fid"
8
+ :changeEvent="changeEvent"
9
+ :farDist="200000000"
10
+ @mouseEnter="mouseOver"
11
+ @mouseLeave="mouseOut"
12
+ >
13
+ <mapgis-3d-popup
14
+ :vue-key="vueKey"
15
+ :position="{
16
+ longitude: popupPosition.longitude,
17
+ latitude: popupPosition.latitude,
18
+ height: popupPosition.height
19
+ }"
20
+ :visible="showPopup"
21
+ @change="changePopup"
22
+ v-on:load="bindEvent"
23
+ :forceRender="true"
24
+ >
25
+ <div slot="default">
26
+ <slot
27
+ name="popup"
28
+ :marker="marker"
29
+ :field-configs="fieldConfigs"
30
+ :property-keys="propertyKeys"
31
+ >
32
+ <mapgis-ui-list
33
+ item-layout="horizontal"
34
+ :data-source="propertyKeys"
35
+ size="small"
36
+ class="table-marker"
37
+ >
38
+ <mapgis-ui-list-item
39
+ slot="renderItem"
40
+ slot-scope="item"
41
+ class="table-marker-item"
42
+ >
43
+ <div style="width: 130px" :title="propertyName(item)">
44
+ {{ propertyName(item) }}
45
+ </div>
46
+ <div style="width: 170px" :title="marker.properties[item]">
47
+ {{ marker.properties[item] }}
48
+ </div>
49
+ </mapgis-ui-list-item>
50
+ </mapgis-ui-list>
51
+ </slot>
52
+ </div>
53
+ </mapgis-3d-popup>
54
+ </mapgis-3d-marker>
55
+ </template>
56
+
57
+ <script>
58
+ /**
59
+ * cesium标注,弹出框使用@mapgis/webclient-vue-cesium里的popup
60
+ */
61
+ export default {
62
+ name: "mapgis-3d-marker-pro",
63
+ inject: ["Cesium", "CesiumZondy", "webGlobe"],
64
+ props: {
65
+ vueKey: String,
66
+ marker: {
67
+ type: Object,
68
+ required: true
69
+ },
70
+ fieldConfigs: {
71
+ type: Array,
72
+ required: false,
73
+ default: () => []
74
+ },
75
+ // 当前显示弹出框的标注id
76
+ currentMarkerId: {
77
+ type: String,
78
+ required: false
79
+ }
80
+ },
81
+ data() {
82
+ return {
83
+ showPopup: false,
84
+ entityNames: []
85
+ };
86
+ },
87
+ computed: {
88
+ img() {
89
+ return this.marker.img;
90
+ },
91
+ popupPosition() {
92
+ if (!this.marker) {
93
+ return {};
94
+ }
95
+ const { coordinates } = this.marker;
96
+ const height = coordinates.length > 2 ? Number(coordinates[2]) : 0;
97
+ const position = {
98
+ longitude: Number(coordinates[0]),
99
+ latitude: Number(coordinates[1]),
100
+ height: height
101
+ };
102
+ return position;
103
+ },
104
+ // 根据filedConfigs做一个过滤,去除不可见的
105
+ propertyKeys() {
106
+ const keys = Object.keys(this.marker.properties);
107
+ return keys.filter(key => {
108
+ const config = this.fieldConfigs.find(config => config.name === key);
109
+
110
+ if (
111
+ config &&
112
+ Object.hasOwnProperty.call(config, "visible") &&
113
+ !config.visible
114
+ ) {
115
+ return false;
116
+ }
117
+
118
+ return true;
119
+ });
120
+ },
121
+ propertyName() {
122
+ return function(key) {
123
+ const config = this.fieldConfigs.find(config => config.name === key);
124
+
125
+ if (config && Object.hasOwnProperty.call(config, "title")) {
126
+ return config.title;
127
+ }
128
+
129
+ return key;
130
+ };
131
+ }
132
+ },
133
+ watch: {
134
+ // 更换图片,更换地图上的标注
135
+ img: {
136
+ deep: true,
137
+ handler() {
138
+ this.updateMarker();
139
+ }
140
+ },
141
+ currentMarkerId: {
142
+ deep: true,
143
+ immediate: true,
144
+ handler() {
145
+ // 当前显示弹出框的标注与组件内的id不一致时,隐藏弹出框
146
+ if (this.currentMarkerId !== this.marker.fid) {
147
+ this.showPopup = false;
148
+ }
149
+ }
150
+ }
151
+ },
152
+ mounted() {
153
+ const webGlobe = this.CesiumZondy.getWebGlobe(this.vueKey) || this.webGlobe;
154
+ this.updateMarker();
155
+ },
156
+ beforeDestroy() {},
157
+ methods: {
158
+ changePopup(val) {
159
+ this.showPopup = val;
160
+ if (!val) {
161
+ this.$emit("change", "");
162
+ }
163
+ },
164
+ bindEvent() {
165
+ this.$emit("popupload", this.marker.fid);
166
+ },
167
+ updateMarker() {
168
+ /* let marker = { ...this.marker };
169
+ marker.name = marker.fid;
170
+ marker.center = marker.coordinates; */
171
+ },
172
+ changeEvent(enable) {
173
+ this.showPopup = enable;
174
+ },
175
+ mouseOver(event) {
176
+ const { changeEvent, fid } = event;
177
+ if (changeEvent) {
178
+ changeEvent(true);
179
+ } else {
180
+ this.showPopup = true;
181
+ }
182
+ this.$emit("marker-id", fid);
183
+ this.$emit("mouseenter", event, fid);
184
+ },
185
+ mouseOut(event) {
186
+ const { changeEvent, fid } = event;
187
+ if (changeEvent) {
188
+ changeEvent(false);
189
+ } else {
190
+ this.showPopup = false;
191
+ }
192
+ this.$emit("mouseleave", event, fid);
193
+ }
194
+ }
195
+ };
196
+ </script>