@kq_npm/client3d_webgl_vue 0.7.6-beta → 0.7.7-beta

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 (3) hide show
  1. package/index.js +95 -198
  2. package/package.json +1 -1
  3. package/scenceview/index.js +95 -198
package/index.js CHANGED
@@ -1117,8 +1117,10 @@ class LayerManager {
1117
1117
  source.mapServerInfo = (0,util_namespaceObject.formatKQMapInfo)(mapInfo.result, serverUrl, serverName, token, null, true);
1118
1118
  source.mapServerInfo.layers_old.forEach(layer_old => {
1119
1119
  layer_old.guid = source.name + "@@@" + layer_old.id;
1120
- });
1121
- this._layerListData_old = this._layerListData_old.concat(source.mapServerInfo.layers_old);
1120
+ layer_old.sourceName = source.name;
1121
+
1122
+ this._layerListData_old.push(layer_old);
1123
+ }, this);
1122
1124
  });
1123
1125
  sourcePromises.push(sourcePromise);
1124
1126
  }
@@ -1131,7 +1133,20 @@ class LayerManager {
1131
1133
  Promise.all(this._promises).then(() => {
1132
1134
  this._layerTreeData = layer.layerTreeData;
1133
1135
 
1134
- this._scenceView.fire("resetLayerDatas");
1136
+ this._scenceView.fire("resetLayerDatas"); //重置Imagerylayer图层顺序,wms和wmts异步加载导致图层顺序错乱
1137
+
1138
+
1139
+ this._layerListData.forEach(layerData => {
1140
+ if (layerData.serverType === "imagerylayer") {
1141
+ var imagerylayer = this.getLayerByGuid(layerData.guid, 'imagerylayer');
1142
+
1143
+ if (imagerylayer) {
1144
+ this._viewer.imageryLayers.raiseToTop(imagerylayer);
1145
+ }
1146
+ }
1147
+ }, this);
1148
+
1149
+ this.recordImageryLayerOriginIndex();
1135
1150
  });
1136
1151
  });
1137
1152
  }
@@ -1154,6 +1169,7 @@ class LayerManager {
1154
1169
  layerData.sourceType = source.serverType;
1155
1170
  layerData.renderType = source.renderType;
1156
1171
  layerData.url = source.url;
1172
+ layerData.guid = layerData.sourceName + "@@@" + (layerData.id || Math.random() * 10);
1157
1173
  var type = layerData.renderType;
1158
1174
 
1159
1175
  if (layerData.sourceType === "kqserver") {
@@ -1182,16 +1198,16 @@ class LayerManager {
1182
1198
  type = "kqgis3dserver";
1183
1199
  }
1184
1200
 
1185
- var promise = this.addLayerData(layerData, type);
1201
+ layerData.addType = type;
1186
1202
 
1187
- if (promise) {
1188
- this._promises.push(promise);
1203
+ this._layerListData.push(layerData);
1189
1204
 
1190
- promise.then(() => {
1191
- this._layerListData.push(layerData);
1192
- });
1193
- } else {
1194
- this._layerListData.push(layerData);
1205
+ if (!this._scenceShowLayers || this._scenceShowLayers.indexOf(layerData.name) > -1) {
1206
+ var promise = this.addLayerData(layerData);
1207
+
1208
+ if (promise) {
1209
+ this._promises.push(promise);
1210
+ }
1195
1211
  }
1196
1212
  }
1197
1213
  }
@@ -1199,7 +1215,8 @@ class LayerManager {
1199
1215
  } //添加图层数据
1200
1216
 
1201
1217
 
1202
- addLayerData(layerData, type) {
1218
+ addLayerData(layerData) {
1219
+ var type = layerData.addType;
1203
1220
  let url = layerData.url;
1204
1221
  type = type || "";
1205
1222
  type = type.toLowerCase();
@@ -1235,15 +1252,9 @@ class LayerManager {
1235
1252
  name: name,
1236
1253
  url: url
1237
1254
  }));
1238
- layerData.guid = layer.guid;
1255
+ this._guidMapping[layerData.guid] = layer.guid;
1239
1256
  layerData.visible = true;
1240
1257
  layerData.serverType = "imagerylayer";
1241
-
1242
- if (this._scenceShowLayers && this._scenceShowLayers.indexOf(name) === -1) {
1243
- layerData.visible = false;
1244
- layer.show = false;
1245
- }
1246
-
1247
1258
  break;
1248
1259
 
1249
1260
  case 'obterrain':
@@ -1253,18 +1264,13 @@ class LayerManager {
1253
1264
  url: url
1254
1265
  });
1255
1266
  if (!layer.guid) layer.guid = Cesium.createGuid();
1256
- layerData.guid = layer.guid;
1267
+ this._guidMapping[layerData.guid] = layer.guid;
1257
1268
  layerData.visible = true;
1258
- layerData.serverType = "terrainprovider"; //this._viewer.terrainProvider = layer;
1269
+ layerData.serverType = "terrainprovider";
1270
+ this._viewer.terrainProvider = layer;
1259
1271
 
1260
1272
  this._terrainProviders.push(layer);
1261
1273
 
1262
- if (this._scenceShowLayers && this._scenceShowLayers.indexOf(name) === -1) {
1263
- layerData.visible = false;
1264
- } else {
1265
- this._viewer.terrainProvider = layer;
1266
- }
1267
-
1268
1274
  break;
1269
1275
 
1270
1276
  case 'stkterrain':
@@ -1275,20 +1281,14 @@ class LayerManager {
1275
1281
  requestVertexNormals: true,
1276
1282
  requestWaterMask: false
1277
1283
  });
