@vtx/cs-map 1.0.5 → 1.0.7

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 (110) hide show
  1. package/README.md +202 -202
  2. package/lib/_util/Provider.js +14 -0
  3. package/lib/_util/Provider.js.map +1 -0
  4. package/lib/_util/filterSpecialCharacters.js +6 -6
  5. package/lib/_util/filterSpecialCharacters.js.map +1 -1
  6. package/lib/_util/getComponentProps.js.map +1 -1
  7. package/lib/_util/getCookie.js +4 -4
  8. package/lib/_util/getCookie.js.map +1 -1
  9. package/lib/_util/getDefaultMapInfo.js.map +1 -1
  10. package/lib/_util/getSystemInfo.js.map +1 -1
  11. package/lib/_util/getToken.js.map +1 -1
  12. package/lib/_util/getUrlParam.js.map +1 -1
  13. package/lib/_util/http.js +18 -18
  14. package/lib/_util/http.js.map +1 -1
  15. package/lib/_util/isFunction.js.map +1 -1
  16. package/lib/_util/isObject.js.map +1 -1
  17. package/lib/_util/layer.js +20 -21
  18. package/lib/_util/layer.js.map +1 -1
  19. package/lib/_util/mapTool.js +35 -35
  20. package/lib/_util/mapTool.js.map +1 -1
  21. package/lib/_util/setCookie.js +4 -4
  22. package/lib/_util/setCookie.js.map +1 -1
  23. package/lib/_util/transformRgb.js.map +1 -1
  24. package/lib/_util/useColSize.js.map +1 -1
  25. package/lib/_util/useInterval.js.map +1 -1
  26. package/lib/_util/useProps.js +15 -0
  27. package/lib/_util/useProps.js.map +1 -0
  28. package/lib/_util/useSet.js.map +1 -1
  29. package/lib/config.js.map +1 -1
  30. package/lib/events/index.js.map +1 -1
  31. package/lib/feature-layer/FeatureLayer.js +7 -4
  32. package/lib/feature-layer/FeatureLayer.js.map +1 -1
  33. package/lib/feature-layer/createFeatureCollection.js +11 -11
  34. package/lib/feature-layer/createFeatureCollection.js.map +1 -1
  35. package/lib/feature-layer/index.js +15 -22
  36. package/lib/feature-layer/index.js.map +1 -1
  37. package/lib/feature-layer/style/css.js.map +1 -1
  38. package/lib/feature-layer/style/index.js.map +1 -1
  39. package/lib/image-layer/ImageLayer.js +87 -0
  40. package/lib/image-layer/ImageLayer.js.map +1 -0
  41. package/lib/image-layer/index.js +58 -0
  42. package/lib/image-layer/index.js.map +1 -0
  43. package/lib/image-layer/style/css.js +4 -0
  44. package/lib/image-layer/style/css.js.map +1 -0
  45. package/lib/image-layer/style/index.css +0 -0
  46. package/lib/image-layer/style/index.js +4 -0
  47. package/lib/image-layer/style/index.js.map +1 -0
  48. package/lib/image-layer/style/index.less +0 -0
  49. package/lib/index.js +7 -0
  50. package/lib/index.js.map +1 -1
  51. package/lib/map/InfoTool/index.css +55 -0
  52. package/lib/map/InfoTool/index.js +247 -0
  53. package/lib/map/InfoTool/index.js.map +1 -0
  54. package/lib/map/InfoTool/index.less +46 -0
  55. package/lib/map/InfoTool/util.js +113 -0
  56. package/lib/map/InfoTool/util.js.map +1 -0
  57. package/lib/map/InfoWindow.js +29 -19
  58. package/lib/map/InfoWindow.js.map +1 -1
  59. package/lib/map/Popup.js +128 -80
  60. package/lib/map/Popup.js.map +1 -1
  61. package/lib/map/base/imagery/amap/AmapImageryProvider.js.map +1 -1
  62. package/lib/map/base/imagery/amap/AmapMercatorTilingScheme.js.map +1 -1
  63. package/lib/map/base/imagery/baidu/BaiduImageryProvider.js.map +1 -1
  64. package/lib/map/base/imagery/baidu/BaiduMercatorProjection.js +77 -77
  65. package/lib/map/base/imagery/baidu/BaiduMercatorProjection.js.map +1 -1
  66. package/lib/map/base/imagery/baidu/BaiduMercatorTilingScheme.js +13 -13
  67. package/lib/map/base/imagery/baidu/BaiduMercatorTilingScheme.js.map +1 -1
  68. package/lib/map/base/imagery/geoq/GeoQImageryProvider.js.map +1 -1
  69. package/lib/map/base/imagery/google/GoogleImageryProvider.js.map +1 -1
  70. package/lib/map/base/imagery/tdt/TdtImageryProvider.js.map +1 -1
  71. package/lib/map/base/imagery/tencent/TencentImageryProvider.js.map +1 -1
  72. package/lib/map/base/imagery/transform/AmapMercatorTilingScheme.js.map +1 -1
  73. package/lib/map/base/imagery/transform/CoordTransform.js +42 -42
  74. package/lib/map/base/imagery/transform/CoordTransform.js.map +1 -1
  75. package/lib/map/base/index.js.map +1 -1
  76. package/lib/map/index.js +239 -77
  77. package/lib/map/index.js.map +1 -1
  78. package/lib/map/material/AroundPoint.js.map +1 -1
  79. package/lib/map/material/ODLineLayer.js.map +1 -1
  80. package/lib/map/material/PolylineTrailLinkMaterialProperty.js.map +1 -1
  81. package/lib/map/material/PolylineTrailMaterialProperty.js.map +1 -1
  82. package/lib/map/material/TilesBuilding.js.map +1 -1
  83. package/lib/map/material/index.js.map +1 -1
  84. package/lib/map/style/css.js.map +1 -1
  85. package/lib/map/style/index.css +61 -9
  86. package/lib/map/style/index.js.map +1 -1
  87. package/lib/map/style/index.less +132 -77
  88. package/lib/marker/Marker.js.map +1 -1
  89. package/lib/marker/index.js +6 -4
  90. package/lib/marker/index.js.map +1 -1
  91. package/lib/point/Point.js.map +1 -1
  92. package/lib/point/index.js +6 -4
  93. package/lib/point/index.js.map +1 -1
  94. package/lib/polygon/Polygon.js.map +1 -1
  95. package/lib/polygon/index.js +6 -4
  96. package/lib/polygon/index.js.map +1 -1
  97. package/lib/polyline/Polyline.js.map +1 -1
  98. package/lib/polyline/index.js +6 -4
  99. package/lib/polyline/index.js.map +1 -1
  100. package/lib/renderer/index.js +7 -7
  101. package/lib/renderer/index.js.map +1 -1
  102. package/lib/renderer/style/css.js.map +1 -1
  103. package/lib/renderer/style/index.js.map +1 -1
  104. package/lib/style/index.less +2 -2
  105. package/lib/style/themes/compact.less +1 -1
  106. package/lib/style/themes/dark.less +9 -9
  107. package/lib/style/themes/default.less +7 -7
  108. package/lib/style/themes/index.less +1 -1
  109. package/lib/style/themes/variable.less +5 -5
  110. package/package.json +121 -121
