[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