1278
- if (!layer.guid) layer.guid = Cesium.createGuid(); //this._viewer.terrainProvider = layer;
1284
+ if (!layer.guid) layer.guid = Cesium.createGuid();
1285
+ this._viewer.terrainProvider = layer;
1279
1286
 
1280
1287
  this._terrainProviders.push(layer);
1281
1288
 
1282
- layerData.guid = layer.guid;
1289
+ this._guidMapping[layerData.guid] = layer.guid;
1283
1290
  layerData.visible = true;
1284
1291
  layerData.serverType = "terrainprovider";
1285
-
1286
- if (this._scenceShowLayers && this._scenceShowLayers.indexOf(name) === -1) {
1287
- layerData.visible = false;
1288
- } else {
1289
- this._viewer.terrainProvider = layer;
1290
- }
1291
-
1292
1292
  break;
1293
1293
 
1294
1294
  case "3dtiles":
@@ -1296,87 +1296,36 @@ class LayerManager {
1296
1296
  name: name,
1297
1297
  url: url
1298
1298
  }));
1299
- layerData.guid = layer.guid;
1299
+ this._guidMapping[layerData.guid] = layer.guid;
1300
1300
  layerData.visible = true;
1301
1301
  layerData.serverType = "3dtiles";
1302
-
1303
- if (this._scenceShowLayers && this._scenceShowLayers.indexOf(name) === -1) {
1304
- layerData.visible = false;
1305
- layer.show = false;
1306
- }
1307
-
1308
1302
  break;
1309
1303
 
1310
1304
  case "kqgis3dserver":
1311
- var hideLayer = this._scenceShowLayers && this._scenceShowLayers.indexOf(name) === -1;
1312
1305
  var that = this;
1313
1306
  promise = this._viewer.addKq3dServerLayerGroupExt(url).then(group => {
1314
1307
  var layers = group._addedLayers || group._layers;
1315
1308
 
1316
- if (layers) {
1317
- var length = layers.length;
1318
-
1319
- if (length > 1) {
1320
- layerData.guid = group.guid;
1321
- layerData.children = [];
1309
+ if (layers && layers.length > 0) {
1310
+ layer = layers[0];
1311
+ var serverType = "";
1312
+
1313
+ if (layer instanceof Cesium.Cesium3DTileset) {
1314
+ serverType = "3dtiles";
1315
+ } else if (layer instanceof Cesium.ImageryLayer) {
1316
+ serverType = "imagerylayer";
1317
+ } else if (layer instanceof Cesium.Kq3dFileTerrainProvider || layer instanceof Cesium.CesiumTerrainProvider) {
1318
+ serverType = "terrainprovider";
1319
+
1320
+ that._terrainProviders.push(layer);
1321
+ } else if (layer instanceof Cesium.Kq3dGeoJsonDataSource) {
1322
+ serverType = "datasource";
1322
1323
  }
1323
1324
 
1324
- for (var i = 0; i < length; i++) {
1325
- var serverType = "";
1326
-
1327
- if (layers[i] instanceof Cesium.Cesium3DTileset) {
1328
- serverType = "3dtiles";
1329
- } else if (layers[i] instanceof Cesium.ImageryLayer) {
1330
- serverType = "imagerylayer";
1331
- } else if (layers[i] instanceof Cesium.Kq3dFileTerrainProvider || layers[i] instanceof Cesium.CesiumTerrainProvider) {
1332
- serverType = "terrainprovider";
1333
-
1334
- that._terrainProviders.push(layers[i]);
1335
- } else if (layers[i] instanceof Cesium.Kq3dGeoJsonDataSource) {
1336
- serverType = "datasource";
1337
- }
1338
-
1339
- if (!layers[i].guid) layers[i].guid = Cesium.createGuid();
1340
-
1341
- if (length > 1) {
1342
- var child = {
1343
- guid: layers[i].guid,
1344
- name: layers[i].name,
1345
- visible: true,
1346
- serverType: serverType
1347
- };
1348
-
1349
- if (hideLayer) {
1350
- child.visible = false;
1351
-
1352
- if (serverType === "terrainprovider") {
1353
- layers[i].readyPromise.then(() => {
1354
- that._viewer.terrainProvider = that._emptyTerrainProvider;
1355
- });
1356
- } else {
1357
- layers[i].show = false;
1358
- }
1359
- }
1360
-
1361
- layerData.children.push(child);
1362
- } else {
1363
- layerData.guid = layers[i].guid;
1364
- layerData.visible = true;
1365
- layerData.serverType = serverType;
1366
-
1367
- if (hideLayer) {
1368
- layerData.visible = false;
1369
-
1370
- if (serverType === "terrainprovider") {
1371
- layers[i].readyPromise.then(() => {
1372
- that._viewer.terrainProvider = that._emptyTerrainProvider;
1373
- });
1374
- } else {
1375
- layers[i].show = false;
1376
- }
1377
- }
1378
- }
1379
- }
1325
+ if (!layer.guid) layer.guid = Cesium.createGuid();
1326
+ this._guidMapping[layerData.guid] = layer.guid;
1327
+ layerData.visible = true;
1328
+ layerData.serverType = serverType;
1380
1329
  }
1381
1330
  });
1382
1331
  break;
@@ -1387,19 +1336,12 @@ class LayerManager {
1387
1336
  url: url,
1388
1337
  layerName: layerData.layerName
1389
1338
  }));
1390
- layerData.guid = layer.guid;
1339
+ this._guidMapping[layerData.guid] = layer.guid;
1391
1340
  layerData.visible = true;
1392
1341
  layerData.serverType = "imagerylayer";
