hi Tim, Thanks for the answer.
An error still keeps appearing. I think there are some events still going on that throw this error. (mousedown?) any ideas? This is what I get from firebug. this.layer is null drawFeature()()Path.js (línea 164) addPoint()(x=429,y=223 x=429 y=223 CLASS_NAME=OpenLayers.Pixel)Path.js (línea 127) mousedown()(mousedown clientX=448, clientY=293)Path.js (línea 217) triggerEvent()("mousedown", mousedown clientX=448, clientY=293)Events.js (línea 714) handleBrowserEvent()(mousedown clientX=448, clientY=293)Events.js (línea 742) bindAsEventListener()(mousedown clientX=448, clientY=293)BaseTypes.js (línea 432) this.layer.drawFeature(this.line, this.style); On Wed, Mar 25, 2009 at 9:16 PM, Tim Schaub <tsch...@opengeo.org> wrote: > Hey- > > toni hernández wrote: > > Hi all, > > > > I need to draw lines with only two vertexs so when the second vertex is > > added the draing must end. > > > > If you want to use the existing code, your application could do > something like this (assuming you had a vector layer named "layer" and a > drawing control named "draw" with a path handler configured to draw on > that layer): > > // using API properties and methods only > > layer.events.on({ > sketchmodified: function(event) { > var feature = event.feature; > if(feature.geometry.components.length > 2) { > feature = feature.clone(); > var geom = feature.geometry; > geom.removeComponent(geom.component[2]); > draw.deactivate(); > layer.addFeatures([feature]); > } > } > }); > > Untested, but something like that should work. > > Tim > > > > > I've done it so far creating a new handler.path where I control the > > length of the geometry components. When is bigger than 2 I run the > > finalize function so it ends. > > That works fine but I think there must be a better way of doing it? > > > > I have also tried registering the sketchmodified event of the control > > from the main html page. > > > > The issue here is that I do not know how to deactivate the drawing > > control without throwing and error. (feature is null, on Vector.js (line > > 617, in drawFeature function) > > > > any ideas? > > > > the code. > > > > //DRAWING CONTROLS > > drawControls = { > > point: new OpenLayers.Control.DrawFeature(pointLayer, > > OpenLayers.Handler.Point), > > line: new OpenLayers.Control.DrawFeature(lineLayer, > > OpenLayers.Handler.Path, options), > > polygon: new OpenLayers.Control.DrawFeature(polygonLayer, > > OpenLayers.Handler.Polygon, options) > > }; > > > > for(var key in drawControls) { > > map.addControl(drawControls[key]); > > } > > > > //REGISTERING > > drawControls.line.layer.events.on({ > > 'sketchmodified': report > > }); > > > > > > function report(param) > > { > > if (param.feature.components.length>2) > > { > > drawControls.line.handler.finalize(); > > } > > } > > > > > > > > ------------------------------------------------------------------------ > > > > _______________________________________________ > > Dev mailing list > > Dev@openlayers.org > > http://openlayers.org/mailman/listinfo/dev > > > -- > Tim Schaub > OpenGeo - http://opengeo.org > Expert service straight from the developers. > _______________________________________________ > Dev mailing list > Dev@openlayers.org > http://openlayers.org/mailman/listinfo/dev >
_______________________________________________ Dev mailing list Dev@openlayers.org http://openlayers.org/mailman/listinfo/dev