diff --git a/src/google_map.js b/src/google_map.js index ce8d614..422f5a0 100644 --- a/src/google_map.js +++ b/src/google_map.js @@ -18,6 +18,7 @@ import isArraysEqualEps from './utils/array_helper'; import isPlainObject from './utils/is_plain_object'; import pick from './utils/pick'; import raf from './utils/raf'; +import log2 from './utils/math/log2'; import assign from 'lodash/object/assign'; import isNumber from 'lodash/lang/isNumber'; @@ -311,7 +312,7 @@ export default class GoogleMap extends Component { const tilesPerWidth = Math.ceil(this.geoService_.getWidth() / K_GOOGLE_TILE_SIZE) + 2; const tilesPerHeight = Math.ceil(this.geoService_.getHeight() / K_GOOGLE_TILE_SIZE) + 2; const maxTilesPerDim = Math.max(tilesPerWidth, tilesPerHeight); - return Math.ceil(Math.log2(maxTilesPerDim)); + return Math.ceil(log2(maxTilesPerDim)); } return DEFAULT_MIN_ZOOM; } @@ -870,4 +871,3 @@ export default class GoogleMap extends Component { ); } } - diff --git a/src/utils/loaders/google_map_loader.js b/src/utils/loaders/google_map_loader.js index dfab181..ba8d254 100644 --- a/src/utils/loaders/google_map_loader.js +++ b/src/utils/loaders/google_map_loader.js @@ -49,7 +49,7 @@ export default function googleMapLoader(bootstrapURLKeys) { if (process.env.NODE_ENV !== 'production') { if (find(Object.keys(bootstrapURLKeys), 'callback')) { - console.error('"callback" key in bootstrapURLKeys is not allowed, ' + + console.error('"callback" key in bootstrapURLKeys is not allowed, ' + // eslint-disable-line 'use onGoogleApiLoaded property instead'); throw new Error('"callback" key in bootstrapURLKeys is not allowed, ' + 'use onGoogleApiLoaded property instead'); diff --git a/src/utils/math/log2.js b/src/utils/math/log2.js new file mode 100644 index 0000000..aaf7cba --- /dev/null +++ b/src/utils/math/log2.js @@ -0,0 +1,6 @@ + +const log2 = Math.log2 + ? Math.log2 + : (x) => Math.log(x) / Math.LN2; + +export default log2; diff --git a/src/utils/utils.js b/src/utils/utils.js index 70e9841..4345dd6 100644 --- a/src/utils/utils.js +++ b/src/utils/utils.js @@ -1,4 +1,5 @@ const GOOGLE_TILE_SIZE = 256; +import log2 from './math/log2'; function latLng2World({lat, lng}) { const sin = Math.sin(lat * Math.PI / 180); @@ -74,8 +75,8 @@ export default { return null; } - const zoomX = Math.log2(width / GOOGLE_TILE_SIZE / dx); - const zoomY = Math.log2(height / GOOGLE_TILE_SIZE / dy); + const zoomX = log2(width / GOOGLE_TILE_SIZE / dx); + const zoomY = log2(height / GOOGLE_TILE_SIZE / dy); const zoom = Math.floor(EPS + Math.min(zoomX, zoomY)); // TODO find center just unproject middle world point