1393
-
1394
- if (this._scenceShowLayers && this._scenceShowLayers.indexOf(name) === -1) {
1395
- layerData.visible = false;
1396
- layer.show = false;
1397
- }
1398
-
1399
1342
  break;
1400
1343
 
1401
1344
  case "kqgismapserver":
1402
- layerData.guid = layerData.sourceName + "@@@" + layerData.id;
1403
1345
  var layerInfo = layerData.sourceLayers.find(item => {
1404
1346
  return item.id + "" == layerData.id + "";
1405
1347
  });
@@ -1423,11 +1365,6 @@ class LayerManager {
1423
1365
 
1424
1366
  this._guidMapping[layerData.guid] = layer.guid;
1425
1367
  layerData.serverType = "imagerylayer";
1426
-
1427
- if (this._scenceShowLayers && this._scenceShowLayers.indexOf(layerData.name) === -1) {
1428
- layerData.visible = false;
1429
- layer.show = false;
1430
- }
1431
1368
  }
1432
1369
 
1433
1370
  break;
@@ -1437,18 +1374,10 @@ class LayerManager {
1437
1374
  name: name,
1438
1375
  url: url,
1439
1376
  layers: layerData.id + ""
1440
- })); //layerData.guid = layer.guid;
1441
-
1442
- layerData.guid = layerData.sourceName + "@@@" + layerData.id;
1377
+ }));
1443
1378
  this._guidMapping[layerData.guid] = layer.guid;
1444
1379
  layerData.visible = true;
1445
1380
  layerData.serverType = "imagerylayer";
1446
-
1447
- if (this._scenceShowLayers && this._scenceShowLayers.indexOf(name) === -1) {
1448
- layerData.visible = false;
1449
- layer.show = false;
1450
- }
1451
-
1452
1381
  break;
1453
1382
 
1454
1383
  case "wms":
@@ -1474,16 +1403,10 @@ class LayerManager {
1474
1403
  }
1475
1404
  }
1476
1405
 
1477
- layerData.guid = layerData.sourceName + "@@@" + layerData.id;
1478
1406
  this._guidMapping[layerData.guid] = layers[0].guid;
1479
1407
  layerData.name = name || layers[0].name;
1480
1408
  layerData.visible = true;
1481
1409
  layerData.serverType = "imagerylayer";
1482
-
1483
- if (this._scenceShowLayers && this._scenceShowLayers.indexOf(layerData.name) === -1) {
1484
- layerData.visible = false;
1485
- layers[0].show = false;
1486
- }
1487
1410
  }
1488
1411
  });
1489
1412
  break;
@@ -1511,16 +1434,10 @@ class LayerManager {
1511
1434
  }
1512
1435
  }
1513
1436
 
1514
- layerData.guid = layerData.sourceName + "@@@" + layerData.id;
1515
1437
  this._guidMapping[layerData.guid] = layers[0].guid;
1516
1438
  layerData.name = name || layers[0].name;
1517
1439
  layerData.visible = true;
1518
1440
  layerData.serverType = "imagerylayer";
1519
-
1520
- if (this._scenceShowLayers && this._scenceShowLayers.indexOf(layerData.name) === -1) {
1521
- layerData.visible = false;
1522
- layers[0].show = false;
1523
- }
1524
1441
  }
1525
1442
  });
1526
1443
  break;
@@ -1548,14 +1465,9 @@ class LayerManager {
1548
1465
  this._viewer.dataSources.add(ds);
1549
1466
 
1550
1467
  ds.autoAvoid(this._viewer);
1551
- layerData.guid = ds.guid;
1468
+ this._guidMapping[layerData.guid] = ds.guid;
1552
1469
  layerData.visible = true;
1553
1470
  layerData.serverType = "datasource";
1554
-
1555
- if (this._scenceShowLayers && this._scenceShowLayers.indexOf(name) === -1) {
1556
- layerData.visible = false;
1557
- ds.show = false;
1558
- }
1559
1471
  });
1560
1472
  break;
1561
1473
 
@@ -1568,14 +1480,9 @@ class LayerManager {
1568
1480
  promise = ds.load(url).then(ds => {
1569
1481
  this._viewer.dataSources.add(ds);
1570
1482
 
1571
- layerData.guid = ds.guid;
1483
+ this._guidMapping[layerData.guid] = ds.guid;
1572
1484
  layerData.visible = true;
1573
1485
  layerData.serverType = "datasource";
1574
-
1575
- if (this._scenceShowLayers && this._scenceShowLayers.indexOf(name) === -1) {
1576
- layerData.visible = false;
1577
- ds.show = false;
1578
- }
1579
1486
  });
1580
1487
  break;
1581
1488
 
@@ -1584,14 +1491,9 @@ class LayerManager {
1584
1491
  promise = ds.load(url).then(ds => {
1585
1492
  this._viewer.dataSources.add(ds);
1586
1493
 
1587
- layerData.guid = ds.guid;
1494
+ this._guidMapping[layerData.guid] = ds.guid;
1588
1495
  layerData.visible = true;
1589
1496
  layerData.serverType = "datasource";
1590
-
1591
- if (this._scenceShowLayers && this._scenceShowLayers.indexOf(name) === -1) {
1592
- layerData.visible = false;
1593
- ds.show = false;
1594
- }
1595
1497
  });
1596
1498
  break;
1597
1499
 
@@ -1599,72 +1501,40 @@ class LayerManager {
1599
1501
  layer = this._viewer.imageryLayers.addImageryProvider(new Cesium.Kq3dTiandituImageryProvider({
1600
1502
  name: name,
1601
1503
  mapStyle: layerData.layerType + "_c"
1602
- })); //layerData.guid = layer.guid;
1603
-
1604
- layerData.guid = layerData.sourceName + "@@@" + layerData.layerType;
1504
+ }));
1605
1505
  this._guidMapping[layerData.guid] = layer.guid;
