@vtx/cs-map 1.0.7 → 1.0.9

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 (112) hide show
  1. package/lib/_util/EventEmitter.js +80 -0
  2. package/lib/_util/EventEmitter.js.map +1 -0
  3. package/lib/_util/getDefaultMapInfo.js +2 -2
  4. package/lib/_util/getDefaultMapInfo.js.map +1 -1
  5. package/lib/assets/colors.png +0 -0
  6. package/lib/assets/colors1.png +0 -0
  7. package/lib/cesium-tiles-layer/CesiumTilesLayer.js +57 -0
  8. package/lib/cesium-tiles-layer/CesiumTilesLayer.js.map +1 -0
  9. package/lib/cesium-tiles-layer/index.js +55 -0
  10. package/lib/cesium-tiles-layer/index.js.map +1 -0
  11. package/lib/cesium-tiles-layer/style/css.js +4 -0
  12. package/lib/cesium-tiles-layer/style/css.js.map +1 -0
  13. package/lib/cesium-tiles-layer/style/index.css +0 -0
  14. package/lib/cesium-tiles-layer/style/index.js +4 -0
  15. package/lib/cesium-tiles-layer/style/index.js.map +1 -0
  16. package/lib/cesium-tiles-layer/style/index.less +0 -0
  17. package/lib/feature-layer/FeatureLayer.js +112 -20
  18. package/lib/feature-layer/FeatureLayer.js.map +1 -1
  19. package/lib/feature-layer/createFeatureCollection.js +4 -0
  20. package/lib/feature-layer/createFeatureCollection.js.map +1 -1
  21. package/lib/feature-layer/index.js +29 -5
  22. package/lib/feature-layer/index.js.map +1 -1
  23. package/lib/group-layer/GroupLayer.js +79 -0
  24. package/lib/group-layer/GroupLayer.js.map +1 -0
  25. package/lib/group-layer/index.js +68 -0
  26. package/lib/group-layer/index.js.map +1 -0
  27. package/lib/group-layer/style/css.js +4 -0
  28. package/lib/group-layer/style/css.js.map +1 -0
  29. package/lib/group-layer/style/index.css +0 -0
  30. package/lib/group-layer/style/index.js +4 -0
  31. package/lib/group-layer/style/index.js.map +1 -0
  32. package/lib/group-layer/style/index.less +0 -0
  33. package/lib/highlight-layer/HighlightLayer.js +177 -0
  34. package/lib/highlight-layer/HighlightLayer.js.map +1 -0
  35. package/lib/highlight-layer/index.js +25 -0
  36. package/lib/highlight-layer/index.js.map +1 -0
  37. package/lib/highlight-layer/style/css.js +4 -0
  38. package/lib/highlight-layer/style/css.js.map +1 -0
  39. package/lib/highlight-layer/style/index.css +0 -0
  40. package/lib/highlight-layer/style/index.js +4 -0
  41. package/lib/highlight-layer/style/index.js.map +1 -0
  42. package/lib/highlight-layer/style/index.less +0 -0
  43. package/lib/image-layer/ImageLayer.js +59 -16
  44. package/lib/image-layer/ImageLayer.js.map +1 -1
  45. package/lib/image-layer/index.js +39 -21
  46. package/lib/image-layer/index.js.map +1 -1
  47. package/lib/index.js +37 -2
  48. package/lib/index.js.map +1 -1
  49. package/lib/line-flow-layer/LineFlowLayer.js +106 -0
  50. package/lib/line-flow-layer/LineFlowLayer.js.map +1 -0
  51. package/lib/line-flow-layer/index.js +30 -0
  52. package/lib/line-flow-layer/index.js.map +1 -0
  53. package/lib/line-flow-layer/style/css.js +4 -0
  54. package/lib/line-flow-layer/style/css.js.map +1 -0
  55. package/lib/line-flow-layer/style/index.css +0 -0
  56. package/lib/line-flow-layer/style/index.js +4 -0
  57. package/lib/line-flow-layer/style/index.js.map +1 -0
  58. package/lib/line-flow-layer/style/index.less +0 -0
  59. package/lib/map/InfoTool/index.js.map +1 -1
  60. package/lib/map/Layers.js +278 -0
  61. package/lib/map/Layers.js.map +1 -0
  62. package/lib/map/Popup.js +78 -27
  63. package/lib/map/Popup.js.map +1 -1
  64. package/lib/map/hooks/useGetMapFeatureInfoByText.js +211 -0
  65. package/lib/map/hooks/useGetMapFeatureInfoByText.js.map +1 -0
  66. package/lib/map/index.js +296 -87
  67. package/lib/map/index.js.map +1 -1
  68. package/lib/map/material/CircleRippleMaterialProperty.js +89 -0
  69. package/lib/map/material/CircleRippleMaterialProperty.js.map +1 -0
  70. package/lib/map/style/index.css +19 -4
  71. package/lib/map/style/index.less +20 -4
  72. package/lib/marker/Marker.js.map +1 -1
  73. package/lib/material/TrailPolylineMaterial.js +31 -0
  74. package/lib/material/TrailPolylineMaterial.js.map +1 -0
  75. package/lib/renderer/index.js +18 -5
  76. package/lib/renderer/index.js.map +1 -1
  77. package/lib/tools/assets/footer.png +0 -0
  78. package/lib/tools/assets/layer.png +0 -0
  79. package/lib/tools/assets/search.png +0 -0
  80. package/lib/tools/index.js +37 -0
  81. package/lib/tools/index.js.map +1 -0
  82. package/lib/tools/layer/index.js +130 -0
  83. package/lib/tools/layer/index.js.map +1 -0
  84. package/lib/tools/search/Select/index.js +56 -0
  85. package/lib/tools/search/Select/index.js.map +1 -0
  86. package/lib/tools/search/Select/style/css.js +4 -0
  87. package/lib/tools/search/Select/style/css.js.map +1 -0
  88. package/lib/tools/search/Select/style/index.css +45 -0
  89. package/lib/tools/search/Select/style/index.js +4 -0
  90. package/lib/tools/search/Select/style/index.js.map +1 -0
  91. package/lib/tools/search/Select/style/index.less +47 -0
  92. package/lib/tools/search/index.js +203 -0
  93. package/lib/tools/search/index.js.map +1 -0
  94. package/lib/tools/style/css.js +8 -0
  95. package/lib/tools/style/css.js.map +1 -0
  96. package/lib/tools/style/index.css +130 -0
  97. package/lib/tools/style/index.js +8 -0
  98. package/lib/tools/style/index.js.map +1 -0
  99. package/lib/tools/style/index.less +129 -0
  100. package/lib/tools/tools-item/index.js +50 -0
  101. package/lib/tools/tools-item/index.js.map +1 -0
  102. package/lib/trail-polyline-layer/TrailPolylineLayer.js +84 -0
  103. package/lib/trail-polyline-layer/TrailPolylineLayer.js.map +1 -0
  104. package/lib/trail-polyline-layer/index.js +28 -0
  105. package/lib/trail-polyline-layer/index.js.map +1 -0
  106. package/lib/trail-polyline-layer/style/css.js +4 -0
  107. package/lib/trail-polyline-layer/style/css.js.map +1 -0
  108. package/lib/trail-polyline-layer/style/index.css +0 -0
  109. package/lib/trail-polyline-layer/style/index.js +4 -0
  110. package/lib/trail-polyline-layer/style/index.js.map +1 -0
  111. package/lib/trail-polyline-layer/style/index.less +0 -0
  112. package/package.json +2 -2
