diff --git a/src/ol/proj/proj.js b/src/ol/proj/proj.js index 193bc838d3..499fb5eb0e 100644 --- a/src/ol/proj/proj.js +++ b/src/ol/proj/proj.js @@ -677,7 +677,8 @@ ol.proj.get = function(projectionLike) { ol.proj.equivalent = function(projection1, projection2) { if (projection1 === projection2) { return true; - } else if (projection1.getCode() === projection2.getCode()) { + } else if (projection1.getCode() === projection2.getCode() && + projection1.getUnits() === projection2.getUnits()) { return true; } else if (projection1.getUnits() != projection2.getUnits()) { return false; diff --git a/test/spec/ol/proj/proj.test.js b/test/spec/ol/proj/proj.test.js index a7dfe204ee..d792b4b07a 100644 --- a/test/spec/ol/proj/proj.test.js +++ b/test/spec/ol/proj/proj.test.js @@ -56,6 +56,19 @@ describe('ol.proj', function() { 'EPSG:4326' ]); }); + + it('requires code and units to be equal for projection evquivalence', + function() { + var proj1 = new ol.proj.Projection({ + code: 'EPSG:3857', + units: 'm' + }); + var proj2 = new ol.proj.Projection({ + code: 'EPSG:3857', + units: 'tile-pixels' + }); + expect(ol.proj.equivalent(proj1, proj2)).to.not.be.ok(); + }); }); describe('identify transform', function() {