1606
1506
  layerData.visible = true;
1607
1507
  layerData.serverType = "imagerylayer";
1608
-
1609
- if (this._scenceShowLayers && this._scenceShowLayers.indexOf(name) === -1) {
1610
- layerData.visible = false;
1611
- layer.show = false;
1612
- }
1613
-
1614
1508
  break;
1615
1509
 
1616
1510
  case "baidu":
1617
1511
  layer = this._viewer.imageryLayers.addImageryProvider(new Cesium.Kq3dBaiduMapsImageryProvider({
1618
1512
  name: name,
1619
1513
  mapStyle: layerData.layerType
1620
- })); //layerData.guid = layer.guid;
1621
-
1622
- layerData.guid = layerData.sourceName + "@@@" + layerData.layerType;
1514
+ }));
1623
1515
  this._guidMapping[layerData.guid] = layer.guid;
1624
1516
  layerData.visible = true;
1625
1517
  layerData.serverType = "imagerylayer";
1626
-
1627
- if (this._scenceShowLayers && this._scenceShowLayers.indexOf(name) === -1) {
1628
- layerData.visible = false;
1629
- layer.show = false;
1630
- }
1631
-
1632
1518
  break;
1633
1519
 
1634
1520
  case "gaode":
1635
1521
  layer = this._viewer.imageryLayers.addImageryProvider(new Cesium.Kq3dAMapsImageryProvider({
1636
1522
  name: name,
1637
1523
  mapStyle: layerData.layerType
1638
- })); //layerData.guid = layer.guid;
1639
-
1640
- layerData.guid = layerData.sourceName + "@@@" + layerData.layerType;
1524
+ }));
1641
1525
  this._guidMapping[layerData.guid] = layer.guid;
1642
1526
  layerData.visible = true;
1643
1527
  layerData.serverType = "imagerylayer";
1644
-
1645
- if (this._scenceShowLayers && this._scenceShowLayers.indexOf(name) === -1) {
1646
- layerData.visible = false;
1647
- layer.show = false;
1648
- }
1649
-
1650
1528
  break;
1651
1529
 
1652
1530
  case "tencent":
1653
1531
  layer = this._viewer.imageryLayers.addImageryProvider(new Cesium.Kq3dQQMapsImageryProvider({
1654
1532
  name: name,
1655
1533
  mapStyle: layerData.layerType
1656
- })); //layerData.guid = layer.guid;
1657
-
1658
- layerData.guid = layerData.sourceName + "@@@" + layerData.layerType;
1534
+ }));
1659
1535
  this._guidMapping[layerData.guid] = layer.guid;
1660
1536
  layerData.visible = true;
1661
1537
  layerData.serverType = "imagerylayer";
1662
-
1663
- if (this._scenceShowLayers && this._scenceShowLayers.indexOf(name) === -1) {
1664
- layerData.visible = false;
1665
- layer.show = false;
1666
- }
1667
-
1668
1538
  break;
1669
1539
 
1670
1540
  default:
@@ -1825,6 +1695,33 @@ class LayerManager {
1825
1695
  }
1826
1696
 
1827
1697
  this.recordImageryLayerOriginIndex();
1698
+ } else if (this._layerListData[i].sourceType) {
1699
+ var promise = this.addLayerData(this._layerListData[i]);
1700
+
1701
+ if (promise) {
1702
+ promise.then(() => {
1703
+ adjustLayerIndex(this._layerListData[i]);
1704
+ });
1705
+ } else {
1706
+ adjustLayerIndex(this._layerListData[i]);
1707
+ }
1708
+
1709
+ var that = this;
1710
+
1711
+ function adjustLayerIndex(layerData) {
1712
+ if (layerData.serverType === "imagerylayer") {
1713
+ var addIndex = that.getImageryLayerAddIndex(layerData.guid);
1714
+ layer = that.getLayerByGuid(layerData.guid, layerData.serverType);
1715
+
1716
+ if (layer) {
1717
+ var count = layer._layerIndex - addIndex;
1718
+
1719
+ for (var i = 0; i < count; i++) {
1720
+ that._viewer.imageryLayers.lower(layer);
1721
+ }
1722
+ }
1723
+ }
1724
+ }
1828
1725
  }
1829
1726
  }
1830
1727
  }
