| FazBrowse GitHub Viewer | Trending | | Home |
| Tools: [Download Repo ZIP] [Original HTTPS Page] |
1 parent 12b4848 commit 1b351d4
2 files changed
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
@@ -181,18 +181,19 @@ export function conversionDegree(degrees) { | |||
| 181 | 181 | * ``` | |
| 182 | 182 | */ | |
| 183 | 183 | export function scalesToResolutions(scales, bounds, dpi, mapUnit, level = 22, baseScale) { | |
| 184 | + const dpiValue = dpi === '' || dpi === null || dpi === undefined ? 96 : dpi; | ||
| 184 | 185 | var resolutions = []; | |
| 185 | 186 | if (scales && scales.length > 0) { | |
| 186 | 187 | for (let i = 0; i < scales.length; i++) { | |
| 187 | - resolutions.push(scaleToResolution(scales[i], dpi, mapUnit)); | ||
| 188 | + resolutions.push(scaleToResolution(scales[i], dpiValue, mapUnit)); | ||
| 188 | 189 | } | |
| 189 | 190 | } else if (baseScale){ | |
| 190 | 191 | const maxReolution = Math.abs(bounds.left - bounds.right) / 256; | |
| 191 | - const baseRes = scaleToResolution(baseScale, dpi, mapUnit); | ||
| 192 | + const baseRes = scaleToResolution(baseScale, dpiValue, mapUnit); | ||
| 192 | 193 | let topRes = baseRes; | |
| 193 | 194 | for (let i = 0; i < level; i++) { | |
| 194 | 195 | const temp = baseRes * Math.pow(2, i); | |
| 195 | - if(Math.abs(temp,maxReolution)<= 1E-6 || temp>maxReolution){ | ||
| 196 | + if(Math.abs(temp - maxReolution) <= 1E-6 || temp > maxReolution){ | ||
| 196 | 197 | topRes = temp; | |
| 197 | 198 | break; | |
| 198 | 199 | } | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
@@ -1,4 +1,4 @@ | |||
| 1 | - import { getMeterPerMapUnit } from '../../../src/common/util/MapCalculateUtil'; | ||
| 1 | + import { getMeterPerMapUnit, scaleToResolution, scalesToResolutions } from '../../../src/common/util/MapCalculateUtil'; | ||
| 2 | 2 | ||
| 3 | 3 | describe('MapCalculateUtil', () => { | |
| 4 | 4 | it('getMeterPerMapUnit m', () => { | |
@@ -20,5 +20,50 @@ describe('MapCalculateUtil', () => { | |||
| 20 | 20 | expect(getMeterPerMapUnit('DEGREE')).toBeCloseTo(111319.49079327358, 0.00001);; | |
| 21 | 21 | expect(getMeterPerMapUnit('DD')).toBeCloseTo(111319.49079327358, 0.00001);; | |
| 22 | 22 | expect(getMeterPerMapUnit('degre')).toBeUndefined() | |
| 23 | - }); | ||
| 23 | + }); | ||
| 24 | + it('scalesToResolutions with scales', () => { | ||
| 25 | + const scales = [50000, 25000]; | ||
| 26 | + const resolutions = scalesToResolutions(scales, null, 96, 'm'); | ||
| 27 | + | ||
| 28 | + expect(resolutions.length).toBe(2); | ||
| 29 | + expect(resolutions[0]).toBeCloseTo(scaleToResolution(25000, 96, 'm'), 12); | ||
| 30 | + expect(resolutions[1]).toBeCloseTo(scaleToResolution(50000, 96, 'm'), 12); | ||
| 31 | + }); | ||
| 32 | + | ||
| 33 | + it('scalesToResolutions dpi empty value should equal 96', () => { | ||
| 34 | + const scales = [50000, 25000]; | ||
| 35 | + const resolutionsWithEmptyDpi = scalesToResolutions(scales, null, undefined, 'm'); | ||
| 36 | + const resolutionsWith96Dpi = scalesToResolutions(scales, null, 96, 'm'); | ||
| 37 | + | ||
| 38 | + expect(resolutionsWithEmptyDpi.length).toBe(resolutionsWith96Dpi.length); | ||
| 39 | + expect(resolutionsWithEmptyDpi[0]).toBeCloseTo(resolutionsWith96Dpi[0], 12); | ||
| 40 | + expect(resolutionsWithEmptyDpi[1]).toBeCloseTo(resolutionsWith96Dpi[1], 12); | ||
| 41 | + }); | ||
| 42 | + | ||
| 43 | + it('scalesToResolutions with baseScale', () => { | ||
| 44 | + const bounds = { left: -180, right: 180 }; | ||
| 45 | + const level = 3; | ||
| 46 | + const maxResolution = Math.abs(bounds.left - bounds.right) / 256; | ||
| 47 | + const baseResolution = maxResolution / 2; | ||
| 48 | + const baseScale = 1 / (baseResolution * 96 * (1 / 0.0254)); | ||
| 49 | + const resolutions = scalesToResolutions(null, bounds, 96, 'm', level, baseScale); | ||
| 50 | + | ||
| 51 | + expect(resolutions.length).toBe(level); | ||
| 52 | + expect(resolutions[0]).toBeCloseTo(maxResolution, 12); | ||
| 53 | + expect(resolutions[1]).toBeCloseTo(baseResolution, 12); | ||
| 54 | + expect(resolutions[2]).toBeCloseTo(baseResolution / 2, 12); | ||
| 55 | + }); | ||
| 56 | + | ||
| 57 | + it('scalesToResolutions with bounds and level', () => { | ||
| 58 | + const bounds = { left: -180, right: 180 }; | ||
| 59 | + const level = 4; | ||
| 60 | + const maxResolution = Math.abs(bounds.left - bounds.right) / 256; | ||
| 61 | + const resolutions = scalesToResolutions(null, bounds, 96, 'degrees', level); | ||
| 62 | + | ||
| 63 | + expect(resolutions.length).toBe(level); | ||
| 64 | + expect(resolutions[0]).toBeCloseTo(maxResolution, 12); | ||
| 65 | + expect(resolutions[1]).toBeCloseTo(maxResolution / 2, 12); | ||
| 66 | + expect(resolutions[2]).toBeCloseTo(maxResolution / 4, 12); | ||
| 67 | + expect(resolutions[3]).toBeCloseTo(maxResolution / 8, 12); | ||
| 68 | + }); | ||
| 24 | 69 | }); | |
| Back | FazBrowse Home | New Git URL |
0 commit comments