@vtx/cs-map 1.0.6 → 1.0.8
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +202 -202
- package/lib/_util/EventEmitter.js +80 -0
- package/lib/_util/EventEmitter.js.map +1 -0
- package/lib/_util/Provider.js +14 -0
- package/lib/_util/Provider.js.map +1 -0
- package/lib/_util/getDefaultMapInfo.js +2 -2
- package/lib/_util/getDefaultMapInfo.js.map +1 -1
- package/lib/_util/useProps.js +15 -0
- package/lib/_util/useProps.js.map +1 -0
- package/lib/assets/colors.png +0 -0
- package/lib/assets/colors1.png +0 -0
- package/lib/cesium-3dtiles-layer/Cesium3DTilesLayer.js +38 -0
- package/lib/cesium-3dtiles-layer/Cesium3DTilesLayer.js.map +1 -0
- package/lib/cesium-3dtiles-layer/index.js +30 -0
- package/lib/cesium-3dtiles-layer/index.js.map +1 -0
- package/lib/feature-layer/FeatureLayer.js +47 -12
- package/lib/feature-layer/FeatureLayer.js.map +1 -1
- package/lib/feature-layer/createFeatureCollection.js +4 -0
- package/lib/feature-layer/createFeatureCollection.js.map +1 -1
- package/lib/feature-layer/index.js +35 -25
- package/lib/feature-layer/index.js.map +1 -1
- package/lib/group-layer/GroupLayer.js +89 -0
- package/lib/group-layer/GroupLayer.js.map +1 -0
- package/lib/group-layer/index.js +68 -0
- package/lib/group-layer/index.js.map +1 -0
- package/lib/group-layer/style/css.js +4 -0
- package/lib/group-layer/style/css.js.map +1 -0
- package/lib/group-layer/style/index.css +0 -0
- package/lib/group-layer/style/index.js +4 -0
- package/lib/group-layer/style/index.js.map +1 -0
- package/lib/group-layer/style/index.less +0 -0
- package/lib/highlight-layer/HighlightLayer.js +172 -0
- package/lib/highlight-layer/HighlightLayer.js.map +1 -0
- package/lib/highlight-layer/index.js +25 -0
- package/lib/highlight-layer/index.js.map +1 -0
- package/lib/highlight-layer/style/css.js +4 -0
- package/lib/highlight-layer/style/css.js.map +1 -0
- package/lib/highlight-layer/style/index.css +0 -0
- package/lib/highlight-layer/style/index.js +4 -0
- package/lib/highlight-layer/style/index.js.map +1 -0
- package/lib/highlight-layer/style/index.less +0 -0
- package/lib/image-layer/ImageLayer.js +113 -0
- package/lib/image-layer/ImageLayer.js.map +1 -0
- package/lib/image-layer/index.js +74 -0
- package/lib/image-layer/index.js.map +1 -0
- package/lib/image-layer/style/css.js +4 -0
- package/lib/image-layer/style/css.js.map +1 -0
- package/lib/image-layer/style/index.css +0 -0
- package/lib/image-layer/style/index.js +4 -0
- package/lib/image-layer/style/index.js.map +1 -0
- package/lib/image-layer/style/index.less +0 -0
- package/lib/index.js +36 -1
- package/lib/index.js.map +1 -1
- package/lib/line-flow-layer/LineFlowLayer.js +110 -0
- package/lib/line-flow-layer/LineFlowLayer.js.map +1 -0
- package/lib/line-flow-layer/index.js +30 -0
- package/lib/line-flow-layer/index.js.map +1 -0
- package/lib/line-flow-layer/style/css.js +4 -0
- package/lib/line-flow-layer/style/css.js.map +1 -0
- package/lib/line-flow-layer/style/index.css +0 -0
- package/lib/line-flow-layer/style/index.js +4 -0
- package/lib/line-flow-layer/style/index.js.map +1 -0
- package/lib/line-flow-layer/style/index.less +0 -0
- package/lib/map/InfoTool/index.css +55 -0
- package/lib/map/InfoTool/index.js +247 -0
- package/lib/map/InfoTool/index.js.map +1 -0
- package/lib/map/InfoTool/index.less +46 -0
- package/lib/map/InfoTool/util.js +113 -0
- package/lib/map/InfoTool/util.js.map +1 -0
- package/lib/map/InfoWindow.js +11 -6
- package/lib/map/InfoWindow.js.map +1 -1
- package/lib/map/Popup.js +164 -78
- package/lib/map/Popup.js.map +1 -1
- package/lib/map/hooks/useGetMapFeatureInfoByText.js +211 -0
- package/lib/map/hooks/useGetMapFeatureInfoByText.js.map +1 -0
- package/lib/map/index.js +415 -102
- package/lib/map/index.js.map +1 -1
- package/lib/map/style/index.css +76 -9
- package/lib/map/style/index.less +79 -8
- package/lib/marker/Marker.js +1 -0
- package/lib/marker/Marker.js.map +1 -1
- package/lib/marker/index.js +6 -4
- package/lib/marker/index.js.map +1 -1
- package/lib/material/TrailPolylineMaterial.js +31 -0
- package/lib/material/TrailPolylineMaterial.js.map +1 -0
- package/lib/point/index.js +6 -4
- package/lib/point/index.js.map +1 -1
- package/lib/polygon/index.js +6 -4
- package/lib/polygon/index.js.map +1 -1
- package/lib/polyline/index.js +6 -4
- package/lib/polyline/index.js.map +1 -1
- package/lib/renderer/index.js +4 -1
- package/lib/renderer/index.js.map +1 -1
- package/lib/tools/assets/footer.png +0 -0
- package/lib/tools/assets/layer.png +0 -0
- package/lib/tools/assets/search.png +0 -0
- package/lib/tools/index.js +37 -0
- package/lib/tools/index.js.map +1 -0
- package/lib/tools/layer/index.js +169 -0
- package/lib/tools/layer/index.js.map +1 -0
- package/lib/tools/search/Select/index.js +56 -0
- package/lib/tools/search/Select/index.js.map +1 -0
- package/lib/tools/search/Select/style/css.js +4 -0
- package/lib/tools/search/Select/style/css.js.map +1 -0
- package/lib/tools/search/Select/style/index.css +45 -0
- package/lib/tools/search/Select/style/index.js +4 -0
- package/lib/tools/search/Select/style/index.js.map +1 -0
- package/lib/tools/search/Select/style/index.less +47 -0
- package/lib/tools/search/index.js +203 -0
- package/lib/tools/search/index.js.map +1 -0
- package/lib/tools/style/css.js +8 -0
- package/lib/tools/style/css.js.map +1 -0
- package/lib/tools/style/index.css +123 -0
- package/lib/tools/style/index.js +8 -0
- package/lib/tools/style/index.js.map +1 -0
- package/lib/tools/style/index.less +120 -0
- package/lib/tools/tools-item/index.js +50 -0
- package/lib/tools/tools-item/index.js.map +1 -0
- package/lib/trail-polyline-layer/TrailPolylineLayer.js +84 -0
- package/lib/trail-polyline-layer/TrailPolylineLayer.js.map +1 -0
- package/lib/trail-polyline-layer/index.js +28 -0
- package/lib/trail-polyline-layer/index.js.map +1 -0
- package/lib/trail-polyline-layer/style/css.js +4 -0
- package/lib/trail-polyline-layer/style/css.js.map +1 -0
- package/lib/trail-polyline-layer/style/index.css +0 -0
- package/lib/trail-polyline-layer/style/index.js +4 -0
- package/lib/trail-polyline-layer/style/index.js.map +1 -0
- package/lib/trail-polyline-layer/style/index.less +0 -0
- package/package.json +121 -121
package/lib/map/index.js
CHANGED
|
@@ -11,15 +11,25 @@ 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"));
|
|
14
15
|
var _getDefaultMapInfo2 = _interopRequireDefault(require("../_util/getDefaultMapInfo"));
|
|
15
16
|
require("cesium/Build/Cesium/Widgets/widgets.css");
|
|
16
17
|
var _classnames = _interopRequireDefault(require("classnames"));
|
|
17
|
-
var
|
|
18
|
-
var
|
|
19
|
-
|
|
18
|
+
var _events = require("../events");
|
|
19
|
+
var _Popup = _interopRequireDefault(require("./Popup"));
|
|
20
|
+
var _Provider = _interopRequireDefault(require("../_util/Provider"));
|
|
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"];
|
|
20
26
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
|
|
21
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); }
|
|
22
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; }
|
|
29
|
+
function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }
|
|
30
|
+
function _nonIterableSpread() { throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
|
|
31
|
+
function _iterableToArray(iter) { if (typeof Symbol !== "undefined" && iter[Symbol.iterator] != null || iter["@@iterator"] != null) return Array.from(iter); }
|
|
32
|
+
function _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); }
|
|
23
33
|
function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
|
|
24
34
|
function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
|
|
25
35
|
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; }
|
|
@@ -34,6 +44,19 @@ function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len
|
|
|
34
44
|
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; } }
|
|
35
45
|
function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
|
|
36
46
|
function Map(props) {
|
|
47
|
+
var _props$width = props.width,
|
|
48
|
+
width = _props$width === void 0 ? '100%' : _props$width,
|
|
49
|
+
_props$height = props.height,
|
|
50
|
+
height = _props$height === void 0 ? '100%' : _props$height,
|
|
51
|
+
dark = props.dark,
|
|
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;
|
|
37
60
|
var _useState = (0, _react.useState)(false),
|
|
38
61
|
_useState2 = _slicedToArray(_useState, 2),
|
|
39
62
|
mapLoaded = _useState2[0],
|
|
@@ -46,24 +69,73 @@ function Map(props) {
|
|
|
46
69
|
_useState6 = _slicedToArray(_useState5, 2),
|
|
47
70
|
tip = _useState6[0],
|
|
48
71
|
setTip = _useState6[1];
|
|
49
|
-
var _useState7 = (0, _react.useState)({}),
|
|
50
|
-
_useState8 = _slicedToArray(_useState7, 2),
|
|
51
|
-
infoWindow = _useState8[0],
|
|
52
|
-
setInfoWindow = _useState8[1];
|
|
53
72
|
var mapRef = (0, _react.useRef)(null);
|
|
54
73
|
var mapDomRef = (0, _react.useRef)(null);
|
|
55
74
|
var tipRef = (0, _react.useRef)(null);
|
|
75
|
+
var popupRef = (0, _react.useRef)();
|
|
76
|
+
var getMapFeatureInfoByText = (0, _useGetMapFeatureInfoByText["default"])(mapRef);
|
|
56
77
|
(0, _react.useEffect)(function () {
|
|
57
78
|
initMap();
|
|
58
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]);
|
|
59
134
|
var initMap = function initMap() {
|
|
60
135
|
var center = props.center,
|
|
61
136
|
dark = props.dark,
|
|
62
137
|
zoom = props.zoom,
|
|
63
138
|
createdMap = props.createdMap,
|
|
64
|
-
_props$style = props.style,
|
|
65
|
-
style = _props$style === void 0 ? 'vec' : _props$style,
|
|
66
|
-
tk = props.tk,
|
|
67
139
|
options = _objectWithoutProperties(props, _excluded);
|
|
68
140
|
var _getDefaultMapInfo = (0, _getDefaultMapInfo2["default"])(),
|
|
69
141
|
minZoom = _getDefaultMapInfo.minZoom,
|
|
@@ -79,6 +151,7 @@ function Map(props) {
|
|
|
79
151
|
minZoom: minZoom && Number(minZoom) || 0,
|
|
80
152
|
maxZoom: maxZoom && Number(maxZoom) || 20
|
|
81
153
|
};
|
|
154
|
+
_cesium.Ion.defaultAccessToken = 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJqdGkiOiJhZjc0ZDQ1ZS0wNWNhLTRhMDQtODJmYy03NTcyNDcxYzgzMDUiLCJpZCI6NzE4MTQsImlhdCI6MTYzNTQ3NzgyNX0.4TrdZWPWc9_6jLeGe90bRmBPB14XptwinSewVMu1iCE';
|
|
82
155
|
var map = new _cesium.Viewer(mapDomRef.current, _objectSpread({
|
|
83
156
|
shouldAnimate: true,
|
|
84
157
|
animation: false,
|
|
@@ -117,56 +190,344 @@ function Map(props) {
|
|
|
117
190
|
})
|
|
118
191
|
}, options));
|
|
119
192
|
|
|
193
|
+
// 事件订阅
|
|
194
|
+
map.eventEmitter = new _EventEmitter["default"]();
|
|
195
|
+
|
|
120
196
|
// 去版权信息
|
|
121
197
|
map._cesiumWidget._creditContainer.style.display = 'none'; // 隐藏cesium ion
|
|
122
198
|
|
|
123
199
|
mapRef.current = map;
|
|
200
|
+
addImageryProvider();
|
|
201
|
+
|
|
202
|
+
// 展示提示
|
|
203
|
+
map.showTip = function (content) {
|
|
204
|
+
setTip(content);
|
|
205
|
+
};
|
|
206
|
+
|
|
207
|
+
// 隐藏提示
|
|
208
|
+
map.hideTip = function () {
|
|
209
|
+
setTip(null);
|
|
210
|
+
};
|
|
211
|
+
|
|
212
|
+
// 查找所有dataSource和imagery图层
|
|
213
|
+
map.getAllLayers = function () {
|
|
214
|
+
var _map$dataSources, _map$imageryLayers, _map$scene;
|
|
215
|
+
var dataSources = (map === null || map === void 0 || (_map$dataSources = map.dataSources) === null || _map$dataSources === void 0 ? void 0 : _map$dataSources._dataSources) || [];
|
|
216
|
+
var imageryLayers = (map === null || map === void 0 || (_map$imageryLayers = map.imageryLayers) === null || _map$imageryLayers === void 0 ? void 0 : _map$imageryLayers._layers) || [];
|
|
217
|
+
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) || [];
|
|
218
|
+
return [].concat(_toConsumableArray(dataSources), _toConsumableArray(imageryLayers), _toConsumableArray(primitives));
|
|
219
|
+
};
|
|
220
|
+
|
|
221
|
+
// 添加dataSource和imagery图层
|
|
222
|
+
map.layers = [];
|
|
223
|
+
|
|
224
|
+
// 图层改变
|
|
225
|
+
map.layersChange = function () {
|
|
226
|
+
map.eventEmitter.emit('layersChange', map.layers);
|
|
227
|
+
onEvents.layersChange && onEvents.layersChange(map.layers);
|
|
228
|
+
};
|
|
229
|
+
|
|
230
|
+
// 添加图层
|
|
231
|
+
map.addLayer = function (layer) {
|
|
232
|
+
// 挂载获取地图的方法
|
|
233
|
+
layer.getMap = function () {
|
|
234
|
+
return map;
|
|
235
|
+
};
|
|
236
|
+
if (layer instanceof _cesium.CustomDataSource) {
|
|
237
|
+
map.dataSources.add(layer);
|
|
238
|
+
} else if (layer instanceof _ImageLayer["default"]) {
|
|
239
|
+
map.scene.imageryLayers.add(layer);
|
|
240
|
+
}
|
|
241
|
+
|
|
242
|
+
// 图层是否含有name字段,作为加入到图层树的判断依据
|
|
243
|
+
if (layer.name) {
|
|
244
|
+
map.layers.push(layer);
|
|
245
|
+
onEvents.addLayer && onEvents.addLayer(layer);
|
|
246
|
+
map.layersChange();
|
|
247
|
+
}
|
|
248
|
+
};
|
|
249
|
+
|
|
250
|
+
// 移除图层
|
|
251
|
+
map.removeLayer = function (layer) {
|
|
252
|
+
if (layer instanceof _cesium.CustomDataSource) {
|
|
253
|
+
map.dataSources.remove(layer);
|
|
254
|
+
} else if (layer instanceof _ImageLayer["default"]) {
|
|
255
|
+
map.scene.imageryLayers.remove(layer);
|
|
256
|
+
}
|
|
257
|
+
map.layers = map.layers.filter(function (v) {
|
|
258
|
+
return v !== layer;
|
|
259
|
+
});
|
|
260
|
+
onEvents.removeLayer && onEvents.removeLayer(layer);
|
|
261
|
+
map.layersChange();
|
|
262
|
+
};
|
|
263
|
+
|
|
264
|
+
// 清除图层和entity
|
|
265
|
+
map.clearLayers = function () {
|
|
266
|
+
var imageryLayers = map.getImageryLayers() || [];
|
|
267
|
+
map.dataSources.removeAll();
|
|
268
|
+
imageryLayers.map(function (layer) {
|
|
269
|
+
if (layer !== null && layer !== void 0 && layer.key) {
|
|
270
|
+
map.imageryLayers.remove(layer);
|
|
271
|
+
}
|
|
272
|
+
});
|
|
273
|
+
map.entities.removeAll();
|
|
274
|
+
map.layers = [];
|
|
275
|
+
onEvents.clearLayer && onEvents.clearLayer();
|
|
276
|
+
map.layersChange();
|
|
277
|
+
};
|
|
278
|
+
|
|
279
|
+
// 根据key查找imageryLayers图层
|
|
280
|
+
map.getImageryLayers = function (keys) {
|
|
281
|
+
var _map$imageryLayers2;
|
|
282
|
+
return ((map === null || map === void 0 || (_map$imageryLayers2 = map.imageryLayers) === null || _map$imageryLayers2 === void 0 ? void 0 : _map$imageryLayers2._layers) || []).filter(function (layer) {
|
|
283
|
+
if (typeof keys === 'string') {
|
|
284
|
+
return layer.key === keys;
|
|
285
|
+
} else if (Array.isArray(keys)) {
|
|
286
|
+
return keys.includes(layer.key);
|
|
287
|
+
} else {
|
|
288
|
+
return layer;
|
|
289
|
+
}
|
|
290
|
+
});
|
|
291
|
+
};
|
|
292
|
+
|
|
293
|
+
// 通过图形查询所属图层
|
|
294
|
+
map.getLayerByFeature = function (entity) {
|
|
295
|
+
return map.getAllLayers().find(function (layer) {
|
|
296
|
+
if (entity instanceof _cesium.ImageryLayerFeatureInfo) {
|
|
297
|
+
var _entity$imageryLayer;
|
|
298
|
+
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)) {
|
|
299
|
+
return layer;
|
|
300
|
+
}
|
|
301
|
+
} else if (layer instanceof _cesium.Primitive) {
|
|
302
|
+
var _entity$primitive;
|
|
303
|
+
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)) {
|
|
304
|
+
return layer;
|
|
305
|
+
}
|
|
306
|
+
} else {
|
|
307
|
+
if (layer !== null && layer !== void 0 && layer.key && layer.key === (entity === null || entity === void 0 ? void 0 : entity.key)) {
|
|
308
|
+
return layer;
|
|
309
|
+
}
|
|
310
|
+
}
|
|
311
|
+
});
|
|
312
|
+
};
|
|
313
|
+
|
|
314
|
+
// 获取entity中数据
|
|
315
|
+
map.getProperties = function (feature) {
|
|
316
|
+
var _feature$_properties, _properties;
|
|
317
|
+
if (feature !== null && feature !== void 0 && feature.primitive && (feature === null || feature === void 0 ? void 0 : feature.primitive) instanceof _cesium.Primitive) {
|
|
318
|
+
return feature.primitive.data.find(function (item) {
|
|
319
|
+
return item.id === feature.id;
|
|
320
|
+
});
|
|
321
|
+
}
|
|
322
|
+
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) || {};
|
|
323
|
+
properties = ((_properties = properties) === null || _properties === void 0 ? void 0 : _properties.properties) || properties;
|
|
324
|
+
return properties;
|
|
325
|
+
};
|
|
326
|
+
|
|
327
|
+
// 通过key查询图层
|
|
328
|
+
map.getLayerByKey = function (key) {
|
|
329
|
+
return map.getAllLayers().find(function (layer) {
|
|
330
|
+
return key && layer.key && layer.key === key;
|
|
331
|
+
});
|
|
332
|
+
};
|
|
333
|
+
|
|
334
|
+
// 通过keys查询多个图层
|
|
335
|
+
map.getLayerByKeys = function (keys) {
|
|
336
|
+
return map.getAllLayers().filter(function (layer) {
|
|
337
|
+
return layer.key && keys.includes(layer.key);
|
|
338
|
+
});
|
|
339
|
+
};
|
|
340
|
+
|
|
341
|
+
// 通过返回值控制是否执行关闭
|
|
342
|
+
map.onCloseTemplateBefore = function (feature) {
|
|
343
|
+
if (onCloseTemplateBefore) {
|
|
344
|
+
return onCloseTemplateBefore(feature);
|
|
345
|
+
}
|
|
346
|
+
};
|
|
347
|
+
|
|
348
|
+
// 根据key查找展示的图层
|
|
349
|
+
map.getVisibleLayersByKeys = function (keys) {
|
|
350
|
+
var layers = map.getAllLayers() || [];
|
|
351
|
+
return layers.filter(function (layer) {
|
|
352
|
+
if (typeof keys === 'string') {
|
|
353
|
+
return layer.key === keys && layer.show;
|
|
354
|
+
} else if (Array.isArray(keys)) {
|
|
355
|
+
return keys.includes(layer.key) && layer.show;
|
|
356
|
+
} else {
|
|
357
|
+
return layer.show && layer.key;
|
|
358
|
+
}
|
|
359
|
+
});
|
|
360
|
+
};
|
|
361
|
+
|
|
362
|
+
// 展示看板
|
|
363
|
+
map.showTemplate = function (feature) {
|
|
364
|
+
popupRef.current.showTemplate(feature);
|
|
365
|
+
};
|
|
366
|
+
|
|
367
|
+
// 隐藏看板
|
|
368
|
+
map.hideTemplate = function () {
|
|
369
|
+
popupRef.current.hideTemplate();
|
|
370
|
+
};
|
|
124
371
|
var handlePoint = new _cesium.ScreenSpaceEventHandler(map.scene.canvas);
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
if (
|
|
129
|
-
var
|
|
130
|
-
var
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
// 点位才出现默认弹窗
|
|
134
|
-
if (((_entity$geometryInfo = entity.geometryInfo) === null || _entity$geometryInfo === void 0 ? void 0 : _entity$geometryInfo.type) == 'point') {
|
|
135
|
-
setInfoWindow({
|
|
136
|
-
visible: true,
|
|
137
|
-
entity: entity,
|
|
138
|
-
position: e.position,
|
|
139
|
-
_position: (0, _cesium.defaultValue)(feature.id, feature.primitive.id)._position._value
|
|
140
|
-
});
|
|
372
|
+
|
|
373
|
+
// 获取图层上的图形信息
|
|
374
|
+
map.pickDataSourcesFeature = function (event) {
|
|
375
|
+
if (event !== null && event !== void 0 && event.position) {
|
|
376
|
+
var position = event.position;
|
|
377
|
+
var pick = map.scene.pick(position);
|
|
378
|
+
if (_lodash["default"].isString(pick === null || pick === void 0 ? void 0 : pick.id)) {
|
|
379
|
+
return pick;
|
|
141
380
|
}
|
|
381
|
+
return pick === null || pick === void 0 ? void 0 : pick.id;
|
|
382
|
+
}
|
|
383
|
+
};
|
|
384
|
+
map.getMapFeatureInfoByText = getMapFeatureInfoByText;
|
|
385
|
+
|
|
386
|
+
// 获取wms的图形数据
|
|
387
|
+
map.pickImageryLayerFeatures = function (event) {
|
|
388
|
+
if (event !== null && event !== void 0 && event.position) {
|
|
389
|
+
var position = event.position;
|
|
390
|
+
var pickRay = map.camera.getPickRay(position);
|
|
391
|
+
return map.imageryLayers.pickImageryLayerFeatures(pickRay, map.scene);
|
|
392
|
+
}
|
|
393
|
+
};
|
|
394
|
+
|
|
395
|
+
// 注册事件
|
|
396
|
+
(0, _events.registerEventLayer)(map, props);
|
|
397
|
+
function registerMapEvent(e, event) {
|
|
398
|
+
if (map[event]) {
|
|
399
|
+
map[event](e);
|
|
400
|
+
onEvents[event] && onEvents[event](e);
|
|
401
|
+
}
|
|
402
|
+
}
|
|
403
|
+
function registerEvent(feature, event) {
|
|
404
|
+
if (feature) {
|
|
405
|
+
var _feature$event;
|
|
406
|
+
var properties = map.getProperties(feature);
|
|
407
|
+
|
|
408
|
+
// 触发自身事件
|
|
409
|
+
(_feature$event = feature[event]) === null || _feature$event === void 0 || _feature$event.call(feature, properties);
|
|
410
|
+
var layer = map.getLayerByFeature(feature);
|
|
411
|
+
if (layer !== null && layer !== void 0 && layer[event]) {
|
|
412
|
+
layer[event](properties);
|
|
413
|
+
}
|
|
414
|
+
}
|
|
415
|
+
}
|
|
416
|
+
|
|
417
|
+
// 点击事件
|
|
418
|
+
handlePoint.setInputAction(function (event) {
|
|
419
|
+
registerMapEvent(event, 'onClick');
|
|
420
|
+
map.hideTip();
|
|
421
|
+
var entity = map.pickDataSourcesFeature(event);
|
|
422
|
+
var featuresPromise = map.pickImageryLayerFeatures(event);
|
|
423
|
+
if (entity) {
|
|
424
|
+
map.onClickTemplateAfter && map.onClickTemplateAfter(entity);
|
|
425
|
+
registerEvent(entity, 'onClick');
|
|
426
|
+
map.showTemplate(entity, event);
|
|
427
|
+
} else if ((0, _cesium.defined)(featuresPromise)) {
|
|
428
|
+
(0, _cesium.when)(featuresPromise, function (features) {
|
|
429
|
+
var feature = features === null || features === void 0 ? void 0 : features[0];
|
|
430
|
+
registerEvent(feature, 'onClick');
|
|
431
|
+
map.showTemplate(feature, event);
|
|
432
|
+
});
|
|
142
433
|
}
|
|
143
434
|
}, _cesium.ScreenSpaceEventType.LEFT_CLICK);
|
|
435
|
+
|
|
144
436
|
// 双击事件
|
|
145
|
-
handlePoint.setInputAction(function (
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
437
|
+
handlePoint.setInputAction(function (event) {
|
|
438
|
+
map.trackedEntity = undefined; // 取消双击锁定
|
|
439
|
+
|
|
440
|
+
registerMapEvent(event, 'onDoubleClick');
|
|
441
|
+
var feature = map.pickDataSourcesFeature(event);
|
|
442
|
+
registerEvent(feature, 'onDoubleClick');
|
|
150
443
|
}, _cesium.ScreenSpaceEventType.LEFT_DOUBLE_CLICK);
|
|
444
|
+
|
|
151
445
|
// 鼠标移动
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
446
|
+
var hoverFeature;
|
|
447
|
+
var getUid = function getUid(feature) {
|
|
448
|
+
if (!feature._id) {
|
|
449
|
+
feature._id = window.Math.random();
|
|
450
|
+
}
|
|
451
|
+
return feature._id;
|
|
452
|
+
};
|
|
453
|
+
handlePoint.setInputAction(function (event) {
|
|
454
|
+
registerMapEvent(event, 'onMouseMove');
|
|
455
|
+
var feature = map.pickDataSourcesFeature({
|
|
456
|
+
position: event.endPosition
|
|
457
|
+
});
|
|
458
|
+
if (feature) {
|
|
459
|
+
registerEvent(feature, 'onMouseMove');
|
|
460
|
+
|
|
461
|
+
// 判断是否在图形内移动
|
|
462
|
+
if (hoverFeature) {
|
|
463
|
+
var uid = getUid(feature);
|
|
464
|
+
var hoverUid = getUid(hoverFeature);
|
|
465
|
+
|
|
466
|
+
// 判断是否进入新的图形
|
|
467
|
+
if (uid !== hoverUid) {
|
|
468
|
+
registerEvent(hoverFeature, 'onMouseLeave');
|
|
469
|
+
registerEvent(feature, 'onMouseEnter');
|
|
470
|
+
hoverFeature = feature;
|
|
471
|
+
}
|
|
472
|
+
} else {
|
|
473
|
+
registerEvent(feature, 'onMouseEnter');
|
|
474
|
+
hoverFeature = feature;
|
|
475
|
+
}
|
|
476
|
+
registerEvent(feature, 'onMouseMove');
|
|
477
|
+
} else {
|
|
478
|
+
if (hoverFeature) {
|
|
479
|
+
registerEvent(hoverFeature, 'onMouseLeave');
|
|
480
|
+
}
|
|
481
|
+
hoverFeature = null;
|
|
482
|
+
}
|
|
483
|
+
}, _cesium.ScreenSpaceEventType.MOUSE_MOVE);
|
|
484
|
+
if (onZoom) {
|
|
485
|
+
map.camera.moveEnd.addEventListener(function () {
|
|
486
|
+
var viewRectangle = map.camera.computeViewRectangle();
|
|
487
|
+
var west = viewRectangle.west / _cesium.Math.PI * 180; // 左上方(西)
|
|
488
|
+
var north = viewRectangle.north / _cesium.Math.PI * 180; //右上方(北)
|
|
489
|
+
var east = viewRectangle.east / _cesium.Math.PI * 180; // 右下方(东)
|
|
490
|
+
var south = viewRectangle.south / _cesium.Math.PI * 180; // 左下方(南)
|
|
491
|
+
var cameraHeight = map.camera.positionCartographic.height;
|
|
492
|
+
onZoom && onZoom({
|
|
493
|
+
west: west,
|
|
494
|
+
north: north,
|
|
495
|
+
east: east,
|
|
496
|
+
south: south,
|
|
497
|
+
cameraHeight: cameraHeight
|
|
498
|
+
});
|
|
499
|
+
});
|
|
500
|
+
}
|
|
158
501
|
|
|
502
|
+
// 动态调整视角,不传参数为默认视角,参数可以是图层、图形、数据等
|
|
159
503
|
map.fitView = function (e) {
|
|
160
504
|
var _ref = e || {},
|
|
161
505
|
entity = _ref.entity,
|
|
162
|
-
|
|
506
|
+
lng = _ref.lng,
|
|
507
|
+
lat = _ref.lat,
|
|
163
508
|
_ref$height = _ref.height,
|
|
164
|
-
height = _ref$height === void 0 ? 50000 : _ref$height
|
|
509
|
+
height = _ref$height === void 0 ? 50000 : _ref$height,
|
|
510
|
+
rest = _objectWithoutProperties(_ref, _excluded2);
|
|
511
|
+
var pitch = map.camera.pitch;
|
|
165
512
|
// 判断是否点击了图形
|
|
166
513
|
if (entity) {
|
|
167
|
-
map.
|
|
168
|
-
duration: 2
|
|
514
|
+
map.flyTo(entity, {
|
|
515
|
+
duration: 2,
|
|
516
|
+
offset: {
|
|
517
|
+
heading: _cesium.Math.toRadians(0.0),
|
|
518
|
+
pitch: pitch,
|
|
519
|
+
range: height
|
|
520
|
+
}
|
|
169
521
|
});
|
|
522
|
+
} else if (lng && lat) {
|
|
523
|
+
map.camera.flyTo(_objectSpread({
|
|
524
|
+
destination: new _cesium.Cartesian3.fromDegrees(Number(lng), Number(lat), height),
|
|
525
|
+
orientation: {
|
|
526
|
+
pitch: _cesium.Math.toRadians(-88.0),
|
|
527
|
+
roll: 0.0
|
|
528
|
+
},
|
|
529
|
+
duration: 2
|
|
530
|
+
}, rest));
|
|
170
531
|
} else {
|
|
171
532
|
var _viewDefault$center = _slicedToArray(viewDefault.center, 3),
|
|
172
533
|
x = _viewDefault$center[0],
|
|
@@ -183,26 +544,9 @@ function Map(props) {
|
|
|
183
544
|
});
|
|
184
545
|
}
|
|
185
546
|
};
|
|
186
|
-
map.flyTo = function (e) {
|
|
187
|
-
var _ref2 = e || {},
|
|
188
|
-
lng = _ref2.lng,
|
|
189
|
-
lat = _ref2.lat,
|
|
190
|
-
_ref2$z = _ref2.z,
|
|
191
|
-
z = _ref2$z === void 0 ? 50000 : _ref2$z,
|
|
192
|
-
rest = _objectWithoutProperties(_ref2, _excluded2);
|
|
193
|
-
if (lng && lat) {
|
|
194
|
-
map.camera.flyTo(_objectSpread({
|
|
195
|
-
destination: new _cesium.Cartesian3.fromDegrees(Number(lng), Number(lat), z),
|
|
196
|
-
orientation: {
|
|
197
|
-
pitch: _cesium.Math.toRadians(-88.0),
|
|
198
|
-
roll: 0.0
|
|
199
|
-
},
|
|
200
|
-
duration: 2
|
|
201
|
-
}, rest));
|
|
202
|
-
}
|
|
203
|
-
};
|
|
204
547
|
map.fitView();
|
|
205
548
|
createdMap && createdMap(map);
|
|
549
|
+
onEvents.createdMap && onEvents.createdMap(map);
|
|
206
550
|
setMapLoaded(true);
|
|
207
551
|
};
|
|
208
552
|
var onMouseMove = function onMouseMove(event) {
|
|
@@ -211,39 +555,6 @@ function Map(props) {
|
|
|
211
555
|
tipRef.current.style.top = "".concat(event.nativeEvent.layerY + 15, "px");
|
|
212
556
|
}
|
|
213
557
|
};
|
|
214
|
-
var _props$width = props.width,
|
|
215
|
-
width = _props$width === void 0 ? '100%' : _props$width,
|
|
216
|
-
_props$height = props.height,
|
|
217
|
-
height = _props$height === void 0 ? '100%' : _props$height,
|
|
218
|
-
dark = props.dark,
|
|
219
|
-
children = props.children;
|
|
220
|
-
|
|
221
|
-
// 渲染 Children
|
|
222
|
-
var renderChildren = function renderChildren() {
|
|
223
|
-
return _react.Children.map(children, function (child) {
|
|
224
|
-
if (child) {
|
|
225
|
-
var cType = child.type;
|
|
226
|
-
/* 针对下面两种组件不注入地图相关属性
|
|
227
|
-
* 1. 明确声明不需要注入的
|
|
228
|
-
* 2. DOM 元素
|
|
229
|
-
*/
|
|
230
|
-
if (cType.preventMap || typeof cType === 'string') {
|
|
231
|
-
return child;
|
|
232
|
-
}
|
|
233
|
-
return /*#__PURE__*/_react["default"].cloneElement(child, {
|
|
234
|
-
__map__: mapRef.current
|
|
235
|
-
});
|
|
236
|
-
}
|
|
237
|
-
return child;
|
|
238
|
-
});
|
|
239
|
-
};
|
|
240
|
-
|
|
241
|
-
// 默认template
|
|
242
|
-
var template = function template(entity) {
|
|
243
|
-
return /*#__PURE__*/_react["default"].createElement("div", {
|
|
244
|
-
className: (0, _classnames["default"])('cesium-template')
|
|
245
|
-
}, "\u540D\u79F0\uFF1A", (entity === null || entity === void 0 ? void 0 : entity.name) || '');
|
|
246
|
-
};
|
|
247
558
|
return /*#__PURE__*/_react["default"].createElement("div", {
|
|
248
559
|
style: {
|
|
249
560
|
width: width,
|
|
@@ -264,15 +575,14 @@ function Map(props) {
|
|
|
264
575
|
}, tip && tipVis && /*#__PURE__*/_react["default"].createElement("div", {
|
|
265
576
|
ref: tipRef,
|
|
266
577
|
className: (0, _classnames["default"])('custom-tip')
|
|
267
|
-
}, tip)
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
setInfoWindow({});
|
|
578
|
+
}, tip), mapRef.current && /*#__PURE__*/_react["default"].createElement(_Popup["default"], {
|
|
579
|
+
ref: popupRef,
|
|
580
|
+
map: mapRef.current
|
|
581
|
+
})), mapLoaded && /*#__PURE__*/_react["default"].createElement(_Provider["default"], {
|
|
582
|
+
value: {
|
|
583
|
+
map: mapRef.current
|
|
274
584
|
}
|
|
275
|
-
},
|
|
585
|
+
}, children));
|
|
276
586
|
}
|
|
277
587
|
var _default = Map;
|
|
278
588
|
exports["default"] = _default;
|
|
@@ -280,12 +590,15 @@ Map.propTypes = {
|
|
|
280
590
|
width: _propTypes["default"].oneOfType([_propTypes["default"].string, _propTypes["default"].number]),
|
|
281
591
|
height: _propTypes["default"].oneOfType([_propTypes["default"].string, _propTypes["default"].number]),
|
|
282
592
|
createdMap: _propTypes["default"].func,
|
|
593
|
+
onCloseTemplateBefore: _propTypes["default"].func,
|
|
594
|
+
onZoom: _propTypes["default"].func,
|
|
283
595
|
center: _propTypes["default"].array,
|
|
284
596
|
zoom: _propTypes["default"].number,
|
|
285
597
|
minZoom: _propTypes["default"].number,
|
|
286
598
|
maxZoom: _propTypes["default"].number,
|
|
287
599
|
dark: _propTypes["default"].bool,
|
|
288
|
-
|
|
289
|
-
tk: _propTypes["default"].string.isRequired
|
|
600
|
+
mapStyle: _propTypes["default"].oneOfType(['vec', 'img']),
|
|
601
|
+
tk: _propTypes["default"].string.isRequired,
|
|
602
|
+
onEvents: _propTypes["default"].object
|
|
290
603
|
};
|
|
291
604
|
//# sourceMappingURL=index.js.map
|