@@ -2044,7 +1941,7 @@ class LayerManager {
2044
1941
 
2045
1942
  for (let i = 0; i < layers_checked.length; i++) {
2046
1943
  if (layers_checked[i].combined) {
2047
- getChildren(layers_checked[i].id);
1944
+ getChildren(layers_checked[i]);
2048
1945
  } else {
2049
1946
  layerData.push(layers_checked[i]);
2050
1947
  }
@@ -2052,12 +1949,12 @@ class LayerManager {
2052
1949
 
2053
1950
  return layerData;
2054
1951
 
2055
- function getChildren(parentId) {
1952
+ function getChildren(parent) {
2056
1953
  for (let z = 0; z < layers_old.length; z++) {
2057
- if (layers_old[z].parentLayerId === parentId) {
1954
+ if (layers_old[z].parentLayerId === parent.id && layers_old[z].sourceName === parent.sourceName) {
2058
1955
  // 分组节点
2059
1956
  if (layers_old[z].groupLayer) {
2060
- getChildren(layers_old[z].id);
1957
+ getChildren(layers_old[z]);
2061
1958
  } else {
2062
1959
  layerData.push(layers_old[z]);
2063
1960
  }
package/package.json CHANGED
@@ -1 +1 @@
1
- {"name":"@kq_npm/client3d_webgl_vue","description":"KQGIS Client3D for Vue.js","version":"0.7.6-beta","homepage":"","keywords":["KQGIS","webGL","Vue"],"browserslist":["> 1%","last 2 versions","not dead","not ie 11"],"author":"KQWEB GROUP","license":"Apache-2.0","dependencies":{"colorcolor":"^1.1.1","echarts":"^5.3.3","js-cookie":"^3.0.1","omit.js":"^2.0.2","save":"^2.5.0","tinycolor2":"^1.4.2","vue-i18n":"^9.2.0-beta.36","xlsx":"^0.18.5","@turf/turf":"^6.5.0","css-vars-ponyfill":"^2.4.8","xe-utils":"^3.5.4"}}
1
+ {"name":"@kq_npm/client3d_webgl_vue","description":"KQGIS Client3D for Vue.js","version":"0.7.7-beta","homepage":"","keywords":["KQGIS","webGL","Vue"],"browserslist":["> 1%","last 2 versions","not dead","not ie 11"],"author":"KQWEB GROUP","license":"Apache-2.0","dependencies":{"colorcolor":"^1.1.1","echarts":"^5.3.3","js-cookie":"^3.0.1","omit.js":"^2.0.2","save":"^2.5.0","tinycolor2":"^1.4.2","vue-i18n":"^9.2.0-beta.36","xlsx":"^0.18.5","@turf/turf":"^6.5.0","css-vars-ponyfill":"^2.4.8","xe-utils":"^3.5.4"}}
@@ -664,8 +664,10 @@ class LayerManager {
664
664
  source.mapServerInfo = (0,util_namespaceObject.formatKQMapInfo)(mapInfo.result, serverUrl, serverName, token, null, true);
665
665
  source.mapServerInfo.layers_old.forEach(layer_old => {
666
666
  layer_old.guid = source.name + "@@@" + layer_old.id;
667
- });
668
- this._layerListData_old = this._layerListData_old.concat(source.mapServerInfo.layers_old);
667
+ layer_old.sourceName = source.name;
668
+
669
+ this._layerListData_old.push(layer_old);
670
+ }, this);
669
671
  });
670
672
  sourcePromises.push(sourcePromise);
671
673
  }
@@ -678,7 +680,20 @@ class LayerManager {
678
680
  Promise.all(this._promises).then(() => {
679
681
  this._layerTreeData = layer.layerTreeData;
680
682
 
681
- this._scenceView.fire("resetLayerDatas");
683
+ this._scenceView.fire("resetLayerDatas"); //重置Imagerylayer图层顺序,wms和wmts异步加载导致图层顺序错乱
684
+
685
+
686
+ this._layerListData.forEach(layerData => {
687
+ if (layerData.serverType === "imagerylayer") {
688
+ var imagerylayer = this.getLayerByGuid(layerData.guid, 'imagerylayer');
689
+
690
+ if (imagerylayer) {
691
+ this._viewer.imageryLayers.raiseToTop(imagerylayer);
692
+ }
693
+ }
694
+ }, this);
695
+
696
+ this.recordImageryLayerOriginIndex();
682
697
  });
683
698
  });
684
699
  }
@@ -701,6 +716,7 @@ class LayerManager {
701
716
  layerData.sourceType = source.serverType;
702
717
  layerData.renderType = source.renderType;
703
718
  layerData.url = source.url;
719
+ layerData.guid = layerData.sourceName + "@@@" + (layerData.id || Math.random() * 10);
704
720
  var type = layerData.renderType;
705
721
 
706
722
  if (layerData.sourceType === "kqserver") {
@@ -729,16 +745,16 @@ class LayerManager {
729
745
  type = "kqgis3dserver";
730
746
  }
731
747
 
732
- var promise = this.addLayerData(layerData, type);
748
+ layerData.addType = type;
733
749
 
734
- if (promise) {
735
- this._promises.push(promise);
750
+ this._layerListData.push(layerData);
736
751
 
737
- promise.then(() => {
738
- this._layerListData.push(layerData);
739
- });
740
- } else {
741
- this._layerListData.push(layerData);
752
+ if (!this._scenceShowLayers || this._scenceShowLayers.indexOf(layerData.name) > -1) {
753
+ var promise = this.addLayerData(layerData);
754
+
755
+ if (promise) {
756
+ this._promises.push(promise);
757
+ }
742
758
  }
743
759
  }
744
760
  }
@@ -746,7 +762,8 @@ class LayerManager {
746
762
  } //添加图层数据
747
763
 
748
764
 
749
- addLayerData(layerData, type) {
765
+ addLayerData(layerData) {
766
+ var type = layerData.addType;
750
767
  let url = layerData.url;
751
768
  type = type || "";
752
769
  type = type.toLowerCase();
@@ -782,15 +799,9 @@ class LayerManager {
782
799
  name: name,
783
800
  url: url
784
801
  }));
785
- layerData.guid = layer.guid;
802
+ this._guidMapping[layerData.guid] = layer.guid;
786
803
  layerData.visible = true;
787
804
  layerData.serverType = "imagerylayer";
788
-
789
- if (this._scenceShowLayers && this._scenceShowLayers.indexOf(name) === -1) {
790
- layerData.visible = false;
791
- layer.show = false;
792
- }
793
-
794
805
  break;
795
806
 
796
807
  case 'obterrain':
@@ -800,18 +811,13 @@ class LayerManager {
800
811
  url: url
801
812
  });
802
813
  if (!layer.guid) layer.guid = Cesium.createGuid();
803
- layerData.guid = layer.guid;
814
+ this._guidMapping[layerData.guid] = layer.guid;
804
815
  layerData.visible = true;
805
- layerData.serverType = "terrainprovider"; //this._viewer.terrainProvider = layer;
816
+ layerData.serverType = "terrainprovider";
817
+ this._viewer.terrainProvider = layer;
806
818
 
807
819
  this._terrainProviders.push(layer);
808
820
 
809
- if (this._scenceShowLayers && this._scenceShowLayers.indexOf(name) === -1) {
810
- layerData.visible = false;
811
- } else {
812
- this._viewer.terrainProvider = layer;
813
- }
814
-
815
821
  break;
816
822
 
817
823
  case 'stkterrain':
@@ -822,20 +828,14 @@ class LayerManager {
822
828
  requestVertexNormals: true,
823
829
  requestWaterMask: false
824
830
  });
825
- if (!layer.guid) layer.guid = Cesium.createGuid(); //this._viewer.terrainProvider = layer;
831
+ if (!layer.guid) layer.guid = Cesium.createGuid();
832
+ this._viewer.terrainProvider = layer;
826
833
 
827
834
  this._terrainProviders.push(layer);
828
835
 
829
- layerData.guid = layer.guid;
836
+ this._guidMapping[layerData.guid] = layer.guid;
830
837
  layerData.visible = true;
831
838
  layerData.serverType = "terrainprovider";
832
-
833
- if (this._scenceShowLayers && this._scenceShowLayers.indexOf(name) === -1) {
834
- layerData.visible = false;
835
- } else {
836
- this._viewer.terrainProvider = layer;
837
- }
838
-
839
839
  break;
840
840
 
841
841
  case "3dtiles":
@@ -843,87 +843,36 @@ class LayerManager {
843
843
  name: name,
844
844
  url: url
845
845
  }));
