Using buttonclick event to avoid issues on touch devices.

This commit is contained in:
ahocevar
2012-03-03 22:21:01 +01:00
parent 9860d60518
commit 221f299650
2 changed files with 22 additions and 19 deletions

View File

@@ -5,6 +5,7 @@
/**
* @requires OpenLayers/Control.js
* @requires OpenLayers/Events/buttonclick.js
*/
/**
@@ -63,8 +64,7 @@ OpenLayers.Control.Zoom = OpenLayers.Class(OpenLayers.Control, {
zoomOut = links.zoomOut,
bind = OpenLayers.Function.bind;
zoomIn.onclick = bind(this.onZoomInClick, this);
zoomOut.onclick = bind(this.onZoomOutClick, this);
this.events.register("buttonclick", this, this.onZoomClick);
this.zoomInLink = zoomIn;
this.zoomOutLink = zoomOut;
return div;
@@ -81,7 +81,9 @@ OpenLayers.Control.Zoom = OpenLayers.Class(OpenLayers.Control, {
*/
getOrCreateLinks: function(el) {
var zoomIn = document.getElementById(this.zoomInId),
zoomOut = document.getElementById(this.zoomOutId);
zoomOut = document.getElementById(this.zoomOutId),
eventElement = zoomOut ? zoomOut.parentNode : this.div;
this.events.attachToElement(eventElement);
if (!zoomIn) {
zoomIn = document.createElement("a");
zoomIn.href = "#zoomIn";
@@ -89,6 +91,7 @@ OpenLayers.Control.Zoom = OpenLayers.Class(OpenLayers.Control, {
zoomIn.className = "olControlZoomIn";
el.appendChild(zoomIn);
}
OpenLayers.Element.addClass(zoomIn, "olButton");
if (!zoomOut) {
zoomOut = document.createElement("a");
zoomOut.href = "#zoomOut";
@@ -96,27 +99,27 @@ OpenLayers.Control.Zoom = OpenLayers.Class(OpenLayers.Control, {
zoomOut.className = "olControlZoomOut";
el.appendChild(zoomOut);
}
OpenLayers.Element.addClass(zoomOut, "olButton");
return {
zoomIn: zoomIn, zoomOut: zoomOut
};
},
/**
* Method: onZoomInClick
* Called when zoom-in link is clicked.
* Method: onZoomClick
* Called when zoomin/out link is clicked.
*/
onZoomInClick: function() {
onZoomClick: function(evt) {
var propagate = true,
button = evt.buttonElement;
if (button === this.zoomInLink) {
this.map.zoomIn();
return false;
},
/**
* Method: onZoomOutClick
* Called when zoom-out link is clicked.
*/
onZoomOutClick: function() {
propagate = false;
} else if (button === this.zoomOutLink) {
this.map.zoomOut();
return false;
propagate = false;
}
return propagate;
},
/**

View File

@@ -44,7 +44,7 @@
map.setCenter([0, 0], 0);
t.eq(map.getZoom(), 0, "initial center");
control.zoomInLink.onclick();
control.events.triggerEvent("buttonclick", {buttonElement: control.zoomInLink});
t.eq(map.getZoom(), 1, "after zoom in");
map.destroy();
}
@@ -61,7 +61,7 @@
map.setCenter([0, 0], 1);
t.eq(map.getZoom(), 1, "initial center");
control.zoomOutLink.onclick();
control.events.triggerEvent("buttonclick", {buttonElement: control.zoomOutLink});
t.eq(map.getZoom(), 0, "after zoom out");
map.destroy();
}