diff --git a/src/ol/proj/proj.exports b/src/ol/proj/proj.exports
index c415264d69..2db32e18c2 100644
--- a/src/ol/proj/proj.exports
+++ b/src/ol/proj/proj.exports
@@ -18,3 +18,5 @@
@exportSymbol ol.proj.configureProj4jsProjection
@exportSymbol ol.proj.common.add
+
+@exportSymbol ol.proj.METERS_PER_UNIT
diff --git a/src/ol/proj/proj.js b/src/ol/proj/proj.js
index c1ca1b1a68..f65a77e90f 100644
--- a/src/ol/proj/proj.js
+++ b/src/ol/proj/proj.js
@@ -1,4 +1,5 @@
goog.provide('ol.proj');
+goog.provide('ol.proj.METERS_PER_UNIT');
goog.provide('ol.proj.Projection');
goog.provide('ol.proj.ProjectionLike');
goog.provide('ol.proj.Units');
@@ -51,11 +52,10 @@ ol.proj.Units = {
* @const
* @type {Object.
}
*/
-ol.METERS_PER_UNIT = {};
-ol.METERS_PER_UNIT[ol.proj.Units.DEGREES] =
+ol.proj.METERS_PER_UNIT[ol.proj.Units.DEGREES] =
2 * Math.PI * ol.sphere.NORMAL.radius / 360;
-ol.METERS_PER_UNIT[ol.proj.Units.FEET] = 0.3048;
-ol.METERS_PER_UNIT[ol.proj.Units.METERS] = 1;
+ol.proj.METERS_PER_UNIT[ol.proj.Units.FEET] = 0.3048;
+ol.proj.METERS_PER_UNIT[ol.proj.Units.METERS] = 1;
@@ -153,7 +153,7 @@ ol.proj.Projection.prototype.getUnits = function() {
* @return {number|undefined} Meters.
*/
ol.proj.Projection.prototype.getMetersPerUnit = function() {
- return ol.METERS_PER_UNIT[this.units_];
+ return ol.proj.METERS_PER_UNIT[this.units_];
};
@@ -240,7 +240,7 @@ goog.inherits(ol.Proj4jsProjection_, ol.proj.Projection);
ol.Proj4jsProjection_.prototype.getMetersPerUnit = function() {
var metersPerUnit = this.proj4jsProj_.to_meter;
if (!goog.isDef(metersPerUnit)) {
- metersPerUnit = ol.METERS_PER_UNIT[this.units_];
+ metersPerUnit = ol.proj.METERS_PER_UNIT[this.units_];
}
return metersPerUnit;
};
diff --git a/src/ol/tilegrid/tilegrid.js b/src/ol/tilegrid/tilegrid.js
index b0aa02212a..ac547c42b3 100644
--- a/src/ol/tilegrid/tilegrid.js
+++ b/src/ol/tilegrid/tilegrid.js
@@ -7,6 +7,7 @@ goog.require('ol.TileCoord');
goog.require('ol.TileRange');
goog.require('ol.array');
goog.require('ol.extent');
+goog.require('ol.proj.METERS_PER_UNIT');
goog.require('ol.proj.Projection');
goog.require('ol.proj.Units');
@@ -417,7 +418,7 @@ ol.tilegrid.createForProjection =
function(projection, opt_maxZoom, opt_tileSize) {
var projectionExtent = projection.getExtent();
var size = goog.isNull(projectionExtent) ?
- 360 * ol.METERS_PER_UNIT[ol.proj.Units.DEGREES] /
+ 360 * ol.proj.METERS_PER_UNIT[ol.proj.Units.DEGREES] /
projection.getMetersPerUnit() :
Math.max(projectionExtent[2] - projectionExtent[0],
projectionExtent[3] - projectionExtent[1]);
diff --git a/src/ol/view2d.js b/src/ol/view2d.js
index b4b04d9116..c11764adaa 100644
--- a/src/ol/view2d.js
+++ b/src/ol/view2d.js
@@ -16,6 +16,7 @@ goog.require('ol.View');
goog.require('ol.coordinate');
goog.require('ol.extent');
goog.require('ol.proj');
+goog.require('ol.proj.METERS_PER_UNIT');
goog.require('ol.proj.Projection');
goog.require('ol.proj.Units');
@@ -544,8 +545,8 @@ ol.View2D.createResolutionConstraint_ = function(options) {
.getExtent();
var size = goog.isNull(projectionExtent) ?
// use an extent that can fit the whole world if need be
- 360 * ol.METERS_PER_UNIT[ol.proj.Units.DEGREES] /
- ol.METERS_PER_UNIT[projection.getUnits()] :
+ 360 * ol.proj.METERS_PER_UNIT[ol.proj.Units.DEGREES] /
+ ol.proj.METERS_PER_UNIT[projection.getUnits()] :
Math.max(projectionExtent[2] - projectionExtent[0],
projectionExtent[3] - projectionExtent[1]);
maxResolution = size / ol.DEFAULT_TILE_SIZE;
diff --git a/test/spec/ol/tilegrid/tilegrid.test.js b/test/spec/ol/tilegrid/tilegrid.test.js
index 60d839b6c1..f4b5272870 100644
--- a/test/spec/ol/tilegrid/tilegrid.test.js
+++ b/test/spec/ol/tilegrid/tilegrid.test.js
@@ -196,7 +196,7 @@ describe('ol.tilegrid.TileGrid', function() {
var grid = ol.tilegrid.createForProjection(projection);
var resolutions = grid.getResolutions();
expect(resolutions[5]).to.be(
- 360 * ol.METERS_PER_UNIT[ol.proj.Units.DEGREES] /
+ 360 * ol.proj.METERS_PER_UNIT[ol.proj.Units.DEGREES] /
ol.DEFAULT_TILE_SIZE / Math.pow(2, 5));
});
@@ -645,6 +645,7 @@ describe('ol.tilegrid.TileGrid', function() {
goog.require('ol.Coordinate');
goog.require('ol.TileCoord');
goog.require('ol.proj');
+goog.require('ol.proj.METERS_PER_UNIT');
goog.require('ol.proj.Projection');
goog.require('ol.proj.Units');
goog.require('ol.tilegrid.TileGrid');