846
- layerData.guid = layer.guid;
846
+ this._guidMapping[layerData.guid] = layer.guid;
847
847
  layerData.visible = true;
848
848
  layerData.serverType = "3dtiles";
849
-
850
- if (this._scenceShowLayers && this._scenceShowLayers.indexOf(name) === -1) {
851
- layerData.visible = false;
852
- layer.show = false;
853
- }
854
-
855
849
  break;
856
850
 
857
851
  case "kqgis3dserver":
858
- var hideLayer = this._scenceShowLayers && this._scenceShowLayers.indexOf(name) === -1;
859
852
  var that = this;
860
853
  promise = this._viewer.addKq3dServerLayerGroupExt(url).then(group => {
861
854
  var layers = group._addedLayers || group._layers;
862
855
 
863
- if (layers) {
864
- var length = layers.length;
865
-
866
- if (length > 1) {
867
- layerData.guid = group.guid;
868
- layerData.children = [];
856
+ if (layers && layers.length > 0) {
857
+ layer = layers[0];
858
+ var serverType = "";
859
+
860
+ if (layer instanceof Cesium.Cesium3DTileset) {
861
+ serverType = "3dtiles";
862
+ } else if (layer instanceof Cesium.ImageryLayer) {
863
+ serverType = "imagerylayer";
864
+ } else if (layer instanceof Cesium.Kq3dFileTerrainProvider || layer instanceof Cesium.CesiumTerrainProvider) {
865
+ serverType = "terrainprovider";
866
+
867
+ that._terrainProviders.push(layer);
868
+ } else if (layer instanceof Cesium.Kq3dGeoJsonDataSource) {
869
+ serverType = "datasource";
869
870
  }
870
871
 
871
- for (var i = 0; i < length; i++) {
872
- var serverType = "";
873
-
874
- if (layers[i] instanceof Cesium.Cesium3DTileset) {
875
- serverType = "3dtiles";
876
- } else if (layers[i] instanceof Cesium.ImageryLayer) {
877
- serverType = "imagerylayer";
878
- } else if (layers[i] instanceof Cesium.Kq3dFileTerrainProvider || layers[i] instanceof Cesium.CesiumTerrainProvider) {
879
- serverType = "terrainprovider";
880
-
881
- that._terrainProviders.push(layers[i]);
882
- } else if (layers[i] instanceof Cesium.Kq3dGeoJsonDataSource) {
883
- serverType = "datasource";
884
- }
885
-
886
- if (!layers[i].guid) layers[i].guid = Cesium.createGuid();
887
-
888
- if (length > 1) {
889
- var child = {
890
- guid: layers[i].guid,
891
- name: layers[i].name,
892
- visible: true,
893
- serverType: serverType
894
- };
895
-
896
- if (hideLayer) {
897
- child.visible = false;
898
-
899
- if (serverType === "terrainprovider") {
900
- layers[i].readyPromise.then(() => {
901
- that._viewer.terrainProvider = that._emptyTerrainProvider;
902
- });
903
- } else {
904
- layers[i].show = false;
905
- }
906
- }
907
-
908
- layerData.children.push(child);
909
- } else {
910
- layerData.guid = layers[i].guid;
911
- layerData.visible = true;
912
- layerData.serverType = serverType;
913
-
914
- if (hideLayer) {
915
- layerData.visible = false;
916
-
917
- if (serverType === "terrainprovider") {
918
- layers[i].readyPromise.then(() => {
919
- that._viewer.terrainProvider = that._emptyTerrainProvider;
920
- });
921
- } else {
922
- layers[i].show = false;
923
- }
924
- }
925
- }
926
- }
872
+ if (!layer.guid) layer.guid = Cesium.createGuid();
873
+ this._guidMapping[layerData.guid] = layer.guid;
874
+ layerData.visible = true;
875
+ layerData.serverType = serverType;
927
876
  }
928
877
  });
929
878
  break;
@@ -934,19 +883,12 @@ class LayerManager {
934
883
  url: url,
935
884
  layerName: layerData.layerName
936
885
  }));
