Skip to content

Commit 6d238c5

Browse files
补充mapboxgl下的UT
1 parent bb6d72e commit 6d238c5

File tree

3 files changed

+260
-0
lines changed

3 files changed

+260
-0
lines changed
Lines changed: 130 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,130 @@
1+
require('../../../src/mapboxgl/overlay/RangeTheme3DLayer');
2+
var mapboxgl = require('mapbox-gl');
3+
4+
var dataUrl = GlobeParameter.editServiceURL_leaflet;
5+
var themeField = "POP_DENSITY99";
6+
describe('mapboxgl_testRangeTheme3DLayer', 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:BaseMap_R"]
63+
});
64+
var queryFeatures = new SuperMap.GetFeaturesBySQLService(dataUrl, {
65+
eventListeners: {
66+
processCompleted: function (serviceResult) {
67+
if (serviceResult.error) {
68+
alert("error:" + JSON.stringify(serviceResult.error));
69+
return;
70+
}
71+
var result = serviceResult.result;
72+
if (result.features) {
73+
//创建专题图图层
74+
themeLayer = new mapboxgl.supermap.RangeTheme3DLayer("range3DThemeLayer", {
75+
heightField: themeField,
76+
parseNumber: true,
77+
enableHighlight: true,
78+
79+
heightStops: [
80+
[0.01, 1000], [0.1, 5000], [0.2, 6000]
81+
],
82+
colorStops: [
83+
[0, "#FDE2CA"], [0.02, "#FACE9C"], [0.04, "#F09C42"], [0.06, "#D0770B"], [0.1, "#945305"], [0.2, "#593000"]
84+
],
85+
// 显示图例
86+
showLegend: true,
87+
legendTitle: "人口密度"
88+
});
89+
themeLayer.setHighlightStyleOptions({color: "#058e94"});
90+
themeLayer.setData(result.features).addTo(map);
91+
map.easeTo({
92+
pitch: 60,
93+
bearing: 0
94+
})
95+
}
96+
}
97+
},
98+
format: SuperMap.DataFormat.GEOJSON
99+
});
100+
queryFeatures.processAsync(getFeatureBySQLParams);
101+
setTimeout(function () {
102+
expect(themeLayer).not.toBeNull();
103+
expect(themeLayer.colorStops.length).toEqual(6);
104+
expect(themeLayer.data.type).toBe("FeatureCollection");
105+
expect(themeLayer.data.features.length).toBeGreaterThan(0);
106+
for (var i = 0; i < themeLayer.data.features.length; i++) {
107+
expect(themeLayer.data.features[i].type).toBe("Feature");
108+
expect(themeLayer.data.features[i].id).not.toBeNull();
109+
expect(themeLayer.data.features[i].properties).not.toBeNull();
110+
expect(themeLayer.data.features[i].geometry).not.toBeNull();
111+
}
112+
expect(themeLayer.enableHighlight).toBeTruthy();
113+
expect(themeLayer.heightField).toBe("POP_DENSITY99");
114+
expect(themeLayer.heightStops.length).toEqual(3);
115+
expect(themeLayer.id).toBe("range3DThemeLayer");
116+
expect(themeLayer.highlight.color).toBe("#058e94");
117+
expect(themeLayer.legendTitle).toBe("人口密度");
118+
var layerStyleOptions = themeLayer.getLayerStyleOptions();
119+
expect(layerStyleOptions).not.toBeNull();
120+
expect(layerStyleOptions).not.toBeUndefined();
121+
var highlightStyleOptions = themeLayer.getHighlightStyleOptions();
122+
expect(highlightStyleOptions).not.toBeNull();
123+
expect(highlightStyleOptions).not.toBeUndefined();
124+
themeLayer.remove();
125+
done();
126+
}, 5000)
127+
});
128+
});
129+
});
130+
Lines changed: 128 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,128 @@
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+

test/test-main-mapboxgl.js

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,4 @@
11
/*mapboxgl -- overlay*/
22
require('./mapboxgl/overlay/MapvLayerSpec.js');
3+
require('./mapboxgl/overlay/RangeTheme3DLayerSpec.js');
4+
require('./mapboxgl/overlay/UniqueTheme3DLayerSpec.js');

0 commit comments

Comments
 (0)