|
| 1 | +require('../../../src/mapboxgl/overlay/RangeTheme3DLayer'); |
| 2 | +var mapboxgl = require('mapbox-gl'); |
| 3 | + |
| 4 | +var dataUrl = GlobeParameter.editServiceURL_leaflet; |
| 5 | +var themeField = "LANDTYPE"; |
| 6 | +describe('mapboxgl_testUniqueTheme3DLayer', function () { |
| 7 | + var originalTimeout; |
| 8 | + var testDiv, map; |
| 9 | + beforeAll(function () { |
| 10 | + testDiv = window.document.createElement("div"); |
| 11 | + testDiv.setAttribute("id", "map"); |
| 12 | + testDiv.style.styleFloat = "left"; |
| 13 | + testDiv.style.marginLeft = "8px"; |
| 14 | + testDiv.style.marginTop = "50px"; |
| 15 | + testDiv.style.width = "500px"; |
| 16 | + testDiv.style.height = "500px"; |
| 17 | + window.document.body.appendChild(testDiv); |
| 18 | + map = new mapboxgl.Map({ |
| 19 | + container: 'map', |
| 20 | + style: { |
| 21 | + "version": 8, |
| 22 | + "sources": { |
| 23 | + "raster-tiles": { |
| 24 | + "type": "raster", |
| 25 | + "tiles": [GlobeParameter.ChinaURL + '/zxyTileImage.png?z={z}&x={x}&y={y}'], |
| 26 | + "tileSize": 256 |
| 27 | + } |
| 28 | + }, |
| 29 | + "layers": [{ |
| 30 | + "id": "simple-tiles", |
| 31 | + "type": "raster", |
| 32 | + "source": "raster-tiles", |
| 33 | + "minzoom": 0, |
| 34 | + "maxzoom": 22 |
| 35 | + }] |
| 36 | + }, |
| 37 | + center: [116.640545, 40.531714], |
| 38 | + zoom: 7 |
| 39 | + }); |
| 40 | + }); |
| 41 | + beforeEach(function () { |
| 42 | + originalTimeout = jasmine.DEFAULT_TIMEOUT_INTERVAL; |
| 43 | + jasmine.DEFAULT_TIMEOUT_INTERVAL = 50000; |
| 44 | + }); |
| 45 | + afterEach(function () { |
| 46 | + jasmine.DEFAULT_TIMEOUT_INTERVAL = originalTimeout; |
| 47 | + }); |
| 48 | + afterAll(function () { |
| 49 | + window.document.body.removeChild(testDiv); |
| 50 | + map.remove(); |
| 51 | + }); |
| 52 | + |
| 53 | + it('constructor', function (done) { |
| 54 | + var themeLayer; |
| 55 | + map.on('load', function () { |
| 56 | + var getFeatureBySQLParams = new SuperMap.GetFeaturesBySQLParameters({ |
| 57 | + queryParameter: new SuperMap.FilterParameter({ |
| 58 | + name: "Jingjin", |
| 59 | + attributeFilter: "SMID > -1" |
| 60 | + }), |
| 61 | + toIndex: 500, |
| 62 | + datasetNames: ["Jingjin:Landuse_R"] |
| 63 | + }); |
| 64 | + |
| 65 | + var queryFeatures = new SuperMap.GetFeaturesBySQLService(dataUrl, { |
| 66 | + eventListeners: { |
| 67 | + processCompleted: function (serviceResult) { |
| 68 | + if (serviceResult.error) { |
| 69 | + alert("error:" + JSON.stringify(serviceResult.error)); |
| 70 | + return; |
| 71 | + } |
| 72 | + var result = serviceResult.result; |
| 73 | + if (result.features) { |
| 74 | + themeLayer = new mapboxgl.supermap.UniqueTheme3DLayer("uniqueTheme3DLayer", { |
| 75 | + height: 6000, |
| 76 | + enableHighlight: true, |
| 77 | + themeField: themeField, |
| 78 | + colorStops: [ |
| 79 | + ["草地", "#C1FFC1"], ["城市", "#CD7054"], ["灌丛", "#7CCD7C"], ["旱地", "#EE9A49"], |
| 80 | + ["湖泊水库", "#8EE5EE"], ["经济林", "#548B54"], ["沙漠", "#DEB887"], ["水浇地", "#E0FFFF"], |
| 81 | + ["水田", "#388E8E"], ["用材林", "#556B2F"], ["沼泽", "#2F4F4F"] |
| 82 | + ], |
| 83 | + |
| 84 | + // 显示图例 |
| 85 | + showLegend: true, |
| 86 | + legendTitle: "土地利用类型" |
| 87 | + }); |
| 88 | + themeLayer.setData(result.features).addTo(map); |
| 89 | + map.easeTo({ |
| 90 | + pitch: 60, |
| 91 | + bearing: 0 |
| 92 | + }); |
| 93 | + } |
| 94 | + } |
| 95 | + }, |
| 96 | + format: SuperMap.DataFormat.GEOJSON |
| 97 | + }); |
| 98 | + queryFeatures.processAsync(getFeatureBySQLParams); |
| 99 | + setTimeout(function () { |
| 100 | + expect(themeLayer).not.toBeNull(); |
| 101 | + expect(themeLayer.colorStops.length).toEqual(11); |
| 102 | + expect(themeLayer.data.type).toBe("FeatureCollection"); |
| 103 | + expect(themeLayer.data.features.length).toBeGreaterThan(0); |
| 104 | + for (var i = 0; i < themeLayer.data.features.length; i++) { |
| 105 | + expect(themeLayer.data.features[i].type).toBe("Feature"); |
| 106 | + expect(themeLayer.data.features[i].id).not.toBeNull(); |
| 107 | + expect(themeLayer.data.features[i].properties).not.toBeNull(); |
| 108 | + expect(themeLayer.data.features[i].geometry).not.toBeNull(); |
| 109 | + } |
| 110 | + expect(themeLayer.enableHighlight).toBeTruthy(); |
| 111 | + expect(themeLayer.height).toEqual(6000); |
| 112 | + expect(themeLayer.heightField).toBe("height"); |
| 113 | + expect(themeLayer.id).toBe("uniqueTheme3DLayer"); |
| 114 | + expect(themeLayer.highlight.color).toBe("#ADA91E"); |
| 115 | + expect(themeLayer.legendTitle).toBe("土地利用类型"); |
| 116 | + var layerStyleOptions = themeLayer.getLayerStyleOptions(); |
| 117 | + expect(layerStyleOptions).not.toBeNull(); |
| 118 | + expect(layerStyleOptions).not.toBeUndefined(); |
| 119 | + var highlightStyleOptions = themeLayer.getHighlightStyleOptions(); |
| 120 | + expect(highlightStyleOptions).not.toBeNull(); |
| 121 | + expect(highlightStyleOptions).not.toBeUndefined(); |
| 122 | + themeLayer.remove(); |
| 123 | + done(); |
| 124 | + }, 5000) |
| 125 | + }); |
| 126 | + }); |
| 127 | +}); |
| 128 | + |
0 commit comments