1
13693261870
2022-09-16 762f2fb45db004618ba099aa3c0bd89dba1eb843
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
define(["dojo/_base/declare", "dojo/on", "esri/dijit/BasemapLayer", "esri/dijit/Basemap", "esri/dijit/BasemapGallery", 'esri/layers/WebTiledLayer', 'esri/layers/TileInfo'], function (declare, on, BasemapLayer, Basemap, BasemapGallery, WebTiledLayer, TileInfo) {
    var clazz, isBasemapGallery = -1;
    clazz = declare("BasemapGallery", null, {
        basemapGalleryId: "basemapGalleryContainer",
        basemapCloseId: "basemapClose",
        tiandituLayer: null,
        constructor: function () {
            dojo.connect(dojo.byId(this.basemapCloseId), "onclick", function (evt) {
                document.getElementById("basemapGalleryContainer").style.display = "none"
            });
 
        },
        show: function () {
            var bgc = dojo.byId(this.basemapGalleryId);
            if (dojo.style(bgc, "display") == "none") {
                dojo.style(bgc, "display", "block")
            } else {
                dojo.style(bgc, "display", "none")
            }
            if (isBasemapGallery == -1) {
                this.create();
                isBasemapGallery = 1;
            }
        },
        hide: function () {
            dojo.style(dojo.byId(this.basemapGalleryId), "display", "none")
        },
        create: function () {
            var basemaps = [];
            for (var i = 0; i < config_basemap_array.length; i++) {
                var basemapLayer;
                var basemap;
                if (config_basemap_array[i].title.indexOf("天地图") >= 0) {
                    this.tiandituLayer = WebTiledLayer(config_basemap_array[i].layerURL + '&SERVICE=WMTS&REQUEST=GetTile&VERSION=1.0.0&LAYER=img&STYLE=default&TILEMATRIXSET=w&TILEMATRIX={level}&TILEROW={row}&TILECOL={col}&FORMAT=tiles',
                        {
                        });
                    basemap = new Basemap({
                        layers: [this.tiandituLayer],
                        title: config_basemap_array[i].title,
                        thumbnailUrl: config_basemap_array[i].thumbnailUrl
                    });
                }
                    //else if (config_basemap_array[i].layerId.indexOf("sg-") > -1) {
                    //    var layerInfo = new esri.layers.WMSLayerInfo({
                    //        name: "sgwms",
                    //        title: "sgwms",
                    //        spatialReferences: [4326]
                    //    });
                    //    var extent = new esri.geometry.Extent(-180, -90, 180, 90, new esri.SpatialReference({ wkid: 4326 }));
                    //    resourceInfo = {
                    //        copyright: "sgWms",
                    //        description: "sgWms",
                    //        extent: extent,
                    //        layerInfos: [layerInfo],
                    //        version: '1.1.1',
                    //        customLayerParameters: {
                    //            SRS: "EPSG:4326",
                    //            WIDTH: 256,
                    //            HEIGHT: 256
                    //        }
                    //    };
                    //    var wmsUrl = config_basemap_array[i].layerURL;
                    //    var wmslayer = new esri.layers.WMSLayer(wmsUrl, {
                    //        resourceInfo: resourceInfo,
                    //        visibleLayers: [config_basemap_array[i].layer],
                    //        spatialReferences: [4326]
                    //    });
                    //    basemap = new Basemap({
                    //        layers: [wmslayer],
                    //        title: config_basemap_array[i].title,
                    //        thumbnailUrl: config_basemap_array[i].thumbnailUrl
                    //    });
                    //}
                else {
                    basemapLayer = new BasemapLayer({
                        url: config_basemap_array[i].layerURL
                    });
                    basemap = new Basemap({
                        layers: [basemapLayer],
                        title: config_basemap_array[i].title,
                        thumbnailUrl: config_basemap_array[i].thumbnailUrl
                    });
                }
 
                basemaps.push(basemap)
            }
            var basemapGallery = new BasemapGallery({
                showArcGISBasemaps: false,
                basemaps: basemaps,
                map: map
            }, "basemapGalleryDiv");
            basemapGallery.startup();
            var that = this;
            basemapGallery.on("selection-change", function () {
                var layerInfo = basemapGallery.getSelected();
                if (layerInfo.title.indexOf("天地图") >= 0) {
                    map.addLayer(that.tiandituLayer, 1);
                    //map.addLayer(layerInfo.layers[0], 1);
                } else {
                    map.removeLayer(that.tiandituLayer);
                    //map.removeLayer(layerInfo.layers[0]);
                }
 
                //if (layerInfo.layers[0].url.toLowerCase().indexOf("sg/") >= 0) {
                //    map.addLayer(layerInfo.layers[0], 1);
                //} else {
                //    try {
                //        map.removeLayer(layerInfo.layers[0]);
                //    }
                //    catch (ex) { }
                //}
 
 
            });
            //dojo.connect(basemapGallery, "selection-change", function (evt) {
            //    console.log(evt);
            //});
        }
    });
    clazz.getInstance = function () {
        if (instance === null) {
            instance = new clazz()
        }
        return instance
    };
    return clazz
}); //}