From d74b495736f0c04522ec54274b70fed0ded2878d Mon Sep 17 00:00:00 2001
From: zhongrj <646384940@qq.com>
Date: Tue, 27 Jun 2023 11:30:06 +0800
Subject: [PATCH] 任务新增导出

---
 public/map/core/utils/LayerUtil.js |  178 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 178 insertions(+), 0 deletions(-)

diff --git a/public/map/core/utils/LayerUtil.js b/public/map/core/utils/LayerUtil.js
new file mode 100644
index 0000000..bdc2bab
--- /dev/null
+++ b/public/map/core/utils/LayerUtil.js
@@ -0,0 +1,178 @@
+define([
+"dojo/_base/declare", "dojo/_base/array", "dojo/_base/lang",
+"dojo/request", "dojo/topic",
+"esri/layers/ArcGISTiledMapServiceLayer", "esri/geometry/Extent",
+"esrichina/TianDiTuLayer", "esrichina/GoogleMapLayer", "esri/layers/ArcGISDynamicMapServiceLayer"
+    ],
+    function (declare, arrayUtil, lang,
+              request, topic,
+              ArcGISTiledMapServiceLayer, Extent,
+              TianDiTuLayer, GoogleMapLayer, ArcGISDynamicMapServiceLayer) {
+        return {
+            /**
+             *图层类型
+             */
+            AGS_TILE: "arcgis tiled",
+            AGS_DYNAMIC: "arcgis dynamic",
+            WMTS: "wmts",
+            TIANDITU: "tianditu",
+            GOOGLE: "google",
+
+            EVENT_LOADCONFIGANDPARSE_SUCCESS: "event_layerUtil_loadconfigAndParse_success",
+            EVENT_LOADCONFIGANDPARSE_ERROR: "event_layerUtil_loadconfigAndParse_error",
+
+            loadconfigAndParse: function (url) {
+                request.get(url, {
+                    handleAs: "json"
+                }).then(lang.hitch(this, function (result) {
+                    var _parseResult = this.parse(result);
+                    topic.publish(this.EVENT_LOADCONFIGANDPARSE_SUCCESS, _parseResult);
+                }), lang.hitch(this, function (err) {
+                    topic.publish(this.EVENT_LOADCONFIGANDPARSE_ERROR, err);
+                }));
+            },
+
+            parse: function (config) {
+                _parseResult = {};
+                _parseResult.extent = _getStartExtent(config.initExtent, config.wkid);
+                _parseResult.maplogo = config.maplogo;
+                _parseResult.gallerys = config.gallerys;
+                _parseResult.multidate = config.multidate;
+                _parseResult.swipe = config.swipe;
+                _parseResult.tkey = config.tkey;//天地图服务开发者key
+                _groupsParseResult = this.parseGroups(config.grouplayers);
+                declare.safeMixin(_parseResult, _groupsParseResult);
+                return _parseResult;
+
+                function _getStartExtent(initExtent, wkid) {
+                    return new esri.geometry.Extent({
+                        "xmin": initExtent[0],
+                        "ymin": initExtent[1],
+                        "xmax": initExtent[2],
+                        "ymax": initExtent[3],
+                        "spatialReference": {
+                            "wkid": wkid
+                        }
+                    });
+                }
+            },
+            parseGroups: function (groupsConfig) {
+                var groups = {};
+                var groupsInOrder = [];
+                var curGroupId = null;
+                var curSetId = null;
+
+                for (var key in groupsConfig) {
+                    var group = _parseGroup.call(this, groupsConfig[key]);
+                    groups[group.id] = group;
+                    groupsInOrder.push(group.id);
+                }
+                return {
+                    groups: groups,
+                    curGroupId: curGroupId,
+                    curSetId: curSetId,
+                    groupsInOrder: groupsInOrder
+                };
+
+                function _parseGroup(groupConfig) {
+                    var group = new Object();
+                    group.id = groupConfig.id;
+                    group.galleryId = groupConfig.gallery;
+                    group.icon = groupConfig.icon;
+                    group.label = groupConfig.label;
+                    if (groupConfig.visible)
+                        curGroupId = group.id;
+                    //group.baselayers = _parseLayers.call(this, groupConfig.baselayers);
+                    group.baselayers = null;
+                    group.baselayersConfig = groupConfig.baselayers;
+                    _parseLayerSet.call(this, groupConfig.layerset);
+                    return group;
+
+                    function _parseLayerSet(layersetConfig) {
+                        layerset = {};
+                        layersetInOrder = [];
+                        for (var key in layersetConfig) {
+                            layersetItemConfig = layersetConfig[key];
+                            var layersetItem = new Object();
+                            layersetItem.id = layersetItemConfig.id;
+                            layersetItem.type = layersetItemConfig.type;
+                            layersetItem.label = layersetItemConfig.label;
+                            layersetItem.layers = null;
+                            layersetItem.layersConfig = layersetItemConfig.layers;
+                            //layersetItem.layers = _parseLayers.call(this, layersetItemConfig.layers);
+                            if (layersetItemConfig.visible) {
+                                curSetId = layersetItem.id;
+                            }
+                            if (layersetItemConfig["default"]) {
+                                group.defaultset = layersetItem.id;
+                            }
+                            layerset[layersetItem.id] = layersetItem;
+                            layersetInOrder.push(layersetItem.id);
+                        }
+                        group.layerset = layerset;
+                        group.layersetInOrder = layersetInOrder;
+                        if (!group.defaultset && layersetInOrder.length != 0) {
+                            group.defaultset = layersetInOrder[0];
+                        }
+                    }
+                }
+            },
+            /**
+             * 解析图层,创建图层对象
+             * @param {Object} layersConfig
+             */
+            parseLayers: function (layersConfig) {
+                _layers = [];
+                for (var key in layersConfig) {
+                    var layer = this._parseLayer.call(this, layersConfig[key]);
+                    //layer.copyForOverview = this._parseLayer.call(this, layersConfig[key]);
+                    _layers.push(layer);
+                    //layers.push(layer);
+                }
+                return _layers;
+            },
+
+            _parseLayer: function (layerConfig) {
+                layerConfig.type = layerConfig.type.toLowerCase();
+                var layer = null;
+                switch (layerConfig.type) {
+                    case this.AGS_TILE:
+                        layer = new ArcGISTiledMapServiceLayer(
+                            layerConfig.url, {
+                                displayLevels: layerConfig.displaylevels
+                            });
+                        break;
+                    case this.AGS_DYNAMIC:
+                        layer = new ArcGISDynamicMapServiceLayer(layerConfig.url);
+                        if (layerConfig.layer == 'border')
+                            layer.setVisibleLayers([0, 1,2]);
+                        break;
+                    case this.TIANDITU:
+                        var option = {
+                            displayLevels: layerConfig.displaylevels,
+                            tkey:_parseResult.tkey
+                        }
+                        if (layerConfig.TILEMATRIXSET)
+                            option._tilematrixSet = layerConfig.TILEMATRIXSET;
+                        if (layerConfig.FORMAT)
+                            option.format = layerConfig.FORMAT;
+                        layer = new TianDiTuLayer(
+                            "geo",
+                            layerConfig.url,
+                            layerConfig.layer,
+                            option
+                        );
+                        layer.id = layerConfig.layer;
+                        if (layer.id=='cia'||layer.id=='cva'){//默认不显示标记图层
+                            layer.opacity = 1;
+                        }
+                        break;
+                    case this.GOOGLE:
+                        layer = new GoogleMapLayer(layerConfig);
+                        break;
+                }
+                //layerIndex[layer.id] = layers.length - 1;
+                return layer;
+            }
+        };
+    });
\ No newline at end of file

--
Gitblit v1.9.3