| New file |
| | |
| | | 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; |
| | | } |
| | | }; |
| | | }); |