@vtx/map 1.1.6 → 1.1.7-beta.0

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.
@@ -96,13 +96,26 @@ var OlMap = function (_React$Component) {
96
96
  sketch: null,
97
97
  helpTooltipElement: null,
98
98
  helpTooltip: null,
99
- deleteContent: null,
100
99
  measureTooltipElement: null,
101
100
  measureTooltip: null,
101
+ deleteToolTipElement: null,
102
102
  deleteToolTip: null,
103
103
  continuePolygonMsg: '点击继续绘制图形',
104
104
  continueLineMsg: '点击继续绘制线',
105
- listener: null
105
+ listener: null,
106
+ drawElements: [],
107
+ drawLayer: null,
108
+ feature: null,
109
+ draw: null
110
+ };
111
+ _this.clusterInfo = {
112
+ clickFeature: null,
113
+ clickResolution: null,
114
+ hoverFeature: null,
115
+ clusterSource: null,
116
+ clusterHulls: null,
117
+ clusters: null,
118
+ clusterCircles: null
106
119
  };
107
120
  _this.state = {
108
121
  gis: null, //地图对象
@@ -142,7 +155,12 @@ var OlMap = function (_React$Component) {
142
155
  resolve();
143
156
  });
144
157
  });
145
- Promise.all([PointCollection]).then(function () {
158
+ var Client9 = new Promise(function (resolve, reject) {
159
+ $.getScript(_default2.default.openlayerServerURL + '/iclient9-openlayers.js', function () {
160
+ resolve();
161
+ });
162
+ });
163
+ Promise.all([PointCollection, Client9]).then(function () {
146
164
  resolve(window.OlMap);
147
165
  });
148
166
  });
