hi Tim,<br><br>Thanks for the answer.<br><br>An error still keeps appearing. I think there are some events still going on that throw this error. (mousedown?)<br>any ideas?<br><br>This is what I get from firebug.<br><br><span class="objectBox objectBox-errorMessage hasTwisty hasBreakSwitch opened"><div class="errorTitle">
this.layer is null</div><div class="errorTrace"><div class="objectBox objectBox-stackFrame"><a class="objectLink">drawFeature()</a>()<span class="objectLink-sourceLink objectLink">Path.js (línea 164)</span></div><div class="objectBox objectBox-stackFrame">
<a class="objectLink">addPoint()</a>(<a class="objectLink objectLink-object"><span class="objectTitle">x=429,y=223</span> x=<span class="objectPropValue">429</span> y=<span class="objectPropValue">223</span> CLASS_NAME=<span class="objectPropValue">OpenLayers.Pixel</span></a><span class="arrayComma"></span>)<span class="objectLink-sourceLink objectLink">Path.js (línea 127)</span></div>
<div class="objectBox objectBox-stackFrame"><a class="objectLink">mousedown()</a>(<a class="objectLink objectLink-object">mousedown clientX=448, clientY=293</a><span class="arrayComma"></span>)<span class="objectLink-sourceLink objectLink">Path.js (línea 217)</span></div>
<div class="objectBox objectBox-stackFrame"><a class="objectLink">triggerEvent()</a>(<span class="objectBox objectBox-string">"mousedown"</span><span class="arrayComma">, </span><a class="objectLink objectLink-object">mousedown clientX=448, clientY=293</a><span class="arrayComma"></span>)<span class="objectLink-sourceLink objectLink">Events.js (línea 714)</span></div>
<div class="objectBox objectBox-stackFrame"><a class="objectLink">handleBrowserEvent()</a>(<a class="objectLink objectLink-object">mousedown clientX=448, clientY=293</a><span class="arrayComma"></span>)<span class="objectLink-sourceLink objectLink">Events.js (línea 742)</span></div>
<div class="objectBox objectBox-stackFrame"><a class="objectLink">bindAsEventListener()</a>(<a class="objectLink objectLink-object">mousedown clientX=448, clientY=293</a><span class="arrayComma"></span>)<span class="objectLink-sourceLink objectLink">BaseTypes.js (línea 432)</span></div>
</div><div class="errorSourceBox errorSource-exec"><img src="chrome://firebug/content/blank.gif" title="Break on this error" class="errorBreak"><span class="errorSource"> this.layer.drawFeature(this.line, this.style);</span></div>
</span><br><br><div class="gmail_quote">On Wed, Mar 25, 2009 at 9:16 PM, Tim Schaub <span dir="ltr"><<a href="mailto:tschaub@opengeo.org">tschaub@opengeo.org</a>></span> wrote:<br><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
Hey-<br>
<div class="im"><br>
toni hernández wrote:<br>
> Hi all,<br>
><br>
> I need to draw lines with only two vertexs so when the second vertex is<br>
> added the draing must end.<br>
><br>
<br>
</div>If you want to use the existing code, your application could do<br>
something like this (assuming you had a vector layer named "layer" and a<br>
drawing control named "draw" with a path handler configured to draw on<br>
that layer):<br>
<br>
// using API properties and methods only<br>
<br>
layer.events.on({<br>
sketchmodified: function(event) {<br>
var feature = event.feature;<br>
if(feature.geometry.components.length > 2) {<br>
feature = feature.clone();<br>
var geom = feature.geometry;<br>
geom.removeComponent(geom.component[2]);<br>
draw.deactivate();<br>
layer.addFeatures([feature]);<br>
}<br>
}<br>
});<br>
<br>
Untested, but something like that should work.<br>
<br>
Tim<br>
<div><div></div><div class="h5"><br>
><br>
> I've done it so far creating a new handler.path where I control the<br>
> length of the geometry components. When is bigger than 2 I run the<br>
> finalize function so it ends.<br>
> That works fine but I think there must be a better way of doing it?<br>
><br>
> I have also tried registering the sketchmodified event of the control<br>
> from the main html page.<br>
><br>
> The issue here is that I do not know how to deactivate the drawing<br>
> control without throwing and error. (feature is null, on Vector.js (line<br>
> 617, in drawFeature function)<br>
><br>
> any ideas?<br>
><br>
> the code.<br>
><br>
> //DRAWING CONTROLS<br>
> drawControls = {<br>
> point: new OpenLayers.Control.DrawFeature(pointLayer,<br>
> OpenLayers.Handler.Point),<br>
> line: new OpenLayers.Control.DrawFeature(lineLayer,<br>
> OpenLayers.Handler.Path, options),<br>
> polygon: new OpenLayers.Control.DrawFeature(polygonLayer,<br>
> OpenLayers.Handler.Polygon, options)<br>
> };<br>
><br>
> for(var key in drawControls) {<br>
> map.addControl(drawControls[key]);<br>
> }<br>
><br>
> //REGISTERING<br>
> drawControls.line.layer.events.on({<br>
> 'sketchmodified': report<br>
> });<br>
><br>
><br>
> function report(param)<br>
> {<br>
> if (param.feature.components.length>2)<br>
> {<br>
> drawControls.line.handler.finalize();<br>
> }<br>
> }<br>
><br>
><br>
><br>
</div></div>> ------------------------------------------------------------------------<br>
><br>
> _______________________________________________<br>
> Dev mailing list<br>
> <a href="mailto:Dev@openlayers.org">Dev@openlayers.org</a><br>
> <a href="http://openlayers.org/mailman/listinfo/dev" target="_blank">http://openlayers.org/mailman/listinfo/dev</a><br>
<font color="#888888"><br>
<br>
--<br>
Tim Schaub<br>
OpenGeo - <a href="http://opengeo.org" target="_blank">http://opengeo.org</a><br>
Expert service straight from the developers.<br>
_______________________________________________<br>
Dev mailing list<br>
<a href="mailto:Dev@openlayers.org">Dev@openlayers.org</a><br>
<a href="http://openlayers.org/mailman/listinfo/dev" target="_blank">http://openlayers.org/mailman/listinfo/dev</a><br>
</font></blockquote></div><br>