[OpenLayers-Users] Extending callback function of Handler.Path

Eric Lemoine eric.c2c at gmail.com
Wed Jun 18 02:32:44 EDT 2008


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 <mifan at opensource.lk>:
> 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 at openlayers.org
> http://openlayers.org/mailman/listinfo/users
>



More information about the Users mailing list