package/lib/map/index.js CHANGED
@@ -11,15 +11,18 @@ var _cesium = require("cesium");
11
11
  require("./base");
12
12
  require("./material");
13
13
  var _AmapMercatorTilingScheme = _interopRequireDefault(require("./base/imagery/transform/AmapMercatorTilingScheme"));
14
- var _ImageLayer = _interopRequireDefault(require("../image-layer/ImageLayer"));
15
14
  var _getDefaultMapInfo2 = _interopRequireDefault(require("../_util/getDefaultMapInfo"));
16
15
  require("cesium/Build/Cesium/Widgets/widgets.css");
17
16
  var _classnames = _interopRequireDefault(require("classnames"));
18
17
  var _events = require("../events");
19
18
  var _Popup = _interopRequireDefault(require("./Popup"));
20
19
  var _Provider = _interopRequireDefault(require("../_util/Provider"));
21
- var _excluded = ["center", "dark", "zoom", "createdMap", "style", "tk"],
22
- _excluded2 = ["lng", "lat", "z"];
20
+ var _Layers = _interopRequireDefault(require("./Layers"));
21
+ var _EventEmitter = _interopRequireDefault(require("../_util/EventEmitter"));
22
+ var _useGetMapFeatureInfoByText = _interopRequireDefault(require("./hooks/useGetMapFeatureInfoByText"));
23
+ var _lodash = _interopRequireDefault(require("lodash"));
24
+ var _excluded = ["center", "dark", "zoom", "createdMap"],
25
+ _excluded2 = ["entity", "lng", "lat", "height"];
23
26
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
24
27
  function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
