@vtx/map 1.1.20 → 1.1.21

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.
@@ -31,8 +31,6 @@ function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (O
31
31
 
32
32
  function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
33
33
 
34
- function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
35
-
36
34
  function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }
37
35
 
38
36
  function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
@@ -65,6 +63,8 @@ function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Re
65
63
 
66
64
  function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }
67
65
 
66
+ function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
67
+
68
68
  var Set = _immutable["default"].Set;
69
69
 
70
70
  var OlMap = /*#__PURE__*/function (_React$Component) {
@@ -78,6 +78,68 @@ var OlMap = /*#__PURE__*/function (_React$Component) {
78
78
  _classCallCheck(this, OlMap);
79
79
 
80
80
  _this = _super.call(this, props);
81
+
82
+ _defineProperty(_assertThisInitialized(_this), "loadLayers", function () {
83
+ var nextLayers = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];
84
+ var currentLayers = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : [];
85
+ var first = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;
86
+
87
+ var t = _assertThisInitialized(_this); // 对比图层的变化,找出需要新增和需要删除的。
88
+
89
+
90
+ var addLayers = nextLayers.filter(function (item) {
91
+ return !currentLayers.map(function (e) {
92
+ return e.coverage;
93
+ }).includes(item.coverage);
94
+ });
95
+ var removeLayers = currentLayers.filter(function (item) {
96
+ return !nextLayers.map(function (e) {
97
+ return e.coverage;
98
+ }).includes(item.coverage);
99
+ });
100
+
101
+ if (removeLayers.length > 0) {
102
+ removeLayers.forEach(function (item) {
103
+ var exist = t.olLayers.find(function (e) {
104
+ return e.address === item.coverage;
105
+ });
106
+ exist && exist.layer.setVisible(false);
107
+ });
108
+ }
109
+
110
+ if (addLayers.length > 0) {
111
+ addLayers.map(function (item) {
112
+ if (item.coverage.startsWith("http") || item.coverage.startsWith('/')) {
113
+ switch (item.type) {
114
+ // 超图
115
+ case 'superMap':
116
+ t.addSuperMapLayer(item.coverage);
117
+ break;
118
+ // geoServer
119
+
120
+ case 'geoServer':
121
+ t.addGeoServerLayer(item.coverage);
122
+
123
+ default:
124
+ break;
125
+ }
126
+ } else if (OL_SCREEN[item.coverage]) {
127
+ if (first) {
128
+ var _layer = eval(OL_SCREEN[item.coverage].initLayer);
129
+
130
+ t.state.gis.addLayer(_layer);
131
+ }
132
+ }
133
+ });
134
+ } else {
135
+ if (first) {
136
+ var _layer2 = eval(OL_SCREEN["default"].initLayer);
137
+
138
+ t.state.gis.addLayer(_layer2);
139
+ }
140
+ }
141
+ });
142
+
81
143
  _this.zIndexGraphics = []; //需要放在最后的图元,zoom和pan时刷新dom到最后
82
144
 
83
145
  _this.htmlPointsId = 'vtx_gmap_html_points'; //html点位容器id class管理
@@ -141,7 +203,11 @@ var OlMap = /*#__PURE__*/function (_React$Component) {
141
203
 
142
204
  _this.areaRestriction = null; //区域限制数据
143
205
 
144
- _this.movePoints = []; //是否绘制测距
206
+ _this.movePoints = [];
207
+ _this.olLayers = []; // ol图层集合 {address:'', layer: ''}
208
+
209
+ _this.baseLayer = null; // 地图图层
210
+ //是否绘制测距
145
211
 
146
212
  _this.rangingTool = {
147
213
  isRanging: false,
@@ -356,7 +422,7 @@ var OlMap = /*#__PURE__*/function (_React$Component) {
356
422
  var target = feature.getProperties(); // top: e.clientY,//当前点所在的位置(屏幕)
357
423
  // left: e.clientX,
358
424
 
359
- t.clickGraphic(target.id, evt);
425
+ t.clickGraphic(target.id || target.elementId, evt, target);
360
426
  } else {
361
427
  t.clickMap(evt);
362
428
  }
@@ -475,31 +541,93 @@ var OlMap = /*#__PURE__*/function (_React$Component) {
475
541
  minZoom: minZoom,
476
542
  maxZoom: maxZoom
477
543
  });
544
+ t.loadLayers(olCoverage, [], true);
545
+ t.initPropsForUser();
546
+ } // 加载图层
478
547
 
479
- if ((olCoverage || []).length > 0) {
480
- (olCoverage || []).map(function (item) {
481
- if (item.coverage.startsWith("http") || item.coverage.startsWith('/')) {
482
- // 超图图层
483
- var _layer = new ol.layer.Tile({
484
- source: new ol.source.TileSuperMapRest({
485
- url: item.coverage
486
- })
487
- });
548
+ }, {
549
+ key: "addSuperMapLayer",
550
+ value: // 添加超图图层
551
+ function addSuperMapLayer(url) {
552
+ var exist = this.olLayers.find(function (item) {
553
+ return item.address === url;
554
+ });
488
555
 
489
- t.state.gis.addLayer(_layer);
490
- } else if (OL_SCREEN[item.coverage]) {
491
- var _layer2 = eval(OL_SCREEN[item.coverage].initLayer);
556
+ if (exist) {
557
+ exist.layer.setVisible(true);
558
+ return;
559
+ }
492
560
 
493
- t.state.gis.addLayer(_layer2);
494
- }
495
- });
496
- } else {
497
- var _layer3 = eval(OL_SCREEN["default"].initLayer);
561
+ var layer = new ol.layer.Tile({
562
+ source: new ol.source.TileSuperMapRest({
563
+ url: url
564
+ })
565
+ }); // 将图层添加到地图上
498
566
 
499
- t.state.gis.addLayer(_layer3);
500
- }
567
+ this.state.gis.addLayer(layer);
568
+ this.olLayers.push({
569
+ address: url,
570
+ layer: layer
571
+ });
572
+ } // 添加geoServer图层
501
573
 
502
- t.initPropsForUser();
574
+ }, {
575
+ key: "addGeoServerLayer",
576
+ value: function addGeoServerLayer(_url) {
577
+ var exist = this.olLayers.find(function (item) {
578
+ return item.address === _url;
579
+ });
580
+
581
+ if (exist) {
582
+ exist.layer.setVisible(true);
583
+ return;
584
+ } // 矢量数据源
585
+
586
+
587
+ var vectorSource = new ol.source.Vector({
588
+ // 设置格式化类型
589
+ format: new ol.format.GeoJSON(),
590
+ // url(extent) 在地图范围变化时调用,返回当前的地图范围
591
+ url: function url(extent) {
592
+ return "".concat(_url, "&bbox=").concat(extent.join(','));
593
+ },
594
+ strategy: ol.loadingstrategy.bbox
595
+ }); // 矢量图层
596
+
597
+ var layer = new ol.layer.Vector({
598
+ // 设置数据源
599
+ source: vectorSource,
600
+ // 设置图层样式也可以 function (feature) { /** 根据内容动态加载样式 **/ return Style}
601
+ style: function style(feature) {
602
+ var _icon$;
603
+
604
+ var el = feature.A || {};
605
+ var icon = JSON.parse(el.icon || '[]');
606
+ var mapIcon = (_icon$ = icon[0]) !== null && _icon$ !== void 0 && _icon$.id ? "/cloudFile/common/downloadFile?id=".concat(icon[0].id) : require("../images/defaultMarker.png");
607
+ return new ol.style.Style({
608
+ // 点位图标
609
+ image: new ol.style.Icon({
610
+ scale: 1,
611
+ src: mapIcon
612
+ }),
613
+ // 线样式
614
+ stroke: new ol.style.Stroke({
615
+ color: el.color || '#1890ff',
616
+ width: 4
617
+ }),
618
+ // 面样式
619
+ fill: new ol.style.Fill({
620
+ color: el.color || 'rgba(255,255,255, 0.5)'
621
+ })
622
+ });
623
+ }
624
+ }); // 将图层添加到地图上
625
+
626
+ this.state.gis.addLayer(layer);
627
+ this.olLayers.push({
628
+ address: _url,
629
+ layer: layer
630
+ });
503
631
  } // 初始化对外方法
504
632
 
505
633
  }, {
@@ -3563,7 +3691,8 @@ var OlMap = /*#__PURE__*/function (_React$Component) {
3563
3691
  isSetAreaRestriction = nextProps.isSetAreaRestriction,
3564
3692
  areaRestriction = nextProps.areaRestriction,
3565
3693
  isClearAreaRestriction = nextProps.isClearAreaRestriction,
3566
- isClearAll = nextProps.isClearAll; // 等待地图加载
3694
+ isClearAll = nextProps.isClearAll,
3695
+ olProps = nextProps.olProps; // 等待地图加载
3567
3696
 
3568
3697
  if (!t.state.mapCreated) return;
3569
3698
  /*点数据处理
@@ -3865,6 +3994,11 @@ var OlMap = /*#__PURE__*/function (_React$Component) {
3865
3994
 
3866
3995
  if (nextProps.showControl && JSON.stringify(nextProps.showControl) != JSON.stringify(t.props.showControl)) {
3867
3996
  t.showControl(nextProps);
3997
+ } // 更新需要加载的图层
3998
+
3999
+
4000
+ if (nextProps.olProps && JSON.stringify(nextProps.olProps) !== JSON.stringify(t.props.olProps)) {
4001
+ t.loadLayers(nextProps.olProps.olCoverage, t.props.olProps.olCoverage);
3868
4002
  }
3869
4003
  } // 地图事件
3870
4004
  //地图点击事件
@@ -4077,33 +4211,32 @@ var OlMap = /*#__PURE__*/function (_React$Component) {
4077
4211
  }, {
4078
4212
  key: "clickGraphic",
4079
4213
  value: function clickGraphic(id, e) {
4080
- var t = this;
4214
+ var target = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};
4215
+ var t = this; //编辑中的图元关闭其他事件返回
4081
4216
 
4082
- if (id) {
4083
- //编辑中的图元关闭其他事件返回
4084
- if (t.editId == id) return false;
4085
-
4086
- if (typeof t.props.clickGraphic === 'function') {
4087
- var _e$pixel = _slicedToArray(e.pixel, 2),
4088
- clientX = _e$pixel[0],
4089
- clientY = _e$pixel[1];
4090
-
4091
- var param = t.getGraphic(id, clientX, clientY);
4092
- var obj = {
4093
- param: param,
4094
- type: param.geometry.type,
4095
- //图元类型
4096
- attributes: _objectSpread(_objectSpread({}, param.attributes.other), {
4097
- config: param.attributes.config
4098
- }),
4099
- //添加时图元信息
4100
- top: clientY,
4101
- //当前点所在的位置(屏幕)
4102
- left: clientX,
4103
- e: e
4104
- };
4105
- t.props.clickGraphic(obj);
4106
- }
4217
+ if (t.editId == id) return false;
4218
+
4219
+ if (typeof t.props.clickGraphic === 'function') {
4220
+ var _e$pixel = _slicedToArray(e.pixel, 2),
4221
+ clientX = _e$pixel[0],
4222
+ clientY = _e$pixel[1];
4223
+
4224
+ var param = t.getGraphic(id, clientX, clientY);
4225
+ var obj = {
4226
+ param: param,
4227
+ info: target,
4228
+ type: param ? param.geometry.type : null,
4229
+ //图元类型
4230
+ attributes: param ? _objectSpread(_objectSpread({}, param.attributes.other), {
4231
+ config: param.attributes.config
4232
+ }) : null,
4233
+ //添加时图元信息
4234
+ top: clientY,
4235
+ //当前点所在的位置(屏幕)
4236
+ left: clientX,
4237
+ e: e
4238
+ };
4239
+ t.props.clickGraphic(obj);
4107
4240
  }
4108
4241
  }
4109
4242
  }, {