Commit Graph

11660 Commits

Author SHA1 Message Date
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
a6f65df8c4 View / add a resolveConstraints method to end interactions
This will help making sure that the view will come back to a "rested" state
once the interactions are over.

Interactions no longer need to handle the animation back to a rested state,
they simply call `endInteraction` with the desired duration and direction.
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
jahow
d991dfa54a View / remove constrainCenter method 2019-02-22 15:01:30 +01:00
jahow
c2c1aa01d3 View / removed the constrainRotation method 2019-02-22 15:01:30 +01:00
Olivier Guyot
e6c4b2ffd1 View / make the constrainResolution function private
Other classes should not need to worry about constraining the resolution
or not, as the View will eventually do this on its own.
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
Olivier Guyot
1cb934dbe3 View / implement intermediate values for center/rot/res
The view now has targetCenter, targetRotation and targetResolution members.

These hold the new values given by set* methods. The actual view parameters are then changed by
calling `applyParameters_`.
2019-02-22 15:01:30 +01:00
Petr Sloup
67ee5a41b0 Add note about ignoring tileSize TileJSON property 2019-02-22 09:05:18 +01:00
Petr Sloup
bc25097899 Add tileSize option to ol/source/TileJSON
The TileJSON spec does not specify the tile size
and there is no TileJSON property specifying the value.

Many providers nowadays provide 512x512 with TileJSON.
2019-02-21 19:00:07 +01:00
Andreas Hocevar
6ce499532c Merge pull request #9250 from ahocevar/clear-refresh
Clearer behaviour of clear() and refresh() on sources
2019-02-21 17:12:26 +01:00
Andreas Hocevar
90034e4d48 Merge pull request #9251 from ahocevar/cache-size
Fix cache size calculation
2019-02-21 01:57:40 +01:00
ahocevar
d06d00ccbb Fix typo 2019-02-21 01:29:15 +01:00
Andreas Hocevar
959dba169d Merge pull request #9110 from crubier/master
Add TilePixelRatio to Zoomify
2019-02-21 00:29:42 +01:00
Vincent Lecrubier
900adaaffb Update Zoomify.js 2019-02-20 22:40:24 +00:00
ahocevar
94cd126189 Add setUrl function and don't reset loaded extents in setLoader 2019-02-20 21:55:29 +01:00
ahocevar
e4873a9952 Improve documentation for ol/Source#refresh 2019-02-20 20:40:09 +01:00
ahocevar
8d1022046e Clear loaded extents when a new loader is set 2019-02-20 20:39:26 +01:00
ahocevar
f40cbf2cac Do not reload on clear(), but on refresh() 2019-02-20 20:39:04 +01:00
ahocevar
a0ba8dd8c6 Add a clear() method for tile sources 2019-02-20 20:37:58 +01:00
Andreas Hocevar
62d82411c8 Merge pull request #9244 from huyngkh/stylus-support
add stylus only and touch only mode to drawing a shape
2019-02-20 11:30:11 +01:00
Huy Nguyen
c3709ef51a remove arrow function, add JSDoc and restore original Draw 2019-02-20 17:23:50 +07:00
Huy Nguyen
0c889da99c add stylus and touch mode to drawing a shape 2019-02-20 13:55:22 +07:00
Frederic Junod
4cb9b1eeb3 Add setRotateWithView function to ol/style/Text 2019-02-19 14:20:58 +01:00
Frederic Junod
f0a97ee460 Fix comments indentation 2019-02-19 14:12:14 +01:00
Andreas Hocevar
7c1e16abc3 Merge pull request #9230 from ahocevar/hitdetect-declutter
Consider all tiles for hit detection when decluttering
2019-02-19 12:58:07 +01:00
Frederic Junod
746455a9b9 Move params list to the constructor function 2019-02-18 17:33:07 +01:00
Frederic Junod
3557247b27 Fix comments indentation 2019-02-18 17:31:36 +01:00
Frederic Junod
6bab8793a2 Remove deprecated {get,set}SnapToPixel functions 2019-02-18 14:07:27 +01:00
ahocevar
667cadc403 Remove extent default so we catch errors when extent is not set 2019-02-18 12:07:10 +01:00
ahocevar
08be6cf9bc Set extent berfore features 2019-02-18 11:54:59 +01:00
ahocevar
fd07de39ad Consider all tiles for hit detection when decluttering 2019-02-18 11:40:52 +01:00
Vincent Lecrubier
44942dffb5 Update Zoomify.js 2019-02-18 10:04:02 +00:00
Frederic Junod
e9ecea3bb7 Remove 'moz' prefix for the Full Screen API
Browser support: https://caniuse.com/#feat=fullscreen
2019-02-15 14:37:49 +01:00
Frederic Junod
391dfc5025 Remove vendor prefix for the 'transform' CSS property
Browser support: https://caniuse.com/#feat=transforms2d
2019-02-15 14:29:15 +01:00
Andreas Hocevar
a2a3bda5c9 Merge pull request #9221 from ahocevar/remove-unused-sortbyzindex
Remove unused sortByZIndex function
2019-02-15 09:45:26 +01:00
Frédéric Junod
f28b7c7bcf Merge pull request #9220 from fredj/rm_extra_canvas_resize
Don't resize/clear the vector renderer canvas
2019-02-15 09:34:57 +01:00
ahocevar
020f513ed5 Remove unused sortByZIndex function 2019-02-14 17:40:38 +01:00
Frederic Junod
30fb0b1ed1 Don't resize/clear the vector renderer canvas
Already done in the `renderFrame` function
2019-02-14 13:49:31 +01:00
Frederic Junod
40605d7c53 Don't use loadImage function to avoid infinite loading loop 2019-02-14 13:47:52 +01:00
Frederic Junod
c0a860a31f Remove unnecessary type cast 2019-02-13 11:42:22 +01:00
ahocevar
3557a13147 Only consider child range with drawable tiles 2019-02-09 19:35:31 +01:00
Frédéric Junod
f6e625f21a Merge pull request #9197 from fredj/cleanup
Remove unused opt_this param
2019-02-08 08:43:31 +01:00
Frederic Junod
6f8ffddace Remove opt_this param in manageTilePyramid function 2019-02-07 13:18:52 +01:00
Frederic Junod
438736068e Remove opt_this param in forEach function 2019-02-07 13:07:36 +01:00