Skip to content

Commit 6f80ab7

Browse files
committed
【fix】修复某些投影的无法正确计算MeterPerMapUnit失败的问题
1 parent cb7578b commit 6f80ab7

4 files changed

Lines changed: 26 additions & 18 deletions

File tree

‎src/common/util/MapCalculateUtil.js‎

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -24,9 +24,9 @@ import { Unit } from '../REST';
2424
export var getMeterPerMapUnit = function(mapUnit) {
2525
var earchRadiusInMeters = 6378137;
2626
var meterPerMapUnit;
27-
if (mapUnit === Unit.METER) {
27+
if (['m','meter','meters'].indexOf(mapUnit.toLocaleLowerCase())>-1) {
2828
meterPerMapUnit = 1;
29-
} else if (mapUnit === Unit.DEGREE) {
29+
} else if (['degrees','deg','degree','dd'].indexOf(mapUnit.toLocaleLowerCase())>-1) {
3030
// 每度表示多少米。
3131
meterPerMapUnit = (Math.PI * 2 * earchRadiusInMeters) / 360;
3232
} else if (mapUnit === Unit.KILOMETER) {
@@ -35,8 +35,6 @@ export var getMeterPerMapUnit = function(mapUnit) {
3535
meterPerMapUnit = 1 / 2.5399999918e-2;
3636
} else if (mapUnit === Unit.FOOT) {
3737
meterPerMapUnit = 0.3048;
38-
} else {
39-
return meterPerMapUnit;
4038
}
4139
return meterPerMapUnit;
4240
};

‎src/openlayers/mapping/TileSuperMapRest.js‎

Lines changed: 0 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -193,14 +193,6 @@ export class TileSuperMapRest extends TileImage {
193193
var resolution = me.tileGrid.getResolution(z);
194194
var dpi = me.dpi || 96;
195195
var unit = projection.getUnits() || Unit.DEGREE;
196-
// OGC WKT 解析出单位是 degree
197-
if (unit === 'degrees' || unit === 'degree') {
198-
unit = Unit.DEGREE;
199-
}
200-
//通过wkt方式自定义坐标系的时候,是meter
201-
if (unit === 'm' || unit === 'meter') {
202-
unit = Unit.METER;
203-
}
204196
var scale = Util.resolutionToScale(resolution, dpi, unit);
205197
var tileSize = olSize.toSize(me.tileGrid.getTileSize(z, me.tmpSize));
206198
var layerUrl = getFullRequestUrl.call(me);

‎src/openlayers/overlay/VectorTileSuperMapRest.js‎

Lines changed: 0 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -111,12 +111,6 @@ export class VectorTileSuperMapRest extends VectorTile {
111111
var resolution = me.tileGrid.getResolution(z);
112112
var dpi = 96;
113113
var unit = projection.getUnits() || 'degrees';
114-
if (unit === 'degrees') {
115-
unit = Unit.DEGREE;
116-
}
117-
if (unit === 'm') {
118-
unit = Unit.METER;
119-
}
120114

121115
var scale = Util.resolutionToScale(resolution, dpi, unit);
122116
params =
Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
import { getMeterPerMapUnit } from '../../../src/common/util/MapCalculateUtil';
2+
3+
describe('MapCalculateUtil', () => {
4+
it('getMeterPerMapUnit m', () => {
5+
expect(getMeterPerMapUnit('m')).toBe(1);
6+
expect(getMeterPerMapUnit('M')).toBe(1);
7+
expect(getMeterPerMapUnit('meter')).toBe(1);
8+
expect(getMeterPerMapUnit('meters')).toBe(1);
9+
expect(getMeterPerMapUnit('METER')).toBe(1);
10+
expect(getMeterPerMapUnit('METERS')).toBe(1);
11+
expect(getMeterPerMapUnit('METRE')).toBeUndefined()
12+
});
13+
it('getMeterPerMapUnit dge', () => {
14+
expect(getMeterPerMapUnit('degrees')).toBeCloseTo(111319.49079327358, 0.00001);;
15+
expect(getMeterPerMapUnit('deg')).toBeCloseTo(111319.49079327358, 0.00001);;
16+
expect(getMeterPerMapUnit('degree')).toBeCloseTo(111319.49079327358, 0.00001);;
17+
expect(getMeterPerMapUnit('dd')).toBeCloseTo(111319.49079327358, 0.00001);;
18+
expect(getMeterPerMapUnit('DEGREES')).toBeCloseTo(111319.49079327358, 0.00001);;
19+
expect(getMeterPerMapUnit('DEG')).toBeCloseTo(111319.49079327358, 0.00001);;
20+
expect(getMeterPerMapUnit('DEGREE')).toBeCloseTo(111319.49079327358, 0.00001);;
21+
expect(getMeterPerMapUnit('DD')).toBeCloseTo(111319.49079327358, 0.00001);;
22+
expect(getMeterPerMapUnit('degre')).toBeUndefined()
23+
});
24+
});

0 commit comments

Comments
 (0)