Merge pull request #483 from gregersrygg/master
Improve analog mouse wheel zooming
This commit is contained in:
@@ -261,8 +261,11 @@ OpenLayers.Control.Navigation = OpenLayers.Class(OpenLayers.Control, {
|
|||||||
* deltaZ - {Integer}
|
* deltaZ - {Integer}
|
||||||
*/
|
*/
|
||||||
wheelChange: function(evt, deltaZ) {
|
wheelChange: function(evt, deltaZ) {
|
||||||
|
if (!this.map.fractionalZoom) {
|
||||||
|
deltaZ = Math.round(deltaZ);
|
||||||
|
}
|
||||||
var currentZoom = this.map.getZoom();
|
var currentZoom = this.map.getZoom();
|
||||||
var newZoom = this.map.getZoom() + Math.round(deltaZ);
|
var newZoom = this.map.getZoom() + deltaZ;
|
||||||
newZoom = Math.max(newZoom, 0);
|
newZoom = Math.max(newZoom, 0);
|
||||||
newZoom = Math.min(newZoom, this.map.getNumZoomLevels());
|
newZoom = Math.min(newZoom, this.map.getNumZoomLevels());
|
||||||
if (newZoom === currentZoom) {
|
if (newZoom === currentZoom) {
|
||||||
|
|||||||
@@ -54,7 +54,7 @@ OpenLayers.Handler.MouseWheel = OpenLayers.Class(OpenLayers.Handler, {
|
|||||||
* negative)
|
* negative)
|
||||||
*/
|
*/
|
||||||
cumulative: true,
|
cumulative: true,
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Constructor: OpenLayers.Handler.MouseWheel
|
* Constructor: OpenLayers.Handler.MouseWheel
|
||||||
*
|
*
|
||||||
@@ -170,13 +170,21 @@ OpenLayers.Handler.MouseWheel = OpenLayers.Class(OpenLayers.Handler, {
|
|||||||
if (!e) {
|
if (!e) {
|
||||||
e = window.event;
|
e = window.event;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (e.wheelDelta) {
|
if (e.wheelDelta) {
|
||||||
delta = e.wheelDelta/120;
|
delta = e.wheelDelta;
|
||||||
if (window.opera && window.opera.version() < 9.2) {
|
if (window.opera && window.opera.version() < 9.2) {
|
||||||
delta = -delta;
|
delta = -delta;
|
||||||
}
|
}
|
||||||
|
if (delta % 160 === 0) {
|
||||||
|
// opera have steps of 160 instead of 120
|
||||||
|
delta = delta * 0.75;
|
||||||
|
}
|
||||||
|
delta = delta / 120;
|
||||||
} else if (e.detail) {
|
} else if (e.detail) {
|
||||||
delta = -e.detail / 3;
|
// detail in Firefox on OS X is 1/3 of Windows
|
||||||
|
// so force delta 1 / -1
|
||||||
|
delta = - (e.detail / Math.abs(e.detail));
|
||||||
}
|
}
|
||||||
this.delta = this.delta + delta;
|
this.delta = this.delta + delta;
|
||||||
|
|
||||||
|
|||||||
+10
-1
@@ -7,6 +7,14 @@ Previously, objects generated by the library were given id properties with value
|
|||||||
Corresponding issues/pull requests:
|
Corresponding issues/pull requests:
|
||||||
|
|
||||||
* https://github.com/openlayers/openlayers/pull/416
|
* https://github.com/openlayers/openlayers/pull/416
|
||||||
|
|
||||||
|
## Better support for analog scroll wheel
|
||||||
|
|
||||||
|
Removed rounding of zoom level for maps with fractionalZoom == true. So users with an OS and interface device with analog scroll support will now get smooth zooming.
|
||||||
|
|
||||||
|
Corresponding issues/pull requests:
|
||||||
|
|
||||||
|
* https://github.com/openlayers/openlayers/pull/483
|
||||||
|
|
||||||
# Behavior Changes from Past Releases
|
# Behavior Changes from Past Releases
|
||||||
|
|
||||||
@@ -25,4 +33,5 @@ in such a way you can either
|
|||||||
|
|
||||||
Corresponding issue/pull requests:
|
Corresponding issue/pull requests:
|
||||||
|
|
||||||
* https://github.com/openlayers/openlayers/pull/423
|
* https://github.com/openlayers/openlayers/pull/423
|
||||||
|
|
||||||
|
|||||||
@@ -108,7 +108,7 @@
|
|||||||
var activated = handler.activate();
|
var activated = handler.activate();
|
||||||
|
|
||||||
var delta = 120;
|
var delta = 120;
|
||||||
if (window.opera && window.opera.version() < 9.2) delta = -delta;
|
if (window.opera && window.opera.version() < 9.2) { delta = -delta; }
|
||||||
handler.onWheelEvent({'target':map.layers[0].div, wheelDelta: delta});
|
handler.onWheelEvent({'target':map.layers[0].div, wheelDelta: delta});
|
||||||
handler.onWheelEvent({'target':map.layers[0].div, wheelDelta: delta});
|
handler.onWheelEvent({'target':map.layers[0].div, wheelDelta: delta});
|
||||||
t.delay_call(1, function() {
|
t.delay_call(1, function() {
|
||||||
|
|||||||
Reference in New Issue
Block a user