25
28
  function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { "default": obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj["default"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
@@ -46,7 +49,14 @@ function Map(props) {
46
49
  _props$height = props.height,
47
50
  height = _props$height === void 0 ? '100%' : _props$height,
48
51
  dark = props.dark,
49
- children = props.children;
52
+ _props$mapStyle = props.mapStyle,
53
+ mapStyle = _props$mapStyle === void 0 ? 'vec' : _props$mapStyle,
54
+ tk = props.tk,
55
+ children = props.children,
56
+ onCloseTemplateBefore = props.onCloseTemplateBefore,
57
+ onZoom = props.onZoom,
58
+ _props$onEvents = props.onEvents,
59
+ onEvents = _props$onEvents === void 0 ? {} : _props$onEvents;
50
60
  var _useState = (0, _react.useState)(false),
51
61
  _useState2 = _slicedToArray(_useState, 2),
52
62
  mapLoaded = _useState2[0],
@@ -63,17 +73,69 @@ function Map(props) {
63
73
  var mapDomRef = (0, _react.useRef)(null);
64
74
  var tipRef = (0, _react.useRef)(null);
65
75
  var popupRef = (0, _react.useRef)();
76
+ var getMapFeatureInfoByText = (0, _useGetMapFeatureInfoByText["default"])(mapRef);
66
77
  (0, _react.useEffect)(function () {
67
78
  initMap();
68
79
  }, []);
80
+ var imgLayerVisible = function imgLayerVisible() {
81
+ if (mapRef.current) {
82
+ var layers = mapRef.current.imageryLayers._layers || [];
83
+ layers.map(function (item) {
84
+ var _item$_imageryProvide;
85
+ if (['img_w', 'cia_w'].includes((_item$_imageryProvide = item._imageryProvider) === null || _item$_imageryProvide === void 0 ? void 0 : _item$_imageryProvide._layer)) {
86
+ item.show = mapStyle === 'img';
87
+ }
88
+ });
89
+ }
90
+ };
91
+ var addImageryProvider = function addImageryProvider() {
92
+ var TDT_IMG_W = "http://{s}.tianditu.gov.cn/img_w/wmts?service=wmts&request=GetTile&version=1.0.0&LAYER=img&tileMatrixSet=w&TileMatrix={TileMatrix}&TileRow={TileRow}&TileCol={TileCol}&style=default&format=tiles&tk=".concat(tk);
93
+ var TDT_CIA_W = "http://{s}.tianditu.gov.cn/cia_w/wmts?service=wmts&request=GetTile&version=1.0.0&LAYER=cia&tileMatrixSet=w&TileMatrix={TileMatrix}&TileRow={TileRow}&TileCol={TileCol}&style=default.jpg&tk=".concat(tk);
94
+ var Img = new _cesium.WebMapTileServiceImageryProvider({
95
+ //调用影响中文服务
96
+ url: TDT_IMG_W,
97
+ // url地址,换影像还是矢量,随便你喜欢
98
+ layer: 'img_w',
99
+ // WMTS请求的层名称
100
+ style: 'default',
101
+ // WMTS请求的样式名称
102
+ format: 'tiles',
103
+ // MIME类型,用于从服务器检索图像
104
+ tileMatrixSetID: 'GoogleMapsCompatible',
105
+ // 用于WMTS请求的TileMatrixSet的标识符
106
+ subdomains: ['t0', 't1', 't2', 't3', 't4', 't5', 't6', 't7'],
107
+ // 天地图8个服务器
108
+ minimumLevel: 0,
109
+ // 最小层级
110
+ maximumLevel: 18 // 最大层级
111
+ });
112
+
113
+ mapRef.current.imageryLayers.addImageryProvider(Img); // 添加到cesium图层上
114
+
115
+ var cia = new _cesium.WebMapTileServiceImageryProvider({
116
+ // 调用影响中文注记服务
117
+ url: TDT_CIA_W,
118
+ layer: 'cia_w',
119
+ style: 'default',
120
+ format: 'tiles',
121
+ tileMatrixSetID: 'GoogleMapsCompatible',
122
+ subdomains: ['t0', 't1', 't2', 't3', 't4', 't5', 't6', 't7'],
123
+ // 天地图8个服务器
124
+ minimumLevel: 0,
125
+ maximumLevel: 18
126
+ });
127
+ mapRef.current.imageryLayers.addImageryProvider(cia); // 添加到cesium图层上
128
+
129
+ imgLayerVisible();
130
+ };
131
+ (0, _react.useEffect)(function () {
132
+ imgLayerVisible();
133
+ }, [mapStyle]);
69
134
  var initMap = function initMap() {
70
135
  var center = props.center,
71
136
  dark = props.dark,
72
137
  zoom = props.zoom,
73
138
  createdMap = props.createdMap,
74
- _props$style = props.style,
75
- style = _props$style === void 0 ? 'vec' : _props$style,
76
- tk = props.tk,
77
139
  options = _objectWithoutProperties(props, _excluded);
78
140
  var _getDefaultMapInfo = (0, _getDefaultMapInfo2["default"])(),
79
141
  minZoom = _getDefaultMapInfo.minZoom,
@@ -89,6 +151,7 @@ function Map(props) {
89
151
  minZoom: minZoom && Number(minZoom) || 0,
90
152
  maxZoom: maxZoom && Number(maxZoom) || 20
91
153
  };
154
+ _cesium.Ion.defaultAccessToken = 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJqdGkiOiJhZjc0ZDQ1ZS0wNWNhLTRhMDQtODJmYy03NTcyNDcxYzgzMDUiLCJpZCI6NzE4MTQsImlhdCI6MTYzNTQ3NzgyNX0.4TrdZWPWc9_6jLeGe90bRmBPB14XptwinSewVMu1iCE';
92
155
  var map = new _cesium.Viewer(mapDomRef.current, _objectSpread({
93
156
  shouldAnimate: true,
94
157
  animation: false,
@@ -127,51 +190,131 @@ function Map(props) {
127
190
  })
128
191
  }, options));
129
192
 
193
+ // 事件订阅
194
+ map.eventEmitter = new _EventEmitter["default"]();
195
+
130
196
  // 去版权信息
131
197
  map._cesiumWidget._creditContainer.style.display = 'none'; // 隐藏cesium ion
132
198
 
133
199
  mapRef.current = map;
200
+ addImageryProvider();
134
201
 
135
- // 展示提示
136
- map.showTip = function (content) {
137
- setTip(content);
202
+ // 添加 dataSource 和 imagery 图层
203
+ map.layers = new _Layers["default"]({
204
+ map: map
205
+ });
206
+
207
+ // 图层改变的时候
208
+ map.layers.on('change', function (layers) {
209
+ onEvents.layersChange && onEvents.layersChange(layers);
210
+ map.eventEmitter.emit('layersChange', layers);
211
+ });
212
+
213
+ // 图层新增
214
+ map.layers.on('add', function (layer) {
215
+ onEvents.layersAdd && onEvents.layersAdd(layer);
216
+ map.eventEmitter.emit('layersAdd', layer);
217
+ });
218
+
219
+ // 图层移除
220
+ map.layers.on('remove', function (layer) {
221
+ onEvents.layersRemove && onEvents.layersRemove(layer);
222
+ map.eventEmitter.emit('layersRemove', layer);
223
+ });
224
+
225
+ // 图层清空
226
+ map.layers.on('clear', function () {
227
+ onEvents.layersClear && onEvents.layersClear();
228
+ map.eventEmitter.emit('layersClear');
229
+ });
230
+
231
+ // 图层展示隐藏
232
+ map.layers.on('visible', function (layer, visible) {
233
+ map.layers.onChange(); // 触发图层改变
234
+
235
+ // 图层关闭时,隐藏自身的气泡
236
+ if (!visible && map.popupRef) {
237
+ map.hideTemplate(layer);
238
+ }
239
+ onEvents.layersVisible && onEvents.layersVisible(layer, visible);
240
+ map.eventEmitter.emit('layersVisible');
241
+ });
242
+
243
+ // 图层变化
244
+ map.layersChange = function () {
245
+ map.layers.onChange();
138
246
  };
139
247
 
140
- // 隐藏提示
141
- map.hideTip = function () {
142
- setTip(null);
248
+ // 获取 layers 里面的 key 集合
249
+ map.getAllKeys = function () {
250
+ return map.layers.getAllKeys();
251
+ };
252
+
253
+ // 获取当前展示的 keys
254
+ map.getLayersShowKeys = function () {
255
+ return map.layers.getShowKeys();
256
+ };
257
+
258
+ // 获取当前隐藏的 keys
259
+ map.getLayersHiddenKeys = function () {
260
+ return map.layers.getHiddenKeys();
261
+ };
262
+
263
+ // 根据 keys 设置图层的显示,其他的隐藏
264
+ map.setLayersShowByKeys = function (_keys) {
265
+ return map.layers.setShowByKeys(_keys);
266
+ };
267
+
268
+ // 根据 keys 设置图层的隐藏,其他的显示
269
+ map.setLayersHideByKeys = function (_keys) {
270
+ return map.layers.setHideByKeys(_keys);
271
+ };
272
+
273
+ // 添加图层
274
+ map.addLayer = function (layer) {
275
+ return map.layers.addLayer(layer);
276
+ };
277
+
278
+ // 移除图层
279
+ map.removeLayer = function (layer) {
280
+ return map.layers.removeLayer(layer);
281
+ };
282
+
283
+ // 清除图层和entity
284
+ map.clearLayers = function () {
285
+ return map.layers.clearLayers();
286
+ };
287
+
288
+ // 获取 ImageLayer 图层
289
+ map.getImageLayers = function (keys) {
290
+ return map.layers.getImageLayers(keys);
291
+ };
292
+
293
+ // 获取 FeatureLayer 图层
294
+ map.getFeatureLayers = function (keys) {
295
+ return map.layers.getFeatureLayers(keys);
143
296
  };
144
297
 
145
298
  // 查找所有dataSource和imagery图层
146
299
  map.getAllLayers = function () {
147
- var _map$dataSources, _map$imageryLayers;
300
+ var _map$dataSources, _map$imageryLayers, _map$scene;
148
301
  var dataSources = (map === null || map === void 0 || (_map$dataSources = map.dataSources) === null || _map$dataSources === void 0 ? void 0 : _map$dataSources._dataSources) || [];
149
302
  var imageryLayers = (map === null || map === void 0 || (_map$imageryLayers = map.imageryLayers) === null || _map$imageryLayers === void 0 ? void 0 : _map$imageryLayers._layers) || [];
150
- return [].concat(_toConsumableArray(dataSources), _toConsumableArray(imageryLayers));
151
- };
152
-
153
- // 添加dataSource和imagery图层
154
- map.addLayer = function (layer) {
155
- if (layer instanceof _cesium.CustomDataSource) {
156
- map.dataSources.add(layer);
157
- } else if (layer instanceof _ImageLayer["default"]) {
158
- map.scene.imageryLayers.add(layer);
159
- }
303
+ var primitives = (map === null || map === void 0 || (_map$scene = map.scene) === null || _map$scene === void 0 || (_map$scene = _map$scene.primitives) === null || _map$scene === void 0 ? void 0 : _map$scene._primitives) || [];
304
+ return [].concat(_toConsumableArray(dataSources), _toConsumableArray(imageryLayers), _toConsumableArray(primitives));
160
305
  };
161
306
 
162
307
  // 根据key查找imageryLayers图层
163
- map.getImageryLayers = function (keys) {
308
+ map.getImageryLayers = function (_keys) {
164
309
  var _map$imageryLayers2;
165
- var imageryLayers = ((map === null || map === void 0 || (_map$imageryLayers2 = map.imageryLayers) === null || _map$imageryLayers2 === void 0 ? void 0 : _map$imageryLayers2._layers) || []).filter(function (layer) {
166
- if (typeof keys === 'string') {
167
- return layer.key === keys;
168
- } else if (Array.isArray(keys)) {
169
- return keys.includes(layer.key);
170
- } else {
171
- return layer;
172
- }
173
- });
174
- return imageryLayers;
310
+ var layers = (map === null || map === void 0 || (_map$imageryLayers2 = map.imageryLayers) === null || _map$imageryLayers2 === void 0 ? void 0 : _map$imageryLayers2._layers) || [];
311
+ if (_keys && layers.length) {
312
+ var keys = Array.isArray(_keys) ? _keys : [_keys];
313
+ return layers.filter(function (layer) {
314
+ return layer.key && keys.includes(layer.key);
315
+ });
316
+ }
317
+ return layers;
175
318
  };
176
319
 
177
320
  // 通过图形查询所属图层
@@ -182,6 +325,11 @@ function Map(props) {
182
325
  if (layer !== null && layer !== void 0 && layer.key && layer.key === (entity === null || entity === void 0 || (_entity$imageryLayer = entity.imageryLayer) === null || _entity$imageryLayer === void 0 ? void 0 : _entity$imageryLayer.key)) {
183
326
  return layer;
184
327
  }
328
+ } else if (layer instanceof _cesium.Primitive) {
329
+ var _entity$primitive;
330
+ if (layer !== null && layer !== void 0 && layer.key && layer.key === (entity === null || entity === void 0 || (_entity$primitive = entity.primitive) === null || _entity$primitive === void 0 ? void 0 : _entity$primitive.key)) {
331
+ return layer;
332
+ }
185
333
  } else {
186
334
  if (layer !== null && layer !== void 0 && layer.key && layer.key === (entity === null || entity === void 0 ? void 0 : entity.key)) {
187
335
  return layer;
@@ -193,6 +341,11 @@ function Map(props) {
193
341
  // 获取entity中数据
194
342
  map.getProperties = function (feature) {
195
343
  var _feature$_properties, _properties;
344
+ if (feature !== null && feature !== void 0 && feature.primitive && (feature === null || feature === void 0 ? void 0 : feature.primitive) instanceof _cesium.Primitive) {
345
+ return feature.primitive.data.find(function (item) {
346
+ return item.id === feature.id;
347
+ });
348
+ }
196
349
  var properties = (feature === null || feature === void 0 || (_feature$_properties = feature._properties) === null || _feature$_properties === void 0 ? void 0 : _feature$_properties.getValue(feature._id)) || (feature === null || feature === void 0 ? void 0 : feature.properties) || {};
197
350
  properties = ((_properties = properties) === null || _properties === void 0 ? void 0 : _properties.properties) || properties;
198
351
  return properties;
@@ -205,10 +358,24 @@ function Map(props) {
205
358
  });
206
359
  };
207
360
 
361
+ // 通过keys查询多个图层
362
+ map.getLayerByKeys = function (keys) {
363
+ return map.getAllLayers().filter(function (layer) {
364
+ return layer.key && keys.includes(layer.key);
365
+ });
366
+ };
367
+
368
+ // 通过返回值控制是否执行关闭
369
+ map.onCloseTemplateBefore = function (feature) {
370
+ if (onCloseTemplateBefore) {
371
+ return onCloseTemplateBefore(feature);
372
+ }
373
+ };
374
+
208
375
  // 根据key查找展示的图层
209
376
  map.getVisibleLayersByKeys = function (keys) {
210
377
  var layers = map.getAllLayers() || [];
211
- var _layers = layers.filter(function (layer) {
378
+ return layers.filter(function (layer) {
212
379
  if (typeof keys === 'string') {
213
380
  return layer.key === keys && layer.show;
214
381
  } else if (Array.isArray(keys)) {
@@ -217,19 +384,16 @@ function Map(props) {
217
384
  return layer.show && layer.key;
218
385
  }
219
386
  });
220
- return _layers;
221
387
  };
222
388
 
223
- // 清除图层和entity
224
- map.clearLayers = function () {
225
- var imageryLayers = map.getImageryLayers() || [];
226
- map.dataSources.removeAll();
227
- imageryLayers.map(function (layer) {
228
- if (layer !== null && layer !== void 0 && layer.key) {
229
- map.imageryLayers.remove(layer);
230
- }
231
- });
232
- map.entities.removeAll();
389
+ // 展示提示
390
+ map.showTip = function (content) {
391
+ setTip(content);
392
+ };
393
+
394
+ // 隐藏提示
395
+ map.hideTip = function () {
396
+ setTip(null);
233
397
  };
234
398
 
235
399
  // 展示看板
@@ -241,6 +405,8 @@ function Map(props) {
241
405
  map.hideTemplate = function () {
242
406
  popupRef.current.hideTemplate();
243
407
  };
408
+
409
+ // 鼠标事件控制器
244
410
  var handlePoint = new _cesium.ScreenSpaceEventHandler(map.scene.canvas);
245
411
 
246
412
  // 获取图层上的图形信息
@@ -248,10 +414,16 @@ function Map(props) {
248
414
  if (event !== null && event !== void 0 && event.position) {
249
415
  var position = event.position;
250
416
  var pick = map.scene.pick(position);
251
- return pick && pick.id;
417
+ if (_lodash["default"].isObject(pick === null || pick === void 0 ? void 0 : pick.id)) {
418
+ return pick.id;
419
+ }
420
+ return pick;
252
421
  }
253
422
  };
254
423
 
424
+ // 根据关键字获取图形信息
425
+ map.getMapFeatureInfoByText = getMapFeatureInfoByText;
426
+
255
427
  // 获取wms的图形数据
256
428
  map.pickImageryLayerFeatures = function (event) {
257
429
  if (event !== null && event !== void 0 && event.position) {
@@ -263,11 +435,16 @@ function Map(props) {
263
435
 
264
436
  // 注册事件
265
437
  (0, _events.registerEventLayer)(map, props);
438
+
439
+ // 注册地图组件事件
266
440
  function registerMapEvent(e, event) {
267
441
  if (map[event]) {
268
442
  map[event](e);
443
+ onEvents[event] && onEvents[event](e);
269
444
  }
270
445
  }
446
+
447
+ // 注册图层组件事件
271
448
  function registerEvent(feature, event) {
272
449
  if (feature) {
273
450
  var _feature$event;
@@ -286,6 +463,12 @@ function Map(props) {
286
463
  handlePoint.setInputAction(function (event) {
287
464
  registerMapEvent(event, 'onClick');
288
465
  map.hideTip();
466
+ var cartesian = map.camera.pickEllipsoid(event.position, map.scene.globe.ellipsoid); // Cartesian3对象
467
+ var cartographic = _cesium.Cartographic.fromCartesian(cartesian); // 经纬高对象
468
+ var lng = _cesium.Math.toDegrees(cartographic.longitude);
469
+ var lat = _cesium.Math.toDegrees(cartographic.latitude);
470
+ var location = [lng, lat]; // 即为经纬度数组
471
+ console.log("location:", location);
289
472
  var entity = map.pickDataSourcesFeature(event);
290
473
  var featuresPromise = map.pickImageryLayerFeatures(event);
291
474
  if (entity) {
@@ -313,11 +496,13 @@ function Map(props) {
313
496
  // 鼠标移动
314
497
  var hoverFeature;
315
498
  var getUid = function getUid(feature) {
316
- if (!feature._id) {
317
- feature._id = _cesium.Math.random();
499
+ if (feature && !feature._id) {
500
+ feature._id = window.Math.random();
318
501
  }
319
502
  return feature._id;
320
503
  };
504
+
505
+ // 鼠标移入移除
321
506
  handlePoint.setInputAction(function (event) {
322
507
  registerMapEvent(event, 'onMouseMove');
323
508
  var feature = map.pickDataSourcesFeature({
@@ -350,24 +535,55 @@ function Map(props) {
350
535
  }
351
536
  }, _cesium.ScreenSpaceEventType.MOUSE_MOVE);
352
537
 
353
- // 获取entity中数据
354
- map.getProperties = function (feature) {
355
- var _feature$_properties2, _properties2;
356
- var properties = (feature === null || feature === void 0 || (_feature$_properties2 = feature._properties) === null || _feature$_properties2 === void 0 ? void 0 : _feature$_properties2.getValue(feature._id)) || (feature === null || feature === void 0 ? void 0 : feature.properties) || {};
357
- properties = ((_properties2 = properties) === null || _properties2 === void 0 ? void 0 : _properties2.properties) || properties;
358
- return properties;
359
- };
538
+ // 层级事件
539
+ if (onZoom) {
540
+ map.camera.moveEnd.addEventListener(function () {
541
+ var viewRectangle = map.camera.computeViewRectangle();
542
+ var west = viewRectangle.west / _cesium.Math.PI * 180; // 左上方(西)
543
+ var north = viewRectangle.north / _cesium.Math.PI * 180; //右上方(北)
544
+ var east = viewRectangle.east / _cesium.Math.PI * 180; // 右下方(东)
545
+ var south = viewRectangle.south / _cesium.Math.PI * 180; // 左下方(南)
546
+ var cameraHeight = map.camera.positionCartographic.height;
547
+ onZoom && onZoom({
548
+ west: west,
549
+ north: north,
550
+ east: east,
551
+ south: south,
552
+ cameraHeight: cameraHeight,
553
+ viewRectangle: viewRectangle
554
+ });
555
+ });
556
+ }
557
+
558
+ // 动态调整视角,不传参数为默认视角,参数可以是图层、图形、数据等
360
559
  map.fitView = function (e) {
361
560
  var _ref = e || {},
362
561
  entity = _ref.entity,
363
- isZoom = _ref.isZoom,
562
+ lng = _ref.lng,
563
+ lat = _ref.lat,
364
564
  _ref$height = _ref.height,
365
- height = _ref$height === void 0 ? 50000 : _ref$height;
565
+ height = _ref$height === void 0 ? 50000 : _ref$height,
566
+ rest = _objectWithoutProperties(_ref, _excluded2);
567
+ var pitch = map.camera.pitch;
366
568
  // 判断是否点击了图形
367
569
  if (entity) {
368
- map.camera.flyTo(entity, {
369
- duration: 2
570
+ map.flyTo(entity, {
571
+ duration: 2,
572
+ offset: {
573
+ heading: _cesium.Math.toRadians(0.0),
574
+ pitch: pitch,
575
+ range: height
576
+ }
370
577
  });
578
+ } else if (lng && lat) {
579
+ map.camera.flyTo(_objectSpread({
580
+ destination: new _cesium.Cartesian3.fromDegrees(Number(lng), Number(lat), height),
581
+ orientation: {
582
+ pitch: _cesium.Math.toRadians(-88.0),
583
+ roll: 0.0
584
+ },
585
+ duration: 2
586
+ }, rest));
371
587
  } else {
372
588
  var _viewDefault$center = _slicedToArray(viewDefault.center, 3),
373
589
  x = _viewDefault$center[0],
@@ -384,27 +600,16 @@ function Map(props) {
384
600
  });
385
601
  }
386
602
  };
387
- map.flyTo = function (e) {
388
- var _ref2 = e || {},
389
- lng = _ref2.lng,
390
- lat = _ref2.lat,
391
- _ref2$z = _ref2.z,
392
- z = _ref2$z === void 0 ? 50000 : _ref2$z,
393
- rest = _objectWithoutProperties(_ref2, _excluded2);
394
- if (lng && lat) {
395
- map.camera.flyTo(_objectSpread({
396
- destination: new _cesium.Cartesian3.fromDegrees(Number(lng), Number(lat), z),
397
- orientation: {
398
- pitch: _cesium.Math.toRadians(-88.0),
399
- roll: 0.0
400
- },
401
- duration: 2
402
- }, rest));
403
- }
404
- };
603
+
604
+ // 自动调整视角
405
605
  map.fitView();
406
- createdMap && createdMap(map);
407
- setMapLoaded(true);
606
+
607
+ // 延时触发回调事件
608
+ setTimeout(function () {
609
+ createdMap && createdMap(map);
610
+ onEvents.createdMap && onEvents.createdMap(map);
611
+ setMapLoaded(true);
612
+ }, 3000);
408
613
  };
409
614
  var onMouseMove = function onMouseMove(event) {
410
615
  if (tip) {
@@ -432,13 +637,14 @@ function Map(props) {
432
637
  }, tip && tipVis && /*#__PURE__*/_react["default"].createElement("div", {
433
638
  ref: tipRef,
434
639
  className: (0, _classnames["default"])('custom-tip')
435
- }, tip)), mapLoaded && /*#__PURE__*/_react["default"].createElement(_Provider["default"], {
640
+ }, tip), mapRef.current && /*#__PURE__*/_react["default"].createElement(_Popup["default"], {
641
+ ref: popupRef,
642
+ map: mapRef.current
643
+ })), mapLoaded && /*#__PURE__*/_react["default"].createElement(_Provider["default"], {
436
644
  value: {
437
645
  map: mapRef.current
438
646
  }
439
- }, mapRef.current && /*#__PURE__*/_react["default"].createElement(_Popup["default"], {
440
- ref: popupRef
441
- }), children));
647
+ }, children));
442
648
  }
443
649
  var _default = Map;
444
650
  exports["default"] = _default;
@@ -446,12 +652,15 @@ Map.propTypes = {
446
652
  width: _propTypes["default"].oneOfType([_propTypes["default"].string, _propTypes["default"].number]),
447
653
  height: _propTypes["default"].oneOfType([_propTypes["default"].string, _propTypes["default"].number]),
448
654
  createdMap: _propTypes["default"].func,
655
+ onCloseTemplateBefore: _propTypes["default"].func,
656
+ onZoom: _propTypes["default"].func,
449
657
  center: _propTypes["default"].array,
450
658
  zoom: _propTypes["default"].number,
451
659
  minZoom: _propTypes["default"].number,
452
660
  maxZoom: _propTypes["default"].number,
453
661
  dark: _propTypes["default"].bool,
454
- style: _propTypes["default"].oneOfType(['vec', 'img']),
455
- tk: _propTypes["default"].string.isRequired
662
+ mapStyle: _propTypes["default"].oneOfType(['vec', 'img']),
663
+ tk: _propTypes["default"].string.isRequired,
664
+ onEvents: _propTypes["default"].object
456
665
  };
457
666
  //# sourceMappingURL=index.js.map