[OpenLayers-Users] DrawFeature with callback?

Arnd Wippermann arnd.wippermann at web.de
Fri Dec 5 12:41:17 EST 2008


There seems to be only "cancel" and "done" as callbacks for
OpenLayers.Handler.RegularPolygon, but how to use them I don't have a clue.

The "done" callback is declared in OpenLayers.Control.DrawFeature to draw
the feature, trigger "featureadded" and call a empty function featureAdded.

This function you can declare to do something after the feature is added to
the layer.

polygonControl.featureAdded = function() { dosomething();};

or (not tested) you can register the event "featureadded" to the control.


Arnd Wippermann
 

-----Ursprüngliche Nachricht-----
Von: users-bounces at openlayers.org [mailto:users-bounces at openlayers.org] Im
Auftrag von Nino Saturnino Martinez Vazquez Wael
Gesendet: Freitag, 5. Dezember 2008 14:03
An: Adorian Ardelean
Cc: users at openlayers.org
Betreff: Re: [OpenLayers-Users] DrawFeature with callback?

Okay so I now have this, still not working though:

       

<html xmlns="http://www.w3.org/1999/xhtml">
  <head>
    <title>OpenLayers Regular Polygon Example</title>
    <script src="http://openlayers.org/api/OpenLayers.js"></script>
    <script type="text/javascript">
        var map, polygonControl;
        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 polygonLayer = new OpenLayers.Layer.Vector("Polygon Layer");

            map.addLayers([wmsLayer, polygonLayer]);
            map.addControl(new OpenLayers.Control.LayerSwitcher());
            map.addControl(new OpenLayers.Control.MousePosition());

            dosomething = function (polygon)
            {
                //do something with polygon
                alert("yeeehaaa");
            };

            polyOptions = {sides: 4, callbacks: {'featureAdded': 
dosomething}  };
            polygonControl = new
OpenLayers.Control.DrawFeature(polygonLayer,
                                            
OpenLayers.Handler.RegularPolygon,
                                            {handlerOptions: polyOptions
                                                });
           
            map.addControl(polygonControl);
           
            map.setCenter(new OpenLayers.LonLat(0, 0), 3);
           
            document.getElementById('noneToggle').checked = true;
        }
        function setOptions(options) {
            polygonControl.handler.setOptions(options);
        }
        function setSize(fraction) {
            var radius = fraction * map.getExtent().getHeight();
            polygonControl.handler.setOptions({radius: radius,
                                               angle: 0});
        }
    </script>

  </head>
  <body onload="init()">
    <h2 id="title">OpenLayers Regular Polygon Example</h2>
    <p id="shortdesc">
      Shows how to use the RegularPolygon handler to draw features with
      different numbers of sides.
    </p>
    <div id="map" class="smallmap"></div>
    <div id="config">
       
        <ul id="controls"><b>Map Controls</b>

            <li>
                <input type="radio" name="type"
                       value="none" id="noneToggle"
                       onclick="polygonControl.deactivate()"
                       checked="checked" />
                <label for="noneToggle">navigate</label>
            </li>
            <li>
                <input type="radio" name="type"
                       value="polygon" id="polygonToggle"
                       onclick="polygonControl.activate()" />
                <label for="polygonToggle">draw polygon</label>
            </li>

        </ul>

    </div>
  </body>

</html>


Adorian Ardelean wrote:
> Hi,
>
> I presume you have to specify the event name somehow. Try including this:
>
> dosomething = function (feature)
> {
>
> }
>
>  ...callbacks: {'featureAdded': dosomething}...
>
>
> All the best,
> Adorian
>
> On Fri, Dec 5, 2008 at 12:59 PM, Nino Saturnino Martinez Vazquez Wael 
> <nino.martinez at jayway.dk <mailto:nino.martinez at jayway.dk>> wrote:
>
>     Hi Guys
>
>     Im doing a integration for the Apache Wicket framework(
>
http://wicketstuff.org/confluence/display/STUFFWIKI/wicket-contrib-openlayer
s
>     ), and want to add some more features. Im looking into adding the
>     possibility to draw polygons, however I cant find a example where
>     theres
>     a simple callback involved once the polygon are drawn, however the api
>     mentions it's possible.
>
>     As you can see from the below code the only thing I need for this
>     little
>     thing to work are the function that calls the alert to be picked up.
>     Please say if you want me to elaborate further.
>
>
>     <html xmlns="http://www.w3.org/1999/xhtml">
>      <head>
>        <title>OpenLayers Regular Polygon Example</title>
>        <script src="http://openlayers.org/api/OpenLayers.js"></script>
>        <script type="text/javascript">
>            var map, polygonControl;
>            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 polygonLayer = new OpenLayers.Layer.Vector("Polygon
>     Layer");
>
>                map.addLayers([wmsLayer, polygonLayer]);
>                map.addControl(new OpenLayers.Control.LayerSwitcher());
>                map.addControl(new OpenLayers.Control.MousePosition());
>
>                polyOptions = {sides: 4, callbacks:
>     {function(value){alert('yeeeha');}}  };
>                polygonControl = new
>     OpenLayers.Control.DrawFeature(polygonLayer,
>
>     OpenLayers.Handler.RegularPolygon,
>                                                {handlerOptions:
>     polyOptions
>                                                    });
>
>                map.addControl(polygonControl);
>
>                map.setCenter(new OpenLayers.LonLat(0, 0), 3);
>
>                document.getElementById('noneToggle').checked = true;
>                 document.getElementById('irregularToggle').checked =
>     false;
>            }
>            function setOptions(options) {
>                polygonControl.handler.setOptions(options);
>            }
>            function setSize(fraction) {
>                var radius = fraction * map.getExtent().getHeight();
>                polygonControl.handler.setOptions({radius: radius,
>                                                   angle: 0});
>            }
>        </script>
>
>      </head>
>      <body onload="init()">
>        <h2 id="title">OpenLayers Regular Polygon Example</h2>
>        <p id="shortdesc">
>          Shows how to use the RegularPolygon handler to draw features with
>          different numbers of sides.
>        </p>
>        <div id="map" class="smallmap"></div>
>        <div id="config">
>
>            <ul id="controls"><b>Map Controls</b>
>
>                <li>
>                    <input type="radio" name="type"
>                           value="none" id="noneToggle"
>                           onclick="polygonControl.deactivate()"
>                           checked="checked" />
>                    <label for="noneToggle">navigate</label>
>                </li>
>                <li>
>                    <input type="radio" name="type"
>                           value="polygon" id="polygonToggle"
>                           onclick="polygonControl.activate()" />
>                    <label for="polygonToggle">draw polygon</label>
>                </li>
>
>            </ul>
>
>        </div>
>      </body>
>
>     </html>
>
>
>
>
>     -Nino
>     _______________________________________________
>     Users mailing list
>     Users at openlayers.org <mailto:Users at openlayers.org>
>     http://openlayers.org/mailman/listinfo/users
>
>
>
>
> --
> Dr. Adorian Ardelean
> coordinator of myNature Project
>
> http://mybiosis.info/nature/portal.php?pagename=firstpage [a Romanian 
> biodiversity-database] 
> http://mybiosis.info/nature/portal.php?pagename=adorian [CV]

--
-Wicket for love

Nino Martinez Wael
Java Specialist @ Jayway DK
http://www.jayway.dk
+45 2936 7684

_______________________________________________
Users mailing list
Users at openlayers.org
http://openlayers.org/mailman/listinfo/users




More information about the Users mailing list