@@ -0,0 +1,55 @@
1
+ .helsing-three-plugins-infotool {
2
+ display: none;
3
+ -webkit-box-orient: vertical;
4
+ -webkit-box-direction: reverse;
5
+ -ms-flex-direction: column-reverse;
6
+ flex-direction: column-reverse;
7
+ position: fixed;
8
+ top: 0;
9
+ left: 0;
10
+ min-width: 100px;
11
+ height: 250px;
12
+ -webkit-user-select: none;
13
+ -moz-user-select: none;
14
+ -ms-user-select: none;
15
+ user-select: none;
16
+ pointer-events: none;
17
+ }
18
+ .helsing-three-plugins-infotool > div:nth-child(1) {
19
+ left: 0;
20
+ width: 40px;
21
+ height: 0;
22
+ bottom: 0;
23
+ }
24
+ .helsing-three-plugins-infotool > div:nth-child(2) {
25
+ opacity: 0;
26
+ -webkit-box-shadow: 0 0 8px 0 rgba(0, 170, 255, 0.6) inset;
27
+ box-shadow: 0 0 8px 0 rgba(0, 170, 255, 0.6) inset;
28
+ padding: 20px;
29
+ -webkit-user-select: text;
30
+ -moz-user-select: text;
31
+ -ms-user-select: text;
32
+ user-select: text;
33
+ pointer-events: auto;
34
+ }
35
+ .element {
36
+ position: absolute;
37
+ background: rgba(2, 24, 45, 0.92);
38
+ border: 1px solid #2c69a6;
39
+ border-radius: 10px;
40
+ -webkit-box-shadow: 0px 0px 10px 2px rgba(24, 144, 255, 0.35) inset;
41
+ box-shadow: 0px 0px 10px 2px rgba(24, 144, 255, 0.35) inset;
42
+ height: 100px;
43
+ width: 300px;
44
+ }
45
+ .tooltip-arrow {
46
+ position: absolute;
47
+ left: 100px;
48
+ bottom: -20px;
49
+ width: 0px;
50
+ height: 0px;
51
+ border-bottom: 10px solid transparent;
52
+ border-top: 10px solid #02182d;
53
+ border-right: 10px solid transparent;
54
+ border-left: 10px solid transparent;
55
+ }
@@ -0,0 +1,247 @@
1
+ "use strict";
2
+
3
+ function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); }
4
+ Object.defineProperty(exports, "__esModule", {
5
+ value: true
6
+ });
7
+ exports["default"] = void 0;
8
+ var _cesium = require("cesium");
9
+ require("./index.less");
10
+ var _util = _interopRequireDefault(require("./util"));
11
+ var _class;
12
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
13
+ function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
14
+ function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, _toPropertyKey(descriptor.key), descriptor); } }
15
+ function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, "prototype", { writable: false }); return Constructor; }
16
+ function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
17
+ function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return _typeof(key) === "symbol" ? key : String(key); }
18
+ function _toPrimitive(input, hint) { if (_typeof(input) !== "object" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || "default"); if (_typeof(res) !== "object") return res; throw new TypeError("@@toPrimitive must return a primitive value."); } return (hint === "string" ? String : Number)(input); }
19
+ function _classPrivateFieldInitSpec(obj, privateMap, value) { _checkPrivateRedeclaration(obj, privateMap); privateMap.set(obj, value); }
20
+ function _checkPrivateRedeclaration(obj, privateCollection) { if (privateCollection.has(obj)) { throw new TypeError("Cannot initialize the same private elements twice on an object"); } }
21
+ function _classPrivateFieldGet(receiver, privateMap) { var descriptor = _classExtractFieldDescriptor(receiver, privateMap, "get"); return _classApplyDescriptorGet(receiver, descriptor); }
22
+ function _classApplyDescriptorGet(receiver, descriptor) { if (descriptor.get) { return descriptor.get.call(receiver); } return descriptor.value; }
23
+ function _classPrivateFieldSet(receiver, privateMap, value) { var descriptor = _classExtractFieldDescriptor(receiver, privateMap, "set"); _classApplyDescriptorSet(receiver, descriptor, value); return value; }
24
+ function _classExtractFieldDescriptor(receiver, privateMap, action) { if (!privateMap.has(receiver)) { throw new TypeError("attempted to " + action + " private field on non-instance"); } return privateMap.get(receiver); }
25
+ function _classApplyDescriptorSet(receiver, descriptor, value) { if (descriptor.set) { descriptor.set.call(receiver, value); } else { if (!descriptor.writable) { throw new TypeError("attempted to set read only private field"); } descriptor.value = value; } }
26
+ function _classStaticPrivateMethodGet(receiver, classConstructor, method) { _classCheckPrivateStaticAccess(receiver, classConstructor); return method; }
27
+ function _classCheckPrivateStaticAccess(receiver, classConstructor) { if (receiver !== classConstructor) { throw new TypeError("Private static access of wrong provenance"); } }
28
+ /**
29
+ * 信息工具。
30
+ *
31
+ * @alias InfoTool
32
+ * @constructor
33
+ * @param {viewer} viewer Cesium视窗。
34
+ */
35
+ var _element = /*#__PURE__*/new WeakMap();
36
+ var InfoTool = /*#__PURE__*/function () {
37
+ function InfoTool(options) {
38
+ _classCallCheck(this, InfoTool);
39
+ _classPrivateFieldInitSpec(this, _element, {
40
+ writable: true,
41
+ value: void 0
42
+ });
43
+ _defineProperty(this, "viewer", void 0);
44
+ this.viewer = options.map;
45
+ // 在Cesium容器中添加元素
46
+ _classPrivateFieldSet(this, _element, document.createElement('div'));
47
+ }
48
+
49
+ /**
50
+ * 添加。
51
+ * @param {Object} options 选项。
52
+ * @param {Element} options.element 弹窗元素。
53
+ * @param {Cartesian2|Cartesian3} options.position 点击位置。
54
+ * @param {Cesium3DTileFeature} [options.inputFeature] 模型要素。
55
+ * @param {String} options.type 类型(默认值为default,即任意点击模式;如果设置为info,即信息模式,只有点击Feature才会响应)。
56
+ * @param {String} options.content 内容(只有类型为default时才起作用)。
57
+ * @param {Function} callback 回调函数。
58
+ */
59
+ _createClass(InfoTool, [{
60
+ key: "add",
61
+ value: function add(options) {
62
+ var callback = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : undefined;
63
+ this.element = options.element;
64
+ // 判断参数为空返回
65
+ if (!options) {
66
+ return;
67
+ }
68
+ // 点
69
+ var position, cartesian2d, cartesian3d, inputFeature;
70
+ if (options instanceof _cesium.Cesium3DTileFeature) {
71
+ inputFeature = options;
72
+ options = {};
73
+ } else {
74
+ if (options instanceof _cesium.Cartesian2 || options instanceof _cesium.Cartesian3) {
75
+ position = options;
76
+ options = {};
77
+ } else {
78
+ position = options.position;
79
+ inputFeature = options.inputFeature;
80
+ }
81
+ // 判断点位为空返回
82
+ if (!position) {
83
+ return;
84
+ }
85
+ if (position instanceof _cesium.Cartesian2) {
86
+ // 二维转三维
87
+ // 如果支持拾取模型则取模型值
88
+ cartesian3d = this.viewer.scene.pickPositionSupported && (0, _cesium.defined)(this.viewer.scene.pick(options.position)) ? this.viewer.scene.pickPosition(position) : this.viewer.camera.pickEllipsoid(position, this.viewer.scene.globe.ellipsoid);
89
+ cartesian2d = position;
90
+ } else {
91
+ cartesian3d = position;
92
+ cartesian2d = _cesium.SceneTransforms.wgs84ToWindowCoordinates(this.viewer.scene, cartesian3d);
93
+ }
94
+ // 判断点位为空返回
95
+ if (!cartesian3d) {
96
+ return;
97
+ }
98
+ }
99
+ var that = this;
100
+
101
+ // 1.组织信息
102
+ var info = '';
103
+ if (options.type === 'info') {
104
+ // 拾取要素
105
+ var feature = inputFeature || this.viewer.scene.pick(cartesian2d);
106
+ // 判断拾取要素为空返回
107
+ if (!(0, _cesium.defined)(feature)) {
108
+ this.remove();
109
+ return;
110
+ }
111
+ if (feature instanceof _cesium.Cesium3DTileFeature) {
112
+ // 3dtiles
113
+ var propertyNames = feature.getPropertyNames();
114
+ var length = propertyNames.length;
115
+ for (var i = 0; i < length; ++i) {
116
+ var propertyName = propertyNames[i];
117
+ info += '"' + (propertyName + '": "' + feature.getProperty(propertyName)) + '",\n';
118
+ }
119
+ } else if (feature) {
120
+ // Entity
121
+ var properties = feature.properties;
122
+ if (properties) {
123
+ var _propertyNames = properties._propertyNames;
124
+ var _length = _propertyNames.length;
125
+ for (var _i = 0; _i < _length; ++_i) {
126
+ var _propertyName = _propertyNames[_i];
127
+ info += '"' + (_propertyName + '": "' + properties[_propertyName]._value) + '",\n';
128
+ }
129
+ }
130
+ }
131
+ } else {
132
+ options.content && (info = options.content);
133
+ }
134
+
135
+ // 2.生成特效
136
+ // 添加之前先移除
137
+ this.remove();
138
+ // if (!info) {
139
+ // return;
140
+ // }
141
+ options.position = cartesian3d;
142
+ options.element = options.element || _classPrivateFieldGet(this, _element);
143
+ _classStaticPrivateMethodGet(InfoTool, InfoTool, _createInfoTool).call(InfoTool, this.viewer, options, function () {
144
+ _util["default"].setInnerText(options.element, info);
145
+ typeof callback === 'function' && callback();
146
+ });
147
+ }
148
+
149
+ /**
150
+ * 移除。
151
+ */
152
+ }, {
153
+ key: "remove",
154
+ value: function remove() {
155
+ var entityId = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : undefined;
156
+ _util["default"].setCss(this.element, 'opacity', '0');
157
+ _util["default"].setCss(this.element, 'z-index', '-1');
158
+ _util["default"].setCss(_classPrivateFieldGet(this, _element), 'opacity', '0');
159
+ }
160
+ }]);
161
+ return InfoTool;
162
+ }();
163
+ _class = InfoTool;
164
+ /**
165
+ * 创建一个动态实体弹窗。
166
+ *
167
+ * @param {viewer} viewer Cesium视窗。
168
+ * @param {Number} options 选项。
169
+ * @param {Cartesian3} options.position 弹出位置。
170
+ * @param {HTMLElement} options.element 弹出窗元素容器。
171
+ * @param {Function} callback 回调函数。
172
+ * @ignore
173
+ */
174
+ function _createInfoTool(viewer, options) {
175
+ var callback = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : undefined;
176
+ var cartographic = _cesium.Cartographic.fromCartesian(options.position);
177
+ var lon = _cesium.Math.toDegrees(cartographic.longitude); //.toFixed(5);
178
+ var lat = _cesium.Math.toDegrees(cartographic.latitude); //.toFixed(5);
179
+
180
+ // 回调
181
+ callback();
182
+
183
+ // 添加div弹窗
184
+ setTimeout(function () {
185
+ _classStaticPrivateMethodGet(_class, _class, _popup).call(_class, viewer, options.element, lon, lat, cartographic.height,
186
+ // options.geometryType,
187
+ options.offset);
188
+ }, 100);
189
+ }
190
+ /**
191
+ * 弹出HTML元素弹窗。
192
+ * @param {viewer} viewer Cesium视窗。
193
+ * @param {Element|HTMLElement} element 弹窗元素。
194
+ * @param {Number} lon 经度。
195
+ * @param {Number} lat 纬度。
196
+ * @param {Number} height 高度。
197
+ * @ignore
198
+ */
199
+ function _popup(viewer, element, lon, lat, height, offset) {
200
+ setTimeout(function () {
201
+ // 设置元素效果
202
+ _util["default"].setCss(element, 'opacity', '1');
203
+ _util["default"].setCss(element, 'z-index', '0');
204
+ }, 100);
205
+ var divPosition = _cesium.Cartesian3.fromDegrees(lon, lat, height);
206
+ var x = (offset === null || offset === void 0 ? void 0 : offset.x) || 0;
207
+ var y = (offset === null || offset === void 0 ? void 0 : offset.y) || 0;
208
+ _classStaticPrivateMethodGet(_class, _class, _hookToGlobe).call(_class, viewer, element, divPosition, [-4 + x, -parseInt(_util["default"].getCss(element, 'offsetHeight') + y)], true);
209
+ viewer.scene.requestRender();
210
+ }
211
+ /**
212
+ * 将HTML弹窗挂接到地球上。
213
+ *
214
+ * @param {viewer} viewer Cesium视窗。
215
+ * @param {Element} element 弹窗元素。
216
+ * @param {Cartesian3} position 地图坐标点。
217
+ * @param {Array} offset 偏移。
218
+ * @param {Boolean} hideOnBehindGlobe 当元素在地球背面会自动隐藏,以减轻判断计算压力。
219
+ * @ignore
220
+ */
221
+ function _hookToGlobe(viewer, element, position, offset, hideOnBehindGlobe) {
222
+ var scene = viewer.scene,
223
+ camera = viewer.camera;
224
+ var cartesian2 = new _cesium.Cartesian2();
225
+ scene.preRender.addEventListener(function () {
226
+ var canvasPosition = scene.cartesianToCanvasCoordinates(position, cartesian2); // 笛卡尔坐标到画布坐标
227
+ if ((0, _cesium.defined)(canvasPosition)) {
228
+ _util["default"].setCss(element, 'left', parseInt(canvasPosition.x + offset[0]) + 'px');
229
+ _util["default"].setCss(element, 'top', parseInt(canvasPosition.y + offset[1]) + 'px');
230
+
231
+ // 是否在地球背面隐藏
232
+ if (hideOnBehindGlobe) {
233
+ var cameraPosition = camera.position;
234
+ var height = scene.globe.ellipsoid.cartesianToCartographic(cameraPosition).height;
235
+ height += scene.globe.ellipsoid.maximumRadius;
236
+ if (!(_cesium.Cartesian3.distance(cameraPosition, position) > height)) {
237
+ // util.setCss(element, 'display', 'flex');
238
+ } else {
239
+ _util["default"].setCss(element, 'display', 'none');
240
+ }
241
+ }
242
+ }
243
+ });
244
+ }
245
+ var _default = InfoTool;
246
+ exports["default"] = _default;
247
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","names":["_cesium","require","_util","_interopRequireDefault","_class","obj","__esModule","_classCallCheck","instance","Constructor","TypeError","_defineProperties","target","props","i","length","descriptor","enumerable","configurable","writable","Object","defineProperty","_toPropertyKey","key","_createClass","protoProps","staticProps","prototype","_defineProperty","value","arg","_toPrimitive","_typeof","String","input","hint","prim","Symbol","toPrimitive","undefined","res","call","Number","_classPrivateFieldInitSpec","privateMap","_checkPrivateRedeclaration","set","privateCollection","has","_classPrivateFieldGet","receiver","_classExtractFieldDescriptor","_classApplyDescriptorGet","get","_classPrivateFieldSet","_classApplyDescriptorSet","action","_classStaticPrivateMethodGet","classConstructor","method","_classCheckPrivateStaticAccess","_element","WeakMap","InfoTool","options","viewer","map","document","createElement","add","callback","arguments","element","position","cartesian2d","cartesian3d","inputFeature","Cesium3DTileFeature","Cartesian2","Cartesian3","scene","pickPositionSupported","defined","pick","pickPosition","camera","pickEllipsoid","globe","ellipsoid","SceneTransforms","wgs84ToWindowCoordinates","that","info","type","feature","remove","propertyNames","getPropertyNames","propertyName","getProperty","properties","_propertyNames","_value","content","_createInfoTool","util","setInnerText","entityId","setCss","cartographic","Cartographic","fromCartesian","lon","CesiumMath","toDegrees","longitude","lat","latitude","setTimeout","_popup","height","offset","divPosition","fromDegrees","x","y","_hookToGlobe","parseInt","getCss","requestRender","hideOnBehindGlobe","cartesian2","preRender","addEventListener","canvasPosition","cartesianToCanvasCoordinates","cameraPosition","cartesianToCartographic","maximumRadius","distance","_default","exports"],"sources":["map/InfoTool/index.js"],"sourcesContent":["import {\n Math as CesiumMath,\n Cesium3DTileFeature,\n Cartesian2,\n Cartesian3,\n Cartographic,\n SceneTransforms,\n defined\n} from 'cesium';\nimport './index.less';\nimport util from './util';\n\n/**\n * 信息工具。\n *\n * @alias InfoTool\n * @constructor\n * @param {viewer} viewer Cesium视窗。\n */\nclass InfoTool {\n /**\n * 创建一个动态实体弹窗。\n *\n * @param {viewer} viewer Cesium视窗。\n * @param {Number} options 选项。\n * @param {Cartesian3} options.position 弹出位置。\n * @param {HTMLElement} options.element 弹出窗元素容器。\n * @param {Function} callback 回调函数。\n * @ignore\n */\n static #createInfoTool(viewer, options, callback = undefined) {\n const cartographic = Cartographic.fromCartesian(options.position);\n const lon = CesiumMath.toDegrees(cartographic.longitude); //.toFixed(5);\n const lat = CesiumMath.toDegrees(cartographic.latitude); //.toFixed(5);\n\n // 回调\n callback();\n\n // 添加div弹窗\n setTimeout(function () {\n InfoTool.#popup(\n viewer,\n options.element,\n lon,\n lat,\n cartographic.height,\n // options.geometryType,\n options.offset,\n );\n }, 100);\n }\n\n /**\n * 弹出HTML元素弹窗。\n * @param {viewer} viewer Cesium视窗。\n * @param {Element|HTMLElement} element 弹窗元素。\n * @param {Number} lon 经度。\n * @param {Number} lat 纬度。\n * @param {Number} height 高度。\n * @ignore\n */\n static #popup(viewer, element, lon, lat, height, offset) {\n setTimeout(function () {\n // 设置元素效果\n util.setCss(element, 'opacity', '1');\n util.setCss(element, 'z-index', '0');\n }, 100);\n const divPosition = Cartesian3.fromDegrees(lon, lat, height);\n\n let x = offset?.x || 0;\n let y = offset?.y || 0;\n\n InfoTool.#hookToGlobe(\n viewer,\n element,\n divPosition,\n [-4 + x, -parseInt(util.getCss(element, 'offsetHeight') + y)],\n true,\n );\n viewer.scene.requestRender();\n }\n\n /**\n * 将HTML弹窗挂接到地球上。\n *\n * @param {viewer} viewer Cesium视窗。\n * @param {Element} element 弹窗元素。\n * @param {Cartesian3} position 地图坐标点。\n * @param {Array} offset 偏移。\n * @param {Boolean} hideOnBehindGlobe 当元素在地球背面会自动隐藏,以减轻判断计算压力。\n * @ignore\n */\n static #hookToGlobe(viewer, element, position, offset, hideOnBehindGlobe) {\n const scene = viewer.scene,\n camera = viewer.camera;\n const cartesian2 = new Cartesian2();\n scene.preRender.addEventListener(function () {\n const canvasPosition = scene.cartesianToCanvasCoordinates(position, cartesian2); // 笛卡尔坐标到画布坐标\n if (defined(canvasPosition)) {\n util.setCss(element, 'left', parseInt(canvasPosition.x + offset[0]) + 'px');\n util.setCss(element, 'top', parseInt(canvasPosition.y + offset[1]) + 'px');\n\n // 是否在地球背面隐藏\n if (hideOnBehindGlobe) {\n const cameraPosition = camera.position;\n let height = scene.globe.ellipsoid.cartesianToCartographic(cameraPosition)\n .height;\n height += scene.globe.ellipsoid.maximumRadius;\n if (!(Cartesian3.distance(cameraPosition, position) > height)) {\n // util.setCss(element, 'display', 'flex');\n } else {\n util.setCss(element, 'display', 'none');\n }\n }\n }\n });\n }\n\n #element;\n viewer;\n\n constructor(options) {\n this.viewer = options.map;\n // 在Cesium容器中添加元素\n this.#element = document.createElement('div');\n }\n\n /**\n * 添加。\n * @param {Object} options 选项。\n * @param {Element} options.element 弹窗元素。\n * @param {Cartesian2|Cartesian3} options.position 点击位置。\n * @param {Cesium3DTileFeature} [options.inputFeature] 模型要素。\n * @param {String} options.type 类型(默认值为default,即任意点击模式;如果设置为info,即信息模式,只有点击Feature才会响应)。\n * @param {String} options.content 内容(只有类型为default时才起作用)。\n * @param {Function} callback 回调函数。\n */\n add(options, callback = undefined) {\n this.element = options.element;\n // 判断参数为空返回\n if (!options) {\n return;\n }\n // 点\n let position, cartesian2d, cartesian3d, inputFeature;\n if (options instanceof Cesium3DTileFeature) {\n inputFeature = options;\n options = {};\n } else {\n if (options instanceof Cartesian2 || options instanceof Cartesian3) {\n position = options;\n options = {};\n } else {\n position = options.position;\n inputFeature = options.inputFeature;\n }\n // 判断点位为空返回\n if (!position) {\n return;\n }\n if (position instanceof Cartesian2) {\n // 二维转三维\n // 如果支持拾取模型则取模型值\n cartesian3d =\n this.viewer.scene.pickPositionSupported &&\n defined(this.viewer.scene.pick(options.position))\n ? this.viewer.scene.pickPosition(position)\n : this.viewer.camera.pickEllipsoid(\n position,\n this.viewer.scene.globe.ellipsoid,\n );\n cartesian2d = position;\n } else {\n cartesian3d = position;\n cartesian2d = SceneTransforms.wgs84ToWindowCoordinates(\n this.viewer.scene,\n cartesian3d,\n );\n }\n // 判断点位为空返回\n if (!cartesian3d) {\n return;\n }\n }\n\n const that = this;\n\n // 1.组织信息\n let info = '';\n if (options.type === 'info') {\n // 拾取要素\n const feature = inputFeature || this.viewer.scene.pick(cartesian2d);\n // 判断拾取要素为空返回\n if (!defined(feature)) {\n this.remove();\n return;\n }\n\n if (feature instanceof Cesium3DTileFeature) {\n // 3dtiles\n let propertyNames = feature.getPropertyNames();\n let length = propertyNames.length;\n for (let i = 0; i < length; ++i) {\n let propertyName = propertyNames[i];\n info +=\n '\"' + (propertyName + '\": \"' + feature.getProperty(propertyName)) + '\",\\n';\n }\n } else if (feature) {\n // Entity\n const properties = feature.properties;\n if (properties) {\n let propertyNames = properties._propertyNames;\n let length = propertyNames.length;\n for (let i = 0; i < length; ++i) {\n let propertyName = propertyNames[i];\n info +=\n '\"' +\n (propertyName + '\": \"' + properties[propertyName]._value) +\n '\",\\n';\n }\n }\n }\n } else {\n options.content && (info = options.content);\n }\n\n // 2.生成特效\n // 添加之前先移除\n this.remove();\n // if (!info) {\n // return;\n // }\n options.position = cartesian3d;\n options.element = options.element || this.#element;\n\n InfoTool.#createInfoTool(this.viewer, options, function () {\n util.setInnerText(options.element, info);\n typeof callback === 'function' && callback();\n });\n }\n\n /**\n * 移除。\n */\n remove(entityId = undefined) {\n util.setCss(this.element, 'opacity', '0');\n util.setCss(this.element, 'z-index', '-1');\n util.setCss(this.#element, 'opacity', '0');\n }\n}\n\nexport default InfoTool;\n"],"mappings":"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"}
@@ -0,0 +1,46 @@
1
+ .helsing-three-plugins-infotool {
2
+ display: none;
3
+ flex-direction: column-reverse;
4
+ position: fixed;
5
+ top: 0;
6
+ left: 0;
7
+ min-width: 100px;
8
+ height: 250px;
9
+ user-select: none;
10
+ pointer-events: none;
11
+ }
12
+ .helsing-three-plugins-infotool > div:nth-child(1) {
13
+ left: 0;
14
+ width: 40px;
15
+ height: 0;
16
+ bottom: 0;
17
+ }
18
+ .helsing-three-plugins-infotool > div:nth-child(2) {
19
+ opacity: 0;
20
+ box-shadow: 0 0 8px 0 rgba(0, 170, 255, 0.6) inset;
21
+ padding: 20px;
22
+ user-select: text;
23
+ pointer-events: auto;
24
+ }
25
+
26
+ .element {
27
+ position: absolute;
28
+ background: rgba(2, 24, 45, 0.92);
29
+ border: 1px solid #2c69a6;
30
+ border-radius: 10px;
31
+ box-shadow: 0px 0px 10px 2px rgba(24, 144, 255, 0.35) inset;
32
+ height: 100px;
33
+ width: 300px;
34
+ }
35
+
36
+ .tooltip-arrow {
37
+ position: absolute;
38
+ left: 100px;
39
+ bottom: -20px;
40
+ width: 0px;
41
+ height: 0px;
42
+ border-bottom: 10px solid transparent;
43
+ border-top: 10px solid rgba(2, 24, 45, 1);
44
+ border-right: 10px solid transparent;
45
+ border-left: 10px solid transparent;
46
+ }
@@ -0,0 +1,113 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports["default"] = void 0;
7
+ function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); }
8
+ var _default = {
9
+ /**
10
+ * 设置CSS。
11
+ *
12
+ * @param {Element|HTMLElement|String} srcNodeRef 元素ID、元素或数组。
13
+ * @param {String} property 属性。
14
+ * @param {String} value 值。
15
+ */
16
+ setCss: function setCss(srcNodeRef, property, value) {
17
+ if (srcNodeRef) {
18
+ if (srcNodeRef instanceof Array && srcNodeRef.length > 0) {
19
+ for (var i = 0; i < srcNodeRef.length; i++) {
20
+ srcNodeRef[i].style.setProperty(property, value);
21
+ }
22
+ } else if (typeof srcNodeRef === 'string') {
23
+ if (srcNodeRef.indexOf('#') < 0 && srcNodeRef.indexOf('.') < 0 && srcNodeRef.indexOf(' ') < 0) {
24
+ var element = document.getElementById(srcNodeRef);
25
+ element && element.style.setProperty(property, value);
26
+ } else {
27
+ var elements = document.querySelectorAll(srcNodeRef);
28
+ for (var _i = 0; _i < elements.length; _i++) {
29
+ elements[_i].style.setProperty(property, value);
30
+ }
31
+ }
32
+ } else if (srcNodeRef instanceof HTMLElement) {
33
+ srcNodeRef.style.setProperty(property, value);
34
+ }
35
+ }
36
+ },
37
+ /**
38
+ * 设置元素的值。
39
+ *
40
+ * @param {String|HTMLElement|Array} srcNodeRef 元素ID、元素或数组。
41
+ * @param {String} value 值。
42
+ */
43
+ setInnerText: function setInnerText(srcNodeRef, value) {
44
+ if (srcNodeRef) {
45
+ if (srcNodeRef instanceof Array && srcNodeRef.length > 0) {
46
+ var that = this;
47
+ for (var i = 0; i < srcNodeRef.length; i++) {
48
+ var element = srcNodeRef[i];
49
+ if (that.isElement(element)) {
50
+ element.innerText = value;
51
+ }
52
+ }
53
+ } else if (typeof srcNodeRef === 'string') {
54
+ if (srcNodeRef.indexOf('#') < 0 && srcNodeRef.indexOf('.') < 0 && srcNodeRef.indexOf(' ') < 0) {
55
+ var _element = document.getElementById(srcNodeRef);
56
+ _element && (_element.innerText = value);
57
+ } else {
58
+ var elements = document.querySelectorAll(srcNodeRef);
59
+ for (var _i2 = 0; _i2 < elements.length; _i2++) {
60
+ elements[_i2].innerText = value;
61
+ }
62
+ }
63
+ } else {
64
+ if (this.isElement(srcNodeRef)) {
65
+ // srcNodeRef.innerHTML = value;
66
+ }
67
+ }
68
+ }
69
+ },
70
+ /**
71
+ * 判断对象是否为元素。
72
+ *
73
+ * @param {Object} obj 对象。
74
+ * @returns {Boolean} 是或否。
75
+ */
76
+ isElement: function isElement(obj) {
77
+ return (typeof HTMLElement === "undefined" ? "undefined" : _typeof(HTMLElement)) === 'object' ? obj instanceof HTMLElement : !!(obj && _typeof(obj) === 'object' && (obj.nodeType === 1 || obj.nodeType === 9) && typeof obj.nodeName === 'string');
78
+ },
79
+ /**
80
+ * 获取全球唯一ID。
81
+ *
82
+ * @author Helsing
83
+ * @date 2019/11/21
84
+ * @param {Boolean} removeMinus 是否去除“-”号。
85
+ * @returns {String} GUID。
86
+ */
87
+ getGuid: function getGuid(removeMinus) {
88
+ var d = new Date().getTime();
89
+ var uuid = 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function (c) {
90
+ var r = (d + Math.random() * 16) % 16 | 0;
91
+ d = Math.floor(d / 16);
92
+ return (c === 'x' ? r : r & 0x3 | 0x8).toString(16);
93
+ });
94
+ if (removeMinus) {
95
+ uuid = uuid.replace(/-/g, '');
96
+ }
97
+ return uuid;
98
+ },
99
+ getCss: function getCss(element, type) {
100
+ var height = 0;
101
+ if (element) {
102
+ if (type === 'offsetHeight') {
103
+ height = (element === null || element === void 0 ? void 0 : element[type]) || 0;
104
+ } else {
105
+ var _element$style;
106
+ height = (element === null || element === void 0 || (_element$style = element.style) === null || _element$style === void 0 ? void 0 : _element$style[type]) || 0;
107
+ }
108
+ }
109
+ return height;
110
+ }
111
+ };
112
+ exports["default"] = _default;
113
+ //# sourceMappingURL=util.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"util.js","names":["setCss","srcNodeRef","property","value","Array","length","i","style","setProperty","indexOf","element","document","getElementById","elements","querySelectorAll","HTMLElement","setInnerText","that","isElement","innerText","obj","_typeof","nodeType","nodeName","getGuid","removeMinus","d","Date","getTime","uuid","replace","c","r","Math","random","floor","toString","getCss","type","height","_element$style","exports","_default"],"sources":["map/InfoTool/util.js"],"sourcesContent":["export default {\n /**\n * 设置CSS。\n *\n * @param {Element|HTMLElement|String} srcNodeRef 元素ID、元素或数组。\n * @param {String} property 属性。\n * @param {String} value 值。\n */\n setCss: function(srcNodeRef, property, value) {\n if (srcNodeRef) {\n if (srcNodeRef instanceof Array && srcNodeRef.length > 0) {\n for (let i = 0; i < srcNodeRef.length; i++) {\n srcNodeRef[i].style.setProperty(property, value);\n }\n } else if (typeof srcNodeRef === 'string') {\n if (\n srcNodeRef.indexOf('#') < 0 &&\n srcNodeRef.indexOf('.') < 0 &&\n srcNodeRef.indexOf(' ') < 0\n ) {\n const element = document.getElementById(srcNodeRef);\n element && element.style.setProperty(property, value);\n } else {\n const elements = document.querySelectorAll(srcNodeRef);\n for (let i = 0; i < elements.length; i++) {\n elements[i].style.setProperty(property, value);\n }\n }\n } else if (srcNodeRef instanceof HTMLElement) {\n srcNodeRef.style.setProperty(property, value);\n }\n }\n },\n\n /**\n * 设置元素的值。\n *\n * @param {String|HTMLElement|Array} srcNodeRef 元素ID、元素或数组。\n * @param {String} value 值。\n */\n setInnerText: function(srcNodeRef, value) {\n if (srcNodeRef) {\n if (srcNodeRef instanceof Array && srcNodeRef.length > 0) {\n const that = this;\n for (let i = 0; i < srcNodeRef.length; i++) {\n let element = srcNodeRef[i];\n if (that.isElement(element)) {\n element.innerText = value;\n }\n }\n } else if (typeof srcNodeRef === 'string') {\n if (\n srcNodeRef.indexOf('#') < 0 &&\n srcNodeRef.indexOf('.') < 0 &&\n srcNodeRef.indexOf(' ') < 0\n ) {\n let element = document.getElementById(srcNodeRef);\n element && (element.innerText = value);\n } else {\n const elements = document.querySelectorAll(srcNodeRef);\n for (let i = 0; i < elements.length; i++) {\n elements[i].innerText = value;\n }\n }\n } else {\n if (this.isElement(srcNodeRef)) {\n // srcNodeRef.innerHTML = value;\n }\n }\n }\n },\n\n /**\n * 判断对象是否为元素。\n *\n * @param {Object} obj 对象。\n * @returns {Boolean} 是或否。\n */\n isElement: function(obj) {\n return typeof HTMLElement === 'object'\n ? obj instanceof HTMLElement\n : !!(\n obj &&\n typeof obj === 'object' &&\n (obj.nodeType === 1 || obj.nodeType === 9) &&\n typeof obj.nodeName === 'string'\n );\n },\n\n /**\n * 获取全球唯一ID。\n *\n * @author Helsing\n * @date 2019/11/21\n * @param {Boolean} removeMinus 是否去除“-”号。\n * @returns {String} GUID。\n */\n getGuid: function(removeMinus) {\n let d = new Date().getTime();\n let uuid = 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function(c) {\n const r = (d + Math.random() * 16) % 16 | 0;\n d = Math.floor(d / 16);\n return (c === 'x' ? r : (r & 0x3) | 0x8).toString(16);\n });\n if (removeMinus) {\n uuid = uuid.replace(/-/g, '');\n }\n return uuid;\n },\n\n getCss: function(element, type) {\n let height = 0;\n if (element) {\n if (type === 'offsetHeight') {\n height = element?.[type] || 0;\n } else {\n height = element?.style?.[type] || 0;\n }\n }\n return height;\n },\n};\n"],"mappings":"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"}
@@ -19,44 +19,54 @@ function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o =
19
19
  function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }
