Skip to content

Commit

Permalink
add initial bounds as map constructor option #1970 (#5518)
Browse files Browse the repository at this point in the history
* add initial bounds as map constructor option #1970

* fix map initial bounds test #1970

* resize map before setting initial view #1970

* move this.resize() back to conditional #1970

* fix expected zoom value for initial bounds test #1970
  • Loading branch information
stepankuzmin authored and mourner committed Oct 8, 2018
1 parent 9f4c304 commit 83aebca
Show file tree
Hide file tree
Showing 2 changed files with 26 additions and 6 deletions.
18 changes: 12 additions & 6 deletions src/ui/map.js
Original file line number Diff line number Diff line change
Expand Up @@ -196,6 +196,7 @@ const defaultOptions = {
* @param {number} [options.zoom=0] The initial zoom level of the map. If `zoom` is not specified in the constructor options, Mapbox GL JS will look for it in the map's style object. If it is not specified in the style, either, it will default to `0`.
* @param {number} [options.bearing=0] The initial bearing (rotation) of the map, measured in degrees counter-clockwise from north. If `bearing` is not specified in the constructor options, Mapbox GL JS will look for it in the map's style object. If it is not specified in the style, either, it will default to `0`.
* @param {number} [options.pitch=0] The initial pitch (tilt) of the map, measured in degrees away from the plane of the screen (0-60). If `pitch` is not specified in the constructor options, Mapbox GL JS will look for it in the map's style object. If it is not specified in the style, either, it will default to `0`.
* @param {LngLatBoundsLike} [options.bounds] The initial bounds of the map. If `bounds` is specified, it overrides `center` and `zoom` constructor options.
* @param {boolean} [options.renderWorldCopies=true] If `true`, multiple copies of the world will be rendered, when zoomed out.
* @param {number} [options.maxTileCacheSize=null] The maximum number of tiles stored in the tile cache for a given source. If omitted, the cache will be dynamically sized based on the current viewport.
* @param {string} [options.localIdeographFontFamily=null] If specified, defines a CSS font-family
Expand Down Expand Up @@ -369,12 +370,17 @@ class Map extends Camera {
this._hash = options.hash && (new Hash()).addTo(this);
// don't set position from options if set through hash
if (!this._hash || !this._hash._onHashChange()) {
this.jumpTo({
center: options.center,
zoom: options.zoom,
bearing: options.bearing,
pitch: options.pitch
});
if (options.bounds) {
this.resize();
this.fitBounds(options.bounds, { duration: 0 });
} else {
this.jumpTo({
center: options.center,
zoom: options.zoom,
bearing: options.bearing,
pitch: options.pitch
});
}
}

this.resize();
Expand Down
14 changes: 14 additions & 0 deletions test/unit/ui/map.test.js
Original file line number Diff line number Diff line change
Expand Up @@ -53,6 +53,20 @@ test('Map', (t) => {
t.end();
});

t.test('initial bounds in constructor options', (t) => {
const container = window.document.createElement('div');
Object.defineProperty(container, 'offsetWidth', {value: 512});
Object.defineProperty(container, 'offsetHeight', {value: 512});

const bounds = [[-133, 16], [-68, 50]];
const map = createMap(t, {container, bounds});

t.deepEqual(fixedLngLat(map.getCenter(), 4), { lng: -100.5, lat: 34.7171 });
t.equal(fixedNum(map.getZoom(), 3), 2.113);

t.end();
});

t.test('disables handlers', (t) => {
t.test('disables all handlers', (t) => {
const map = createMap(t, {interactive: false});
Expand Down

0 comments on commit 83aebca

Please sign in to comment.