937
- layerData.guid = layer.guid;
886
+ this._guidMapping[layerData.guid] = layer.guid;
938
887
  layerData.visible = true;
939
888
  layerData.serverType = "imagerylayer";
940
-
941
- if (this._scenceShowLayers && this._scenceShowLayers.indexOf(name) === -1) {
942
- layerData.visible = false;
943
- layer.show = false;
944
- }
945
-
946
889
  break;
947
890
 
948
891
  case "kqgismapserver":
949
- layerData.guid = layerData.sourceName + "@@@" + layerData.id;
950
892
  var layerInfo = layerData.sourceLayers.find(item => {
951
893
  return item.id + "" == layerData.id + "";
952
894
  });
@@ -970,11 +912,6 @@ class LayerManager {
970
912
 
971
913
  this._guidMapping[layerData.guid] = layer.guid;
972
914
  layerData.serverType = "imagerylayer";
973
-
974
- if (this._scenceShowLayers && this._scenceShowLayers.indexOf(layerData.name) === -1) {
975
- layerData.visible = false;
976
- layer.show = false;
977
- }
978
915
  }
979
916
 
980
917
  break;
@@ -984,18 +921,10 @@ class LayerManager {
984
921
  name: name,
985
922
  url: url,
986
923
  layers: layerData.id + ""
987
- })); //layerData.guid = layer.guid;
988
-
989
- layerData.guid = layerData.sourceName + "@@@" + layerData.id;
924
+ }));
990
925
  this._guidMapping[layerData.guid] = layer.guid;
991
926
  layerData.visible = true;
992
927
  layerData.serverType = "imagerylayer";
993
-
994
- if (this._scenceShowLayers && this._scenceShowLayers.indexOf(name) === -1) {
995
- layerData.visible = false;
996
- layer.show = false;
997
- }
998
-
999
928
  break;
1000
929
 
1001
930
  case "wms":
@@ -1021,16 +950,10 @@ class LayerManager {
1021
950
  }
1022
951
  }
1023
952
 
1024
- layerData.guid = layerData.sourceName + "@@@" + layerData.id;
1025
953
  this._guidMapping[layerData.guid] = layers[0].guid;
1026
954
  layerData.name = name || layers[0].name;
1027
955
  layerData.visible = true;
1028
956
  layerData.serverType = "imagerylayer";
1029
-
1030
- if (this._scenceShowLayers && this._scenceShowLayers.indexOf(layerData.name) === -1) {
1031
- layerData.visible = false;
1032
- layers[0].show = false;
1033
- }
1034
957
  }
1035
958
  });
1036
959
  break;
@@ -1058,16 +981,10 @@ class LayerManager {
1058
981
  }
1059
982
  }
1060
983
 
1061
- layerData.guid = layerData.sourceName + "@@@" + layerData.id;
1062
984
  this._guidMapping[layerData.guid] = layers[0].guid;
1063
985
  layerData.name = name || layers[0].name;
1064
986
  layerData.visible = true;
1065
987
  layerData.serverType = "imagerylayer";
1066
-
1067
- if (this._scenceShowLayers && this._scenceShowLayers.indexOf(layerData.name) === -1) {
1068
- layerData.visible = false;
1069
- layers[0].show = false;
1070
- }
1071
988
  }
1072
989
  });
1073
990
  break;
@@ -1095,14 +1012,9 @@ class LayerManager {
1095
1012
  this._viewer.dataSources.add(ds);
1096
1013
 
1097
1014
  ds.autoAvoid(this._viewer);
1098
- layerData.guid = ds.guid;
1015
+ this._guidMapping[layerData.guid] = ds.guid;
1099
1016
  layerData.visible = true;
1100
1017
  layerData.serverType = "datasource";
1101
-
1102
- if (this._scenceShowLayers && this._scenceShowLayers.indexOf(name) === -1) {
1103
- layerData.visible = false;
1104
- ds.show = false;
1105
- }
1106
1018
  });
1107
1019
  break;
1108
1020
 
@@ -1115,14 +1027,9 @@ class LayerManager {
1115
1027
  promise = ds.load(url).then(ds => {
1116
1028
  this._viewer.dataSources.add(ds);
1117
1029
 
1118
- layerData.guid = ds.guid;
1030
+ this._guidMapping[layerData.guid] = ds.guid;
1119
1031
  layerData.visible = true;
1120
1032
  layerData.serverType = "datasource";
1121
-
1122
- if (this._scenceShowLayers && this._scenceShowLayers.indexOf(name) === -1) {
1123
- layerData.visible = false;
1124
- ds.show = false;
1125
- }
1126
1033
  });
1127
1034
  break;
1128
1035
 
@@ -1131,14 +1038,9 @@ class LayerManager {
1131
1038
  promise = ds.load(url).then(ds => {
1132
1039
  this._viewer.dataSources.add(ds);
1133
1040
 
1134
- layerData.guid = ds.guid;
1041
+ this._guidMapping[layerData.guid] = ds.guid;
1135
1042
  layerData.visible = true;
1136
1043
  layerData.serverType = "datasource";
1137
-
1138
- if (this._scenceShowLayers && this._scenceShowLayers.indexOf(name) === -1) {
1139
- layerData.visible = false;
1140
- ds.show = false;
1141
- }
1142
1044
  });
1143
1045
  break;
1144
1046
 
@@ -1146,72 +1048,40 @@ class LayerManager {
1146
1048
  layer = this._viewer.imageryLayers.addImageryProvider(new Cesium.Kq3dTiandituImageryProvider({
1147
1049
  name: name,
1148
1050
  mapStyle: layerData.layerType + "_c"
1149
- })); //layerData.guid = layer.guid;
1150
-
1151
- layerData.guid = layerData.sourceName + "@@@" + layerData.layerType;
1051
+ }));
1152
1052
  this._guidMapping[layerData.guid] = layer.guid;