20
20
  function _iterableToArrayLimit(r, l) { var t = null == r ? null : "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t["return"] && (u = t["return"](), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } }
21
21
  function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
22
- var closeHandler;
23
22
  function _default(props) {
23
+ var _props$offset, _props$offset2;
24
24
  var _useState = (0, _react.useState)({}),
25
25
  _useState2 = _slicedToArray(_useState, 2),
26
26
  position = _useState2[0],
27
27
  setPosition = _useState2[1];
28
+ var closeHandler = (0, _react.useRef)();
28
29
  (0, _react.useEffect)(function () {
29
- var c = new _cesium.Cartesian2(props.position.x, props.position.y);
30
- setPosition(c);
31
- closeHandler = props.map.scene.postRender.addEventListener(function () {
32
- var changedC = _SceneTransforms["default"].wgs84ToWindowCoordinates(props.map.scene, props.id._position._value);
33
- if (c && changedC && c.x && changedC.x && c.y && changedC.y) {
34
- if (c.x !== changedC.x || c.y !== changedC.y) {
35
- c = changedC;
36
- setPosition(changedC);
37
- }
30
+ if (props._position) {
31
+ // 先销毁已注册的事件
32
+ if (closeHandler.current) {
33
+ closeHandler.current.call();
34
+ closeHandler.current = null;
38
35
  }
39
- });
40
- }, []);
41
- var close = function close() {
42
- closeHandler && closeHandler.call();
43
- props.onClose && props.onClose();
44
- };
36
+ var c = new _cesium.Cartesian2(props.position.x, props.position.y);
37
+ setPosition(c);
38
+ closeHandler.current = props.map.scene.postRender.addEventListener(function () {
39
+ var changedC = _SceneTransforms["default"].wgs84ToWindowCoordinates(props.map.scene, props._position);
40
+ if (c && changedC && c.x && changedC.x && c.y && changedC.y) {
41
+ if (c.x !== changedC.x || c.y !== changedC.y) {
42
+ c = changedC;
43
+ setPosition(changedC);
44
+ }
45
+ }
46
+ });
47
+ }
48
+ }, [props._position]);
45
49
  (0, _react.useImperativeHandle)(props.infoWindowRef, function () {
46
50
  return {
47
51
  destory: close
48
52
  };
49
53
  });
54
+ var close = function close() {
55
+ closeHandler.current && closeHandler.current.call();
56
+ props.onClose && props.onClose();
57
+ };
50
58
  var style = {
51
59
  top: "".concat(position.y || 0, "px"),
52
- left: "".concat(position.x || 0, "px")
60
+ left: "".concat(position.x || 0, "px"),
61
+ marginTop: "".concat(((_props$offset = props.offset) === null || _props$offset === void 0 ? void 0 : _props$offset.y) || 0, "px"),
62
+ marginLeft: "".concat(((_props$offset2 = props.offset) === null || _props$offset2 === void 0 ? void 0 : _props$offset2.x) || 0, "px")
53
63
  };
54
64
  return /*#__PURE__*/_react["default"].createElement("div", {
55
- className: (0, _classnames["default"])("cesium-popup"),
65
+ className: (0, _classnames["default"])('cesium-popup'),
56
66
  style: style
57
67
  }, /*#__PURE__*/_react["default"].createElement(_icons.CloseOutlined, {
58
68
  onClick: close,
59
- className: (0, _classnames["default"])("cesium-close")
69
+ className: (0, _classnames["default"])('cesium-close')
60
70
  }), props.children);
61
71
  }
62
72
  //# sourceMappingURL=InfoWindow.js.map