@@ -318,10 +336,10 @@ var OlMap = function (_React$Component) {
318
336
  var projection = olProps.projection,
319
337
  olCoverage = olProps.olCoverage;
320
338
 
321
- if (window.OlMap) {
322
- window.OlMap[mapId] = null;
339
+ if (window.VtxMap) {
340
+ window.VtxMap[mapId] = null;
323
341
  } else {
324
- window.OlMap = {};
342
+ window.VtxMap = {};
325
343
  }
326
344
  if (!minZoom) {
327
345
  minZoom = 2;
@@ -332,7 +350,7 @@ var OlMap = function (_React$Component) {
332
350
  if (!projection) {
333
351
  projection = 'EPSG:4326';
334
352
  }
335
- window.OlMap[mapId] = t.state.gis = new ol.Map({
353
+ window.VtxMap[mapId] = t.state.gis = new ol.Map({
336
354
  target: mapId.toString(),
337
355
  view: new ol.View({
338
356
  center: mapCenter && mapCenter instanceof Array && mapCenter.length == 2 ? mapCenter : [116.400433, 39.906705], //中心点
@@ -357,14 +375,22 @@ var OlMap = function (_React$Component) {
357
375
  });
358
376
  if ((olCoverage || []).length > 0) {
359
377
  (olCoverage || []).map(function (item) {
360
- if (OL_SCREEN[item.coverage]) {
361
- var _layer = eval(OL_SCREEN[item.coverage].initLayer);
378
+ if (item.coverage.startsWith("http") || item.coverage.startsWith('/')) {
379
+ // 超图图层
380
+ var _layer = new ol.layer.Tile({
381
+ source: new ol.source.TileSuperMapRest({
382
+ url: item.coverage
383
+ })
384
+ });
362
385
  t.state.gis.addLayer(_layer);
386
+ } else if (OL_SCREEN[item.coverage]) {
387
+ var _layer2 = eval(OL_SCREEN[item.coverage].initLayer);
388
+ t.state.gis.addLayer(_layer2);
363
389
  }
364
390
  });
365
391
  } else {
366
- var _layer2 = eval(OL_SCREEN.default.initLayer);
367
- t.state.gis.addLayer(_layer2);
392
+ var _layer3 = eval(OL_SCREEN.default.initLayer);
393
+ t.state.gis.addLayer(_layer3);
368
394
  }
369
395
  }
370
396
  // 设置中心点
@@ -928,28 +954,94 @@ var OlMap = function (_React$Component) {
928
954
  };
929
955
  }
930
956
  }
931
- // 绘图时创建绘图结果提示
957
+ /*工具方法*/
932
958
 
933
959
  }, {
934
- key: 'createMeasureTooltip',
935
- value: function createMeasureTooltip() {
960
+ key: 'vtxRangingTool',
961
+ value: function vtxRangingTool() {
936
962
  var t = this;
937
- var gis = t.state.gis;
938
- var drawInfo = t.drawInfo;
939
-
940
- if (drawInfo.measureTooltipElement) {
941
- drawInfo.measureTooltipElement.parentNode.removeChild(measureTooltipElement);
942
- }
943
- drawInfo.measureTooltipElement = document.createElement('div');
944
- drawInfo.measureTooltipElement.className = 'ol-tooltip ol-tooltip-measure';
945
- drawInfo.measureTooltip = new ol.Overlay({
946
- element: drawInfo.measureTooltipElement,
947
- offset: [0, -15],
948
- positioning: 'bottom-center',
949
- stopEvent: false,
950
- insertFirst: false
963
+ var source = new ol.source.Vector({});
964
+ t.rangingInfo.drawLayer = new ol.layer.Vector({
965
+ source: source,
966
+ style: new ol.style.Style({
967
+ fill: new ol.style.Fill({
968
+ color: 'rgba(255, 255, 255, 0.2)'
969
+ }),
970
+ stroke: new ol.style.Stroke({
971
+ color: '#ffcc33',
972
+ width: 4
973
+ }),
974
+ image: new ol.style.Circle({
975
+ radius: 7,
976
+ fill: new ol.style.Fill({
977
+ color: '#ffcc33'
978
+ })
979
+ })
980
+ })
981
+ });
982
+ t.rangingInfo.draw = new ol.interaction.Draw({
983
+ source: source,
984
+ type: 'LineString',
985
+ style: new ol.style.Style({
986
+ fill: new ol.style.Fill({
987
+ color: 'rgba(255, 255, 255, 0.2)'
988
+ }),
989
+ stroke: new ol.style.Stroke({
990
+ color: 'rgba(0, 0, 0, 0.5)',
991
+ lineDash: [10, 10],
992
+ width: 4
993
+ }),
994
+ image: new ol.style.Circle({
995
+ radius: 5,
996
+ stroke: new ol.style.Stroke({
997
+ color: 'rgba(0, 0, 0, 0.7)'
998
+ }),
999
+ fill: new ol.style.Fill({
1000
+ color: 'rgba(255, 255, 255, 0.2)'
1001
+ })
1002
+ })
1003
+ })
1004
+ });
1005
+ var obj = {};
1006
+ t.createHelpTooltip();
1007
+ t.createMeasureTooltip();
1008
+ t.createDeleteTooltip();
1009
+ t.state.gis.addLayer(t.rangingInfo.drawLayer);
1010
+ t.state.gis.addInteraction(t.rangingInfo.draw);
1011
+ // 开始监听绘制
1012
+ t.rangingInfo.draw.on('drawstart', function (evt) {
1013
+ t.rangingInfo.feature = evt.feature;
1014
+ var tooltipCoord = evt.coordinate;
1015
+ t.rangingInfo.listener = evt.feature.getGeometry().on('change', function (evt) {
1016
+ var geom = evt.target;
1017
+ var flatCoordinates = geom.flatCoordinates;
1018
+
1019
+ var lngLats = [[flatCoordinates[0], flatCoordinates[1]], [flatCoordinates[2], flatCoordinates[3]]];
1020
+ var output = t.formatLength(geom);
1021
+ tooltipCoord = geom.getLastCoordinate();
1022
+ obj = {
1023
+ distance: output,
1024
+ lnglats: lngLats
1025
+ };
1026
+ t.rangingInfo.measureTooltipElement.innerHTML = output;
1027
+ t.rangingInfo.measureTooltip.setPosition(tooltipCoord);
1028
+ t.rangingInfo.deleteToolTip.setPosition(tooltipCoord);
1029
+ t.rangingInfo.deleteToolTip.setOffset([20, 10]);
1030
+ });
1031
+ });
1032
+ // 双击绘制完成
1033
+ t.rangingInfo.draw.on('drawend', function () {
1034
+ t.rangingInfo.measureTooltipElement.className = 'ol-tooltip ol-tooltip-static';
1035
+ t.rangingInfo.measureTooltip.setOffset([0, -7]);
1036
+ t.rangingInfo.feature = null;
1037
+ t.rangingInfo.measureTooltipElement = null;
1038
+ // t.createMeasureTooltip();
1039
+ new ol.Observable.unByKey(t.rangingInfo.listener);
1040
+ t.state.gis.removeInteraction(t.rangingInfo.draw);
1041
+ if ('mapRangingTool' in t.props) {
1042
+ t.props.mapRangingTool(obj);
1043
+ }
951
1044
  });
952
- gis.addOverlay(drawInfo.measureTooltip);
953
1045
  }
954
1046
  // 绘图时创建提示
955
1047
 
@@ -957,42 +1049,88 @@ var OlMap = function (_React$Component) {
957
1049
  key: 'createHelpTooltip',
958
1050
  value: function createHelpTooltip() {
959
1051
  var t = this;
960
- var gis = t.state.gis;
961
- var drawInfo = t.drawInfo;
962
-
963
- if (drawInfo.helpTooltipElement) {
964
- drawInfo.helpTooltipElement.parentNode.removeChild(helpTooltipElement);
1052
+ if (t.rangingTool.helpTooltipElement) {
1053
+ t.rangingTool.helpTooltipElement.parentNode.removeChild(t.rangingTool.helpTooltipElement);
965
1054
  }
966
- drawInfo.helpTooltipElement = document.createElement('div');
967
- drawInfo.helpTooltipElement.className = 'ol-tooltip hidden';
968
- drawInfo.helpTooltip = new ol.Overlay({
969
- element: drawInfo.helpTooltipElement,
1055
+ t.rangingTool.helpTooltipElement = document.createElement('div');
1056
+ t.rangingTool.helpTooltipElement.className = 'ol-tooltip hidden';
1057
+ t.rangingTool.helpTooltip = new ol.Overlay({
1058
+ element: t.rangingTool.helpTooltipElement,
970
1059
  offset: [15, 0],
971
1060
  positioning: 'center-left'
972
1061
  });
973
- gis.addOverlay(drawInfo.helpTooltip);
1062
+ t.state.gis.addOverlay(t.rangingTool.helpTooltip);
974
1063
  }
975
- /*工具方法*/
1064
+ // 工具画图提示
976
1065
 
977
1066
  }, {
978
- key: 'vtxRangingTool',
979
- value: function vtxRangingTool(mapRangingTool) {
1067
+ key: 'createMeasureTooltip',
1068
+ value: function createMeasureTooltip() {
980
1069
  var t = this;
981
- //关闭测距时双击地图缩放功能
982
- t.state.gis.disableDoubleClickZoom();
983
- //开启测距状态
984
- if (!t.rangingTool.isRanging) {
985
- t.rangingTool.isRanging = true;
986
- }
987
- //初始测距回调
988
- if (!t.rangingTool.mapRangingTool) {
989
- t.rangingTool.mapRangingTool = mapRangingTool;
1070
+ if (t.rangingInfo.measureTooltipElement) {
1071
+ t.rangingInfo.measureTooltipElement.parentNode.removeChild(t.rangingInfo.measureTooltipElement);
990
1072
  }
1073
+ t.rangingInfo.measureTooltipElement = document.createElement('div');
1074
+ t.rangingInfo.measureTooltipElement.className = 'ol-tooltip ol-tooltip-measure';
1075
+ t.rangingInfo.measureTooltip = new ol.Overlay({
1076
+ element: t.rangingInfo.measureTooltipElement,
1077
+ offset: [0, -15],
1078
+ positioning: 'bottom-center',
1079
+ stopEvent: false,
1080
+ insertFirst: false
1081
+ });
1082
+ t.state.gis.addOverlay(t.rangingInfo.measureTooltip);
991
1083
  }
992
- // 获取地图的当前位置状态信息
1084
+ // 创建删除提示
993
1085
 
1086
+ }, {
1087
+ key: 'createDeleteTooltip',
1088
+ value: function createDeleteTooltip() {
1089
+ var t = this;
1090
+ if (t.rangingInfo.deleteToolTipElement) {
1091
+ t.rangingInfo.deleteToolTipElement.parentNode.removeChild(t.rangingInfo.deleteToolTipElement);
1092
+ }
1093
+ t.rangingInfo.deleteToolTipElement = document.createElement('div');
1094
+ t.rangingInfo.deleteToolTipElement.className = 'ol-tooltip-delete';
1095
+ t.rangingInfo.deleteToolTipElement.innerHTML = 'X';
1096
+ t.rangingInfo.deleteToolTipElement.addEventListener('click', function (e) {
1097
+ t.rangingInfo.measureTooltipElement = null;
1098
+ t.rangingInfo.helpTooltipElement = null;
1099
+ t.rangingInfo.deleteToolTipElement = null;
1100
+ t.state.gis.removeOverlay(t.rangingInfo.measureTooltip);
1101
+ t.state.gis.removeOverlay(t.rangingTool.helpTooltip);
1102
+ t.state.gis.removeOverlay(t.rangingInfo.deleteToolTip);
1103
+ new ol.Observable.unByKey(t.rangingInfo.listener);
1104
+ t.state.gis.removeInteraction(t.rangingInfo.draw);
1105
+ t.state.gis.removeLayer(t.rangingInfo.drawLayer);
1106
+ });
1107
+ t.rangingInfo.deleteToolTip = new ol.Overlay({
1108
+ element: t.rangingInfo.deleteToolTipElement,
1109
+ offset: [15, 15],
1110
+ positioning: 'bottom-center',
1111
+ stopEvent: false,
1112
+ insertFirst: true
1113
+ });
1114
+ t.state.gis.addOverlay(t.rangingInfo.deleteToolTip);
1115
+ }
1116
+ }, {
1117
+ key: 'formatLength',
1118
+ value: function formatLength(line) {
1119
+ var flatCoordinates = line.flatCoordinates;
1120
+
1121
+ var length = new ol.sphere.getDistance([flatCoordinates[0], flatCoordinates[1]], [flatCoordinates[2], flatCoordinates[3]]);
1122
+ var output = '';
1123
+ if (length > 100) {
1124
+ output = Math.round(length / 1000 * 100) / 100 + ' ' + 'km';
1125
+ } else {
1126
+ output = Math.round(length * 100) / 100 + ' ' + 'm';
1127
+ }
1128
+ return output;
1129
+ }
994
1130
  }, {
995
1131
  key: 'getMapExtent',
1132
+
1133
+ // 获取地图的当前位置状态信息
996
1134
  value: function getMapExtent() {
997
1135
  var t = this;
998
1136
  var gis = t.state.gis;
@@ -1022,10 +1160,10 @@ var OlMap = function (_React$Component) {
1022
1160
  }
1023
1161
  }
1024
1162
  //将制定图元展示在视野内 (强制改变地图中心位置)
1025
- /*
1026
- 参数arg格式如下1,2
1027
- 1.string 格式如:'1,a,2,3,4'
1028
- 2.数组 ['1','2']
1163
+ /*
1164
+ 参数arg格式如下1,2
1165
+ 1.string 格式如:'1,a,2,3,4'
1166
+ 2.数组 ['1','2']
1029
1167
  */
1030
1168
 
1031
1169
  }, {
@@ -1060,28 +1198,31 @@ var OlMap = function (_React$Component) {
1060
1198
  }
1061
1199
  if (typeof arg === 'string') {
1062
1200
  ary = arg.split(',');
1063
- obj = t.getFitView(ary);
1064
1201
  } else if (arg instanceof Array) {
1065
- if (ary[0] instanceof Array) {
1066
- obj = gis.getFitView(ary[0]);
1067
- } else {
1068
- obj = t.getFitView(arg);
1202
+ ary = arg;
1203
+ }
1204
+ for (var i = 0; i < ary.length; i++) {
1205
+ var g = t.GM.getGraphicParam(ary[i]);
1206
+ if (g) {
1207
+ switch (g.geometry.type) {
1208
+ case 'point':
1209
+ obj.push([g.geometry.x, g.geometry.y]);
1210
+ case 'circle':
1211
+ obj.push([g.geometry.x, g.geometry.y]);
1212
+ break;
1213
+ case 'polyline':
1214
+ obj = [].concat(_toConsumableArray(obj), _toConsumableArray(g.geometry.paths));
1215
+ break;
1216
+ case 'polygon':
1217
+ obj = [].concat(_toConsumableArray(obj), _toConsumableArray(g.geometry.rings));
1218
+ break;
1219
+ }
1069
1220
  }
1070
1221
  }
1071
- if (!obj) {
1072
- return false;
1222
+ if (obj.length > 0) {
1223
+ var displayRange = new ol.extent.boundingExtent(obj);
1224
+ gis.getView().fit(displayRange, gis.getSize());
1073
1225
  }
1074
- // let zoom = t.state.gis.getView().getZoom();
1075
- if (type) {
1076
- gis.getView().fit(obj, gis.getSize());
1077
- }
1078
- // if(!type || type == 'all'){
1079
-
1080
- // }else if(type == 'zoom'){
1081
- // gis.getView().setZoom(zoom)
1082
- // }else if(type == 'center'){
1083
- // gis.getView().setCenter(obj.lngLat);
1084
- // }
1085
1226
  }
1086
1227
  }, {
1087
1228
  key: 'getFitView',
@@ -1340,6 +1481,7 @@ var OlMap = function (_React$Component) {
1340
1481
  var t = this;
1341
1482
  var ps = [];
1342
1483
  var psids = [].concat(_toConsumableArray(t.state.pointIds));
1484
+ console.log('addPoint', mapPoints);
1343
1485
  mapPoints.map(function (item, index) {
1344
1486
  //如果id重复,直接跳过不执行.
1345
1487
  if (_this2.GM.isRepetition(item.id)) {
@@ -1484,6 +1626,7 @@ var OlMap = function (_React$Component) {
1484
1626
  var mapPoints = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];
1485
1627
 
1486
1628
  var t = this;
1629
+ console.log('updatePoint', mapPoints);
1487
1630
  mapPoints.map(function (item, index) {
1488
1631
  //判断图元是否存在.
1489
1632
  if (_this3.GM.isRepetition(item.id)) {
@@ -2116,11 +2259,28 @@ var OlMap = function (_React$Component) {
2116
2259
  return item.name == 'heatMap';
2117
2260
  })[0];
2118
2261
  hMap.getSource().clear();
2119
- map.removeLayer(layer);
2262
+ gis.removeLayer(layer);
2120
2263
  }
2121
2264
  t.heatmap = null;
2122
2265
  t.movePoints = [];
2266
+ t.pointLayers.map(function (item) {
2267
+ gis.removeLayer(item);
2268
+ t.pointLayers = [];
2269
+ });
2123
2270
  t.clearAllPointCollection();
2271
+ t.closeDraw();
2272
+ if (t.clusterInfo.clusterHulls || t.clusterInfo.clusters || t.clusterInfo.clusterCircles) {
2273
+ t.clusterHulls.getSource().clear();
2274
+ t.clusterInfo.clusterSource = null;
2275
+ gis.removeLayer(t.clusterInfo.clusterHulls);
2276
+ gis.removeLayer(t.clusterInfo.clusters);
2277
+ gis.removeLayer(t.clusterInfo.clusterCircles);
2278
+ t.clusterInfo.clusterHulls = null;
2279
+ t.clusterInfo.clusters = null;
2280
+ t.clusterInfo.clusterCircles = null;
2281
+ }
2282
+ //清空缓存数据
2283
+ t.GM.clearAll();
2124
2284
  //循环所有id删除
2125
2285
  var _t$state = t.state,
2126
2286
  pointIds = _t$state.pointIds,
@@ -2252,6 +2412,152 @@ var OlMap = function (_React$Component) {
2252
2412
  if (y > ymax1) y = ymax1 - 0.1;
2253
2413
  t.state.gis.getView().setCenter([x, y]);
2254
2414
  }
2415
+ //聚合地图图元(arg为空时聚合全部点)
2416
+
2417
+ }, {
2418
+ key: 'cluster',
2419
+ value: function cluster(arg) {
2420
+ var t = this;
2421
+ var ary = [];
2422
+ if (!arg) {
2423
+ var pointIds = t.state.pointIds;
2424
+
2425
+ ary = pointIds;
2426
+ } else {
2427
+ if (Object.prototype.toString.apply(arg) === '[object Array]') {
2428
+ ary = arg;
2429
+ } else if (typeof arg === 'string') {
2430
+ ary = arg.split(',');
2431
+ }
2432
+ }
2433
+ t.pointLayers.map(function (item) {
2434
+ t.state.gis.removeLayer(item.layer);
2435
+ t.pointLayers = [];
2436
+ });
2437
+ var ms = this.GM.getMoreGraphic(ary).filter(function (item, index) {
2438
+ // return !item && item != 0 ? false : true;
2439
+ return item && item.getGeometry().getType() === 'Point' && !item.label;
2440
+ });
2441
+ var source = new ol.source.Vector({
2442
+ features: ms
2443
+ });
2444
+ t.clusterInfo.clusterSource = new ol.source.Cluster({
2445
+ distance: 80,
2446
+ minDistance: 0,
2447
+ source: source
2448
+ });
2449
+ t.clusterInfo.clusterHulls = new ol.layer.Vector({
2450
+ source: t.clusterInfo.clusterSource,
2451
+ style: clusterHullStyle
2452
+ });
2453
+ t.state.gis.addLayer(t.clusterInfo.clusterHulls);
2454
+ t.clusterInfo.clusters = new ol.layer.Vector({
2455
+ source: t.clusterInfo.clusterSource,
2456
+ style: clusterStyle
2457
+ });
2458
+ t.state.gis.addLayer(t.clusterInfo.clusters);
2459
+ t.clusterInfo.clusterCircles = new ol.layer.Vector({
2460
+ source: t.clusterInfo.clusterSource,
2461
+ style: clusterCircleStyle
2462
+ });
2463
+ t.state.gis.addLayer(t.clusterInfo.clusterCircles);
2464
+ function clusterMemberStyle(clusterMember) {
2465
+ var style = clusterMember.getStyle();
2466
+ var image = style.getImage();
2467
+ return new ol.style.Style({
2468
+ geometry: clusterMember.getGeometry(),
2469
+ image: image
2470
+ });
2471
+ }
2472
+ function clusterCircleStyle(cluster, resolution) {
2473
+ if (cluster !== t.clusterInfo.clickFeature || resolution !== t.clusterInfo.clickResolution) {
2474
+ return;
2475
+ }
2476
+ var clusterMembers = cluster.get('features');
2477
+ var centerCoordinates = cluster.getGeometry().getCoordinates();
2478
+ return generatePointsCircle(clusterMembers.length, cluster.getGeometry().getCoordinates(), resolution).reduce(function (styles, coordinates, i) {
2479
+ var point = new ol.geom.Point(coordinates);
2480
+ var line = new ol.geom.LineString([centerCoordinates, coordinates]);
2481
+ styles.unshift(new ol.style.Style({
2482
+ geometry: line,
2483
+ stroke: new ol.style.Stroke({
2484
+ color: 'rgba(204, 85, 0, 1)',
2485
+ width: 1.5
2486
+ })
2487
+ }));
2488
+ styles.push(clusterMemberStyle(new ol.Feature(_extends({}, clusterMembers[i].getProperties(), {
2489
+ geometry: point
2490
+ }))));
2491
+ return styles;
2492
+ }, []);
2493
+ }
2494
+ function generatePointsCircle(count, clusterCenter, resolution) {
2495
+ var circumference = 1 * 28 * (2 + count);
2496
+ var legLength = circumference / (Math.PI * 2); //radius from circumference
2497
+ var angleStep = Math.PI * 2 / count;
2498
+ var res = [];
2499
+ var angle = void 0;
2500
+ legLength = Math.max(legLength, 35) * resolution; // Minimum distance to get outside the cluster icon.
2501
+ for (var i = 0; i < count; ++i) {
2502
+ // Clockwise, like spiral.
2503
+ angle = Math.PI / 2 + i * angleStep;
2504
+ res.push([clusterCenter[0] + legLength * Math.cos(angle), clusterCenter[1] + legLength * Math.sin(angle)]);
2505
+ }
2506
+ return res;
2507
+ }
2508
+ function clusterHullStyle(cluster) {
2509
+ if (cluster !== t.clusterInfo.hoverFeature) {
2510
+ return;
2511
+ }
2512
+ var originalFeatures = cluster.get('features');
2513
+ var points = originalFeatures.map(function (feature) {
2514
+ return feature.getGeometry().getCoordinates();
2515
+ });
2516
+ return new ol.style.Style({
2517
+ geometry: new ol.geom.Polygon(points),
2518
+ fill: new ol.style.Fill({
2519
+ color: 'rgba(255, 153, 0, 0.4)'
2520
+ }),
2521
+ stroke: new ol.style.Stroke({
2522
+ color: 'rgba(204, 85, 0, 1)',
2523
+ width: 1.5
2524
+ })
2525
+ });
2526
+ }
2527
+ function clusterStyle(feature) {
2528
+ var size = feature.get('features').length;
2529
+ if (size > 1) {
2530
+ return [new ol.style.Style({
2531
+ image: new ol.style.Circle({
2532
+ radius: 20,
2533
+ fill: new ol.style.Fill({
2534
+ color: 'rgba(255, 153, 102, 0.3)'
2535
+ })
2536
+ })
2537
+ }), new ol.style.Style({
2538
+ image: new ol.style.Circle({
2539
+ radius: 14,
2540
+ fill: new ol.style.Fill({
2541
+ color: 'rgba(255, 165, 0, 0.7)'
2542
+ })
2543
+ }),
2544
+ text: new ol.style.Text({
2545
+ text: size.toString(),
2546
+ fill: new ol.style.Fill({
2547
+ color: '#fff'
2548
+ }),
2549
+ stroke: new ol.style.Stroke({
2550
+ color: 'rgba(0, 0, 0, 0.6)',
2551
+ width: 3
2552
+ })
2553
+ })
2554
+ })];
2555
+ } else {
2556
+ var originalFeature = feature.get('features')[0];
2557
+ return clusterMemberStyle(originalFeature);
2558
+ }
2559
+ }
2560
+ }
2255
2561
  /*公共方法*/
2256
2562
  //判断extent1是否在extent2内部
2257
2563
 
@@ -2287,7 +2593,7 @@ var OlMap = function (_React$Component) {
2287
2593
  }, {
2288
2594
  key: 'calculatePointsDistance',
2289
2595
  value: function calculatePointsDistance(fp, ep) {
2290
- return Math.round(ol.sphere.getDistance(fp, ep));
2596
+ return Math.round(new ol.sphere.getDistance(fp, ep));
2291
2597
  }
2292
2598
  //计算多个点的距离(常用于线计算)
2293
2599
 
@@ -2698,11 +3004,13 @@ var OlMap = function (_React$Component) {
2698
3004
  // 等待地图加载
2699
3005
 
2700
3006
  if (!t.state.mapCreated) return;
2701
- /*点数据处理
2702
- pointData[2]相同的点,执行刷新
2703
- pointData[1]的数据在idsForGraphicId中不存在的,执行新增
2704
- pointData[0]数据中多余的id,执行删除
3007
+ /*点数据处理
3008
+ pointData[2]相同的点,执行刷新
3009
+ pointData[1]的数据在idsForGraphicId中不存在的,执行新增
3010
+ pointData[0]数据中多余的id,执行删除
2705
3011
  */
3012
+ console.log(mapPoints, t.props.mapPoints);
3013
+ console.log(!t.deepEqual(mapPoints, t.props.mapPoints));
2706
3014
  if (mapPoints instanceof Array && t.props.mapPoints instanceof Array && !t.deepEqual(mapPoints, t.props.mapPoints)) {
2707
3015
  var oldMapPoints = t.props.mapPoints;
2708
3016
  var newMapPoints = mapPoints;
@@ -2761,9 +3069,9 @@ var OlMap = function (_React$Component) {
2761
3069
  //更新
2762
3070
  t.updatePoint([].concat(_toConsumableArray(upds), _toConsumableArray(otherupds)));
2763
3071
  }
2764
- /*
2765
- 线数据处理
2766
- 先全删除,再新增
3072
+ /*
3073
+ 线数据处理
3074
+ 先全删除,再新增
2767
3075
  */
2768
3076
  if (mapLines instanceof Array && t.props.mapLines instanceof Array && !t.deepEqual(mapLines, t.props.mapLines)) {
2769
3077
  var oldMapLines = t.props.mapLines;
@@ -2822,9 +3130,9 @@ var OlMap = function (_React$Component) {
2822
3130
  //更新
2823
3131
  t.updateLine([].concat(_toConsumableArray(_upds), _toConsumableArray(_otherupds)));
2824
3132
  }
2825
- /*
2826
- 面数据处理
2827
- 先全删除,再新增
3133
+ /*
3134
+ 面数据处理
3135
+ 先全删除,再新增
2828
3136
  */
2829
3137
  if (mapPolygons instanceof Array && t.props.mapPolygons instanceof Array && !t.deepEqual(mapPolygons, t.props.mapPolygons)) {
2830
3138
  var oldMapPolygons = t.props.mapPolygons;
@@ -2883,9 +3191,9 @@ var OlMap = function (_React$Component) {
2883
3191
  //更新
2884
3192
  t.updatePolygon([].concat(_toConsumableArray(_upds2), _toConsumableArray(_otherupds2)));
2885
3193
  }
2886
- /*
2887
- 圆数据处理
2888
- 先全删除,再新增
3194
+ /*
3195
+ 圆数据处理
3196
+ 先全删除,再新增
2889
3197
  */
2890
3198
  if (mapCircles instanceof Array && t.props.mapCircles instanceof Array && !t.deepEqual(mapCircles, t.props.mapCircles)) {
2891
3199
  var oldMapCircles = t.props.mapCircles;
@@ -3235,7 +3543,7 @@ var OlMap = function (_React$Component) {
3235
3543
  clearInterval(t.animTimer[j]);
3236
3544
  }
3237
3545
  }
3238
- window.OlMap[t.state.mapId] = null;
3546
+ window.VtxMap[t.state.mapId] = null;
3239
3547
  }
3240
3548
  }]);
3241
3549