[OpenLayers-Users] Stop drawing when two points are close together
/ doubleclicking with a touch-screen
Jelmer Baas
jelmerbs at xs4all.nl
Tue Jun 15 05:47:48 EDT 2010
Hi,
We are using OpenLayers for an application that will run on a laptop
with a touchscreen. This makes double-clicking (to end drawing new
geometry) very difficult. So instead I wanted to check (while drawing)
if two points are very close together, and if so, stop drawing after that.
Right now I have:
myLayer.events.register('sketchmodified', myLayer, sketchModified);
function sketchModified(obj) {
var tmp = obj.feature.geometry.components;
var intCount = tmp[0].components.length;
if (intCount > 4) {
var p1 = map.getPixelFromLonLat(new
OpenLayers.LonLat(tmp[0].components[intCount-4].x,tmp[0].components[intCount-4].y));
var p2 = map.getPixelFromLonLat(new
OpenLayers.LonLat(tmp[0].components[intCount-3].x,tmp[0].components[intCount-3].y));
var x = Math.abs(p1.x - p2.x);
var y = Math.abs(p1.y - p2.y);
var length = Math.sqrt(x * x + y * y);
if (length < 10) {
alert('stop drawing here');
}
}
}
Although very wonky code, it actually does work. I however can't seem to
figure out how to "submit" the geometry that has been drawn so far
(i.e., simulate a double-click and let my control do it's save-refresh
dance).
Anyone can help me with that?
And yes, I'm aware that the sketchmodified event is fired much more
often than neccesary, that's not really an issue with touchscreens,
though. Of course, better solutions (perhaps even a setting to make
double-clicks easier? Or give double-clicks a few pixel tolerance?) are
more than welcome!
P.S.: I also sent this same email from my work account, but somehow it
didn't show up in the mailing list... Very odd.
Regards,
Jelmer Baas
More information about the Users
mailing list