[OpenLayers-Users] Events registered to custom control do not fire.

Mark K. Zanfardino mzanfardino at gmail.com
Mon Jun 6 18:25:12 EDT 2011


OpenLayers version 2.10
MapServer version 5.6.6

Goal: Permit user to click on map, get the features associated with the 
click event, then create a vector feature from the results.
Problem: events registered to custom control do not fire.

I have created a map with a single WMS layer called 'base' and a vector 
layer called 'select'. I have created a GetFeature control and have 
registered two events: featureselected and featureunselected (javascript 
follows). When I click on the map and observe the output in the firebug 
console (I'm using Firefox 3.6.17 for testing) I can clearly see the 
results from the POST. Furthermore, when I look at the XML returned the 
results contains all that I would expect from my GetFeatures call 
(example output below).

However, at no point do the registered events for the custom control 
fire. What might I be doing wrong here?

My ultimate

function initMap(bounds){
   OpenLayers.ProxyHost= "proxy.cgi?url=";
   var extent = new OpenLayers.Bounds.fromString(bounds);
   var options = {
     controls: [],
     restrictedExtent: extent
   };
   map = new OpenLayers.Map( 'map', options );
   base = new OpenLayers.Layer.WMS("County",
                   mapPath,
                   {
                     layers: 
'county,city,water,landmarks,roads,tenszones,tens_borders'
                   },
                   {
                     isBaseLayer: true,
                     buffer: 0,
                     maxResolution: "auto",
                     maxExtent: extent
                   });
   select = new OpenLayers.Layer.Vector( "Selection" );

   map.addLayers([base,select]);

   control = new OpenLayers.Control.GetFeature({
     protocol: OpenLayers.Protocol.WFS.fromWMSLayer(base, {featureType: 
'tenszones' } ),
     multipleKey: "shiftKey",
     toggleKey: "ctrlKey"
   });
   control.events.register("featureselected", this, function(e) {
       alert(e);
       select.addFeatures([e.feature]);
   });
   control.events.register("featureunselected", this, function(e) {
       alert(e);
       select.removeFeatures([e.feature]);
   });

   map.addControl(control);
   map.addControl(new OpenLayers.Control.PanZoom());
   map.addControl(new OpenLayers.Control.MousePosition());
   map.addControl(new OpenLayers.Control.LayerSwitcher());
   map.addControl(new OpenLayers.Control.KeyboardDefaults());
   map.addControl(new OpenLayers.Control.MouseDefaults());
   control.activate();
   map.zoomToMaxExtent();
}

<wfs:FeatureCollectionxmlns:ms="http://mapserver.gis.umn.edu/mapserver"xmlns:gml="http://www.opengis.net/gml"xmlns:wfs="http://www.opengis.net/wfs"xmlns:ogc="http://www.opengis.net/ogc"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://mapserver.gis.umn.edu/mapserver 
http://localhost/cgi-bin/mapserv?map=/home/mark/htdocs/sandbox/contra_costa/mapdata/cws.map&SERVICE=WFS&VERSION=1.1.0&REQUEST=DescribeFeatureType&TYPENAME=tenszones&OUTPUTFORMAT=text/xml; 
subtype=gml/3.1.1 http://www.opengis.net/wfs 
http://schemas.opengis.net/wfs/1.1.0/wfs.xsd"numberOfFeatures="3">
<gml:boundedBy>
<gml:EnvelopesrsName="EPSG:4326">
<gml:lowerCorner>37.706310 -122.457060</gml:lowerCorner>
<gml:upperCorner>38.108060 -121.516790</gml:upperCorner>
</gml:Envelope>
</gml:boundedBy>
<gml:featureMember>
<ms:tenszonesgml:id="tenszones.1">
<gml:boundedBy>
<gml:EnvelopesrsName="EPSG:4326">
<gml:lowerCorner>37.706310 -122.457060</gml:lowerCorner>
<gml:upperCorner>38.108060 -121.516790</gml:upperCorner>
</gml:Envelope>
</gml:boundedBy>
<ms:msGeometry>
<gml:PolygonsrsName="EPSG:4326">
<gml:exterior>
<gml:LinearRing>
<gml:posListsrsDimension="2">37.968740 -122.450260 38.086460 -122.284250 
38.059460 -122.140010 38.086460 -122.013460 38.058380 -121.746760 
38.105900 -121.680080 38.108060 -121.549450 37.815390 -121.516790 
37.706310 -121.961750 37.752750 -122.033870 37.771110 -122.022990 
37.786230 -122.062450 37.798110 -122.187640 37.880190 -122.267920 
37.886670 -122.395830 37.936340 -122.457060 37.968740 -122.450260 
</gml:posList>
</gml:LinearRing>
</gml:exterior>
</gml:Polygon>
</ms:msGeometry>
<ms:gid>1</ms:gid>
<ms:area>0.252854485350326</ms:area>
<ms:perimeter>2.34294616747318</ms:perimeter>
<ms:name>County0</ms:name>
</ms:tenszones>
</gml:featureMember>
<gml:featureMember>
<ms:tenszonesgml:id="tenszones.2">
<gml:boundedBy>
<gml:EnvelopesrsName="EPSG:4326">
<gml:lowerCorner>38.004151 -121.882119</gml:lowerCorner>
<gml:upperCorner>38.034986 -121.822493</gml:upperCorner>
</gml:Envelope>
</gml:boundedBy>
<ms:msGeometry>
<gml:PolygonsrsName="EPSG:4326">
<gml:exterior>
<gml:LinearRing>
<gml:posListsrsDimension="2">38.024671 -121.826546 38.018151 -121.825545 
38.015989 -121.822493 38.004151 -121.832033 38.007365 -121.847393 
38.018261 -121.876296 38.022347 -121.875579 38.024341 -121.882119 
38.032456 -121.880209 38.034986 -121.878309 38.024671 -121.826546 
</gml:posList>
</gml:LinearRing>
</gml:exterior>
</gml:Polygon>
</ms:msGeometry>
<ms:gid>2</ms:gid>
<ms:area>0.00104289122555201</ms:area>
<ms:perimeter>0.147388060113902</ms:perimeter>
<ms:name>DOW0</ms:name>
</ms:tenszones>
</gml:featureMember>
<gml:featureMember>
<ms:tenszonesgml:id="tenszones.10">
<gml:boundedBy>
<gml:EnvelopesrsName="EPSG:4326">
<gml:lowerCorner>38.011580 -121.889616</gml:lowerCorner>
<gml:upperCorner>38.038708 -121.862959</gml:upperCorner>
</gml:Envelope>
</gml:boundedBy>
<ms:msGeometry>
<gml:PolygonsrsName="EPSG:4326">
<gml:exterior>
<gml:LinearRing>
<gml:posListsrsDimension="2">38.012691 -121.864796 38.011580 -121.866238 
38.011820 -121.867210 38.015290 -121.882679 38.017035 -121.889616 
38.033580 -121.883112 38.033845 -121.884127 38.035403 -121.883756 
38.037705 -121.885334 38.038708 -121.883589 38.035923 -121.880900 
38.034907 -121.878369 38.032456 -121.880209 38.024341 -121.882119 
38.022347 -121.875579 38.018261 -121.876296 38.013234 -121.862959 
38.012691 -121.864796 </gml:posList>
</gml:LinearRing>
</gml:exterior>
</gml:Polygon>
</ms:msGeometry>
<ms:gid>10</ms:gid>
<ms:area>0.000199622991203796</ms:area>
<ms:perimeter>0.0962155864843698</ms:perimeter>
<ms:name>DOW8</ms:name>
</ms:tenszones>
</gml:featureMember>
</wfs:FeatureCollection>



More information about the Users mailing list