Avoid unexpected behavior when passing string coordinates
This commit is contained in:
@@ -40,8 +40,8 @@ import {padNumber} from './string.js';
|
|||||||
* @api
|
* @api
|
||||||
*/
|
*/
|
||||||
export function add(coordinate, delta) {
|
export function add(coordinate, delta) {
|
||||||
coordinate[0] += delta[0];
|
coordinate[0] += +delta[0];
|
||||||
coordinate[1] += delta[1];
|
coordinate[1] += +delta[1];
|
||||||
return coordinate;
|
return coordinate;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -106,7 +106,7 @@ export function fromEPSG4326(input, opt_output, opt_dimension) {
|
|||||||
for (let i = 0; i < length; i += dimension) {
|
for (let i = 0; i < length; i += dimension) {
|
||||||
output[i] = halfSize * input[i] / 180;
|
output[i] = halfSize * input[i] / 180;
|
||||||
let y = RADIUS *
|
let y = RADIUS *
|
||||||
Math.log(Math.tan(Math.PI * (input[i + 1] + 90) / 360));
|
Math.log(Math.tan(Math.PI * (+input[i + 1] + 90) / 360));
|
||||||
if (y > halfSize) {
|
if (y > halfSize) {
|
||||||
y = halfSize;
|
y = halfSize;
|
||||||
} else if (y < -halfSize) {
|
} else if (y < -halfSize) {
|
||||||
|
|||||||
@@ -29,6 +29,14 @@ describe('ol.coordinate', function() {
|
|||||||
expect(coordinate[0]).to.eql(48.73);
|
expect(coordinate[0]).to.eql(48.73);
|
||||||
expect(coordinate[1]).to.eql(10.1);
|
expect(coordinate[1]).to.eql(10.1);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
it('does not produce unexpected results with string delta values', function() {
|
||||||
|
addCoordinate(coordinate, delta.map(function(n) {
|
||||||
|
return String(n);
|
||||||
|
}));
|
||||||
|
expect(coordinate[0]).to.eql(48.73);
|
||||||
|
expect(coordinate[1]).to.eql(10.1);
|
||||||
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
describe('#equals', function() {
|
describe('#equals', function() {
|
||||||
|
|||||||
@@ -35,6 +35,12 @@ describe('ol/proj/epsg3857', function() {
|
|||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
it('does not produce unexpected results for string coordinates', function() {
|
||||||
|
const transformed = fromEPSG4326(['180', '90']);
|
||||||
|
expect(transformed[0]).to.roughlyEqual(HALF_SIZE, 1e-5);
|
||||||
|
expect(transformed[1]).to.roughlyEqual(HALF_SIZE, 1e-5);
|
||||||
|
});
|
||||||
|
|
||||||
});
|
});
|
||||||
|
|
||||||
describe('getPointResolution', function() {
|
describe('getPointResolution', function() {
|
||||||
|
|||||||
Reference in New Issue
Block a user