1153
1053
  layerData.visible = true;
1154
1054
  layerData.serverType = "imagerylayer";
1155
-
1156
- if (this._scenceShowLayers && this._scenceShowLayers.indexOf(name) === -1) {
1157
- layerData.visible = false;
1158
- layer.show = false;
1159
- }
1160
-
1161
1055
  break;
1162
1056
 
1163
1057
  case "baidu":
1164
1058
  layer = this._viewer.imageryLayers.addImageryProvider(new Cesium.Kq3dBaiduMapsImageryProvider({
1165
1059
  name: name,
1166
1060
  mapStyle: layerData.layerType
1167
- })); //layerData.guid = layer.guid;
1168
-
1169
- layerData.guid = layerData.sourceName + "@@@" + layerData.layerType;
1061
+ }));
1170
1062
  this._guidMapping[layerData.guid] = layer.guid;
1171
1063
  layerData.visible = true;
1172
1064
  layerData.serverType = "imagerylayer";
1173
-
1174
- if (this._scenceShowLayers && this._scenceShowLayers.indexOf(name) === -1) {
1175
- layerData.visible = false;
1176
- layer.show = false;
1177
- }
1178
-
1179
1065
  break;
1180
1066
 
1181
1067
  case "gaode":
1182
1068
  layer = this._viewer.imageryLayers.addImageryProvider(new Cesium.Kq3dAMapsImageryProvider({
1183
1069
  name: name,
1184
1070
  mapStyle: layerData.layerType
1185
- })); //layerData.guid = layer.guid;
1186
-
1187
- layerData.guid = layerData.sourceName + "@@@" + layerData.layerType;
1071
+ }));
1188
1072
  this._guidMapping[layerData.guid] = layer.guid;
1189
1073
  layerData.visible = true;
1190
1074
  layerData.serverType = "imagerylayer";
1191
-
1192
- if (this._scenceShowLayers && this._scenceShowLayers.indexOf(name) === -1) {
1193
- layerData.visible = false;
1194
- layer.show = false;
1195
- }
1196
-
1197
1075
  break;
1198
1076
 
1199
1077
  case "tencent":
1200
1078
  layer = this._viewer.imageryLayers.addImageryProvider(new Cesium.Kq3dQQMapsImageryProvider({
1201
1079
  name: name,
1202
1080
  mapStyle: layerData.layerType
1203
- })); //layerData.guid = layer.guid;
1204
-
1205
- layerData.guid = layerData.sourceName + "@@@" + layerData.layerType;
1081
+ }));
1206
1082
  this._guidMapping[layerData.guid] = layer.guid;
1207
1083
  layerData.visible = true;
1208
1084
  layerData.serverType = "imagerylayer";
1209
-
1210
- if (this._scenceShowLayers && this._scenceShowLayers.indexOf(name) === -1) {
1211
- layerData.visible = false;
1212
- layer.show = false;
1213
- }
1214
-
1215
1085
  break;
1216
1086
 
1217
1087
  default:
@@ -1372,6 +1242,33 @@ class LayerManager {
1372
1242
  }
1373
1243
 
1374
1244
  this.recordImageryLayerOriginIndex();
1245
+ } else if (this._layerListData[i].sourceType) {
1246
+ var promise = this.addLayerData(this._layerListData[i]);
1247
+
1248
+ if (promise) {
1249
+ promise.then(() => {
1250
+ adjustLayerIndex(this._layerListData[i]);
1251
+ });
1252
+ } else {
1253
+ adjustLayerIndex(this._layerListData[i]);
1254
+ }
1255
+
1256
+ var that = this;
1257
+
1258
+ function adjustLayerIndex(layerData) {
1259
+ if (layerData.serverType === "imagerylayer") {
1260
+ var addIndex = that.getImageryLayerAddIndex(layerData.guid);
1261
+ layer = that.getLayerByGuid(layerData.guid, layerData.serverType);
1262
+
1263
+ if (layer) {
1264
+ var count = layer._layerIndex - addIndex;
1265
+
1266
+ for (var i = 0; i < count; i++) {
1267
+ that._viewer.imageryLayers.lower(layer);
1268
+ }
1269
+ }
1270
+ }
1271
+ }
1375
1272
  }
1376
1273
  }
1377
1274
  }
@@ -1591,7 +1488,7 @@ class LayerManager {
1591
1488
 
1592
1489
  for (let i = 0; i < layers_checked.length; i++) {
1593
1490
  if (layers_checked[i].combined) {
1594
- getChildren(layers_checked[i].id);
1491
+ getChildren(layers_checked[i]);
1595
1492
  } else {
1596
1493
  layerData.push(layers_checked[i]);
1597
1494
  }
@@ -1599,12 +1496,12 @@ class LayerManager {
1599
1496
 
1600
1497
  return layerData;
1601
1498
 
1602
- function getChildren(parentId) {
1499
+ function getChildren(parent) {
1603
1500
  for (let z = 0; z < layers_old.length; z++) {
1604
- if (layers_old[z].parentLayerId === parentId) {
1501
+ if (layers_old[z].parentLayerId === parent.id && layers_old[z].sourceName === parent.sourceName) {
1605
1502
  // 分组节点
1606
1503
  if (layers_old[z].groupLayer) {
1607
- getChildren(layers_old[z].id);
1504
+ getChildren(layers_old[z]);
1608
1505
  } else {
1609
1506
  layerData.push(layers_old[z]);
1610
1507
  }