Commit Graph

80 Commits

Author SHA1 Message Date
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
Tim Schaub
9bd48d06c3 Complete animations at target values 2017-02-17 13:06:20 -07:00
Thomas Chandelle
c69efeb8ea Fit on circle 2017-02-02 10:34:57 +01:00
Andreas Hocevar
472ab00d24 Merge pull request #6285 from ahocevar/calculate-extent
Make size argument of ol.View#calculateExtent() optional
2017-01-13 13:22:29 +01:00
Tim Schaub
3852c0da83 Remove hint enum from view constructor 2016-12-27 10:17:26 -07:00
Andreas Hocevar
3f4f38b835 Make size argument of ol.View#calculateExtent() optional 2016-12-20 21:17:08 +01:00