Commit Graph

85 Commits

Author SHA1 Message Date
Olivier Guyot 0f73f16cfa View / apply constraints when an interaction starts
Previously, an interaction could begin while target values
(center/resolution) were out of the allowed range, causing a
glitch where the view zoom/position would jump suddenly.
2019-04-05 11:55:35 +02:00
ahocevar 3940b5ec88 Show only one world 2019-03-25 14:49:13 +01:00
Olivier Guyot 98994cad61 View / tests now pass without smoothResolutionConstraint: false 2019-03-25 13:21:10 +01:00
Olivier Guyot b63c4188e4 View / add tests for parameter initialization with constraints 2019-03-25 13:18:49 +01:00
Olivier Guyot 405e206717 View / better names for getValid* and applyParameters_ methods 2019-02-22 15:04:54 +01:00
Olivier Guyot 433bccd207 Linting and fixes for unit tests 2019-02-22 15:01:30 +01:00
Olivier Guyot e023c144bb View / add adjust* methods to manipulate the view more easily
API changes:
* (breaking) the `rotate` method is gone
* the `adjustRotation`, `adjustResolution` and `adjustZoom` methods are now
  available and allow using an anchor.

This means interactions do not have to do the anchor computation themselves
and this also fix anchor computation when constraints must be applied.
2019-02-22 15:01:30 +01:00
Olivier Guyot 49662b019c View / add a constrainResolution option
This introduces a breaking change.

This options replaces the various `constrainResolution` options on interactions
and the `fit` method.

Since constraints are now the responsibility of the View, the fact that intermediary
zoom levels are allowed or not is now set in the view options.

By default, the view resolution is unconstrained.
2019-02-22 15:01:30 +01:00
jahow 48ad1ffcbf View / implement a smooth rebound effect when a max extent is given
This is done by applying the center constraint differently when we're in the
middle of an interaction/animation or not.

When the view is moving, the center constraint will restrain the given value
in an "elastic" way, using a logarithmic function.

This can be disabled using the `smoothCenterConstrain` view parameter.
2019-02-22 15:01:30 +01:00
jahow cd186ada7f Add new tests for View & Interaction w/ fixes 2019-02-22 15:01:30 +01:00
Olivier Guyot 1c5fd62e43 View / refactor how zoom and resolution are computed
This commit aims to simplify the computation of zoom and resolution in the
View class.

Previously zoom levels and resolution computations were mixed in different places,
ie resolution constraints, initial values, etc.

Now the View class only has the `getZoomForResolution` and `getResolutionForZoom`
methods to convert from one system to another.

Other than that, most computations use the resolution system internally.

The `constrainResolution` method also does not exist anymore, and is replaced
by `getValidResolution` and `getValidZoomLevel` public methods.
2019-02-22 15:01:30 +01:00
Olivier Guyot 1f379a06a4 View / add support for viewport extent constraint
This introduces a breaking change:

The `extent` view option now constrains the whole viewport and not just the
view center.
The option `constrainOnlyCenter` was added to keep the previous behaviour.

Constraining the whole viewport and not only the view center means
that the center and resolution constraints must be applied with a knowledge of
the viewport size.
2019-02-22 15:01:30 +01:00
jahow e52fab636c View / apply constraints automatically based on hints
All constraints can now function differently if they are applied during
interaction or animation.
2019-02-22 15:01:30 +01:00
Olivier Guyot 3c1e3779e2 View / add a method to compute a valid zoom level
The `getValidZoomLevel` apply the current resolution constraint to return
a value that is guaranteed valid.

