Hi Eric, Thanks. I added the following within my handler after going through the DrawFeature code - works fine now :-)
var feature = new OpenLayers.Feature.Vector(lineGeom); lineLayer.addFeatures([feature]); Regards Mifan http://talksahana.com http://techmania.wordpress.com --- You'll feel devilish tonight. Toss dynamite caps under a flamenco dancer's heel. On Wed, 2008-06-18 at 08:32 +0200, Eric Lemoine wrote: > Hi. I haven't looked at your code but it's no surprise that the > feature disappears once drawn - the point handler, which the path > handler inherits from, uses a temporary vector layer. It is the > responsibility of your control to actually add drawn features to a > permanent layer, which control users will provide. Look at the draw > feature control code to understand how this works. Hope this helps. > Cheers. Eric > > 2008/6/17, Mifan Careem <[EMAIL PROTECTED]>: > > Hi All, > > > > I'm trying to get the coordinates from line vectors drawn by users using > > Control.storeFeature and store them in the database. I intend to do this > > using a solution posted in the lists sometime back by using the "done" > > callback of Handler.Path, and doing the required processing within it. > > > > My problem is that the drawn vector line disappears at the end of > > drawing it. I'm assuming this is because I'm overriding the default > > "done" handler with my own? - since it works OK when I do not have a > > callback handler. Is there a way I can extend the default callback > > handler instead of replacing it? (I hope the terminology I use is > > correct here), so that the drawn vector lines do not disappear? > > > > My code is attached below, and a hosted version is at: > > http://talksahana.com/sandbox/ol-draw.html > > > > Appreciate any help with this. Thanks. > > > > > > Regards > > > > Mifan > > > > http://talksahana.com > > http://techmania.wordpress.com > > > > > > --------- > > var map, drawControls; > > OpenLayers.Util.onImageLoadErrorColor = "transparent"; > > function init(){ > > map = new OpenLayers.Map('map'); > > var wmsLayer = new OpenLayers.Layer.WMS( "OpenLayers > > WMS", > > "http://labs.metacarta.com/wms/vmap0?", {layers: > > 'basic'}); > > var lineLayer = new OpenLayers.Layer.Vector("Line > > Layer"); > > map.addLayers([wmsLayer, lineLayer]); > > map.addControl(new OpenLayers.Control.LayerSwitcher()); > > map.addControl(new OpenLayers.Control.MousePosition()); > > var options = {handlerOptions: {freehand: true}}; > > //Callback > > var pathDrawFeatureOptions = { > > callbacks : {"done": doneHandler}, > > handlerOptions: {freehand: true} > > }; > > drawControls = { > > line: new OpenLayers.Control.DrawFeature(lineLayer, > > OpenLayers.Handler.Path, > > pathDrawFeatureOptions) > > }; > > for(var key in drawControls) { > > map.addControl(drawControls[key]); > > } > > map.setCenter(new OpenLayers.LonLat(0, 0), 3); > > document.getElementById('noneToggle').checked = true; > > } > > > > > > function doneHandler(lineGeom) { > > // do processing .... > > //alert("doneHandler:" + > > lineGeom.getComponentsString()); > > //var linecontrol = drawControls['line']; > > //linecontrol.deactivate(); > > } > > > > function toggleControl(element) { > > for(key in drawControls) { > > var control = drawControls[key]; > > if(element.value == key && element.checked) { > > control.activate(); > > } else { > > control.deactivate(); > > } > > } > > } > > ------------ > > > > _______________________________________________ > > Users mailing list > > Users@openlayers.org > > http://openlayers.org/mailman/listinfo/users > > _______________________________________________ Users mailing list Users@openlayers.org http://openlayers.org/mailman/listinfo/users