diff --git a/README.md b/README.md index 34d3d3e..6c3d817 100644 --- a/README.md +++ b/README.md @@ -385,6 +385,21 @@ and if so, uses it, so it won't load a second copy of the library. ``` +### Override the default minimum zoom + +*WARNING*: Setting these options can break markers calculation, causing no homeomorphism between screen coordinates and map. + +You can use the `minZoomOverride` associated with the `minZoom` in the custom map options to prevent a minimum zoom from being calculated: + +```javascript +function createMapOptions() { + return { + minZoomOverride: true, + minZoom: 2, + }; +} +``` + --- (*Really big thanks to [April Arcus](https://github.com/AprilArcus) for documentation fixes*) diff --git a/src/google_map.js b/src/google_map.js index 60d8b0f..0597072 100644 --- a/src/google_map.js +++ b/src/google_map.js @@ -306,6 +306,13 @@ export default class GoogleMap extends Component { return DEFAULT_MIN_ZOOM; } + _computeMinZoom = (minZoomOverride, minZoom) => { + if (minZoomOverride) { + return minZoom ? minZoom : DEFAULT_MIN_ZOOM; + } + return this._getMinZoom(); + } + _initMap = () => { // only initialize the map once if (this.initialized_) { @@ -356,7 +363,7 @@ export default class GoogleMap extends Component { const draggableOptions = this.props.draggable !== undefined && {draggable: this.props.draggable}; - const minZoom = this._getMinZoom(); + const minZoom = this._computeMinZoom(options.minZoomOverride, options.minZoom); this.minZoom_ = minZoom; const preMapOptions = { @@ -494,7 +501,9 @@ export default class GoogleMap extends Component { maps.event.addListener(map, 'idle', () => { if (this.resetSizeOnIdle_) { this._setViewSize(); - const currMinZoom = this._getMinZoom(); + const currMinZoom = this._computeMinZoom( + this.props.options.minZoomOverride, + this.props.options.minZoom); if (currMinZoom !== this.minZoom_) { this.minZoom_ = currMinZoom;