This is used for interactions & controls which need a target value to work:
the +/- buttons, the zoom clider, the dragbox zoom and the mouse wheel zoom.
2019-02-22 15:01:30 +01:00
Olivier Guyot 4e1ece16ed View / implemented begin- and endInteraction methods 2019-02-22 15:01:30 +01:00
Frederic Junod f1d32e71cd Named exports from ol/View 2018-02-21 09:05:40 +01:00
Nicholas L 7097b530f3 Rename extent 2018-02-19 20:33:03 +13:00
Tim Schaub e35e4e65ed Remove private static members from View 2018-02-12 07:12:02 -07:00
Tim Schaub 4a527eb763 Call animation callback in a timeout 2018-02-08 15:25:45 -07:00
Tim Schaub ad62739a6e Use blocked scoped variables
In addition to using const and let, this also upgrades our linter config and removes lint (mostly whitespace).
2018-01-12 00:50:30 -07:00
Tim Schaub 1c1f008238 Rename _ol_View_ to View 2018-01-10 09:35:42 -07:00
Tim Schaub 853cecd406 Rename _ol_ViewHint_ to ViewHint 2018-01-10 09:35:42 -07:00
Ron Young 9fa59d0735 rename map in tests 2017-12-21 23:11:42 -07:00
Tim Schaub ac7985a5ad Rename _ol_geom_Circle_ to Circle 2017-12-14 08:57:52 -07:00
Tim Schaub f7b3876c1b Rename _ol_geom_LineString_ to LineString 2017-12-14 08:54:53 -07:00
Tim Schaub eadec38ae2 Rename _ol_geom_Point_ to Point 2017-12-14 08:49:10 -07:00
Andreas Hocevar 5a4887e300 Remove default export from ol/extent 2017-12-13 22:05:10 +01:00
Tim Schaub 87295a74dd Use named exports from ol/index.js 2017-12-12 12:34:23 -07:00
Tim Schaub 8a9bbd6264 Separate example scripts for dev and prod 2017-12-12 06:56:19 -07:00
Tim Schaub 7f47883c48 Transformed 2017-12-12 06:53:18 -07:00
cs09g 466d63ac41 fix setMinZoom/setMaxZoom
when view has resolutions property, setMinZoom/setMaxZoom doesn't work.
2017-11-28 16:20:26 +09:00
Tim Schaub 967118e699 Avoid returning undefined zoom 2017-11-07 18:40:58 -07:00
Tim Schaub a3e3e99baa Get rid of useless test exports 2017-08-17 15:16:58 -04:00
Tim Schaub 967cffc398 Allow longer for first animation to finish 2017-08-17 13:20:49 -04:00
Tim Schaub 46bcce464f Add missing requires to tests 2017-08-16 13:43:28 -04:00
Tim Schaub ae62f5a682 Test that an animation series works with an undefined view 2017-08-15 13:33:19 -04:00
Tim Schaub 940f97e2a7 Make view.animate() tolerate undefined views 2017-08-15 13:28:50 -04:00
Tim Schaub 48178f0e31 Immediately complete no-op animations 2017-08-14 09:08:50 -04:00
Andreas Hocevar ee0eb8b1a0 Normalize rotation to values between -180 and 180 degrees after animation 2017-06-28 16:36:33 +02:00
Andreas Hocevar c0e4da6d8c Merge pull request #6966 from ahocevar/resolution-for-zoom
Add getResolutionForZoom method for ol.View
2017-06-28 13:01:54 +02:00
Andreas Hocevar aa8d7b0b36 Add getResolutionForZoom method for ol.View 2017-06-28 10:30:32 +02:00
Andreas Hocevar 67f69a32bb Use shortest rotation delta for animation 2017-06-28 10:06:10 +02:00
Marc Jansen d0ef05977b Autofix indentation issues (eslint --fix) 2017-06-19 11:58:00 +02:00
Frédéric Junod 88b028e4a5 Merge pull request #6765 from fredj/fit_callback
Add new callback function to view.FitOptions
2017-05-02 10:36:37 +02:00
Frederic Junod 403214f569 Add new callback function to view.FitOptions 2017-05-02 08:49:39 +02:00
Michel Beaudouin-Lafon 944f0df981 Fixed test to compare to true/false rather than 0/1 2017-05-01 17:09:27 +02:00
Michel Beaudouin-Lafon 97b3ff0499 Added View#getInteracting() to the api, similar to View#getAnimating() to access the hints 2017-05-01 14:09:44 +02:00
Tim Schaub e9c340b957 Allow min/max zoom to be set on a view 2017-03-27 14:18:16 -06:00
Tim Schaub b383e0ecb2 Add view.getMaxZoom() and view.getMinZoom() 2017-02-19 18:11:04 -07:00
Tim Schaub 719fa6e004 Add view.getZoomForResolution() 2017-02-19 17:16:20 -07:00