Not sure if this is correctly posted here or on the OpenLayers list but
I will try!
I am using OpenLayers, GeoServer 2.1.3. I have a function that works
to filter the markers on the map with a CQL_FILTER function. But when
I click on a marker it shows a popup with featureInfo information. If
there are hidden markers on the same coordinate (from the CQL_FILTER
function) every marker shows a popup, even if I have filtered them
out. Is it possible to only have the filtered markers give a popup?
The markers are on the same layer but I only want a popup to fire on
the filtered markers. Any advice to where I start would be be
appreciated!

function CQLfilter(sok,cat){
var mLayers = map.layers;
switch (cat)
{
case 'SN':
  param = "scientificname LIKE '%"+ sok + "%' ";
 break;
case 'NNG':
  param = "norsknavngruppe LIKE '%"+ sok + "%' ";
 break;
case 'NNA':
  param = "norsknavnart LIKE '%"+ sok + "%' ";
 break;
case 'PROJ':
  param2 = new Array()
  param2.push("prosjektnummer LIKE '%" + sok + "%'")
  param2.push("prosjektnavn LIKE '%" + sok + "%'")
  param = param2.join(" OR ");
 break;
default:
  param2 = new Array()
  param2.push("scientificname LIKE '%" + sok + "%'")
  param2.push("norsknavngruppe LIKE '%" + sok + "%'")
  param2.push("norsknavnart LIKE '%" + sok + "%'")
  param2.push("collector LIKE '%" + sok + "%'")
  param = param2.join(" OR ");
 break;
}
for(var a = 4; a < (mLayers.length); a++ ){
   mLayers[a].mergeNewParams({'CQL_FILTER': param});
   mLayers[a].setVisibility(true);
}}
Here is my code that generates the popup and the wmsGetFeatureInfo. I
guess it is here I must also do some kind of filtering on the wms
request but not sure how to do it:

           info = new OpenLayers.Control.WMSGetFeatureInfo({
           url: 'http://kart.naturkart.no/geoserver/wms',
           title: 'Identify features by clicking',
           queryVisible: true,
           infoFormat:'application/vnd.ogc.gml',
           eventListeners: {
               getfeatureinfo: function(event) {
                   if (popup) {
                       map.removePopup(popup);
                   }
                   var contentHtml = '';
                   // Manage the features
                   if (event.features.length > 0) {
                       for (var i = 0; i < event.features.length; i++) {
                           var feature = event.features[i];
                           // Identify the type
                           if (feature.gml.featureType == 'ikke_rodlistet' ||
                                   feature.gml.featureType ==
'kritisk_truet' ||
                                   feature.gml.featureType == 'nar_truet' ||
                                   feature.gml.featureType ==
'regionalt_utdodd' ||
                                   feature.gml.featureType == 'saarbar' ||
                                   feature.gml.featureType == 'sterkt_truet') {
                               // Create HTML content for this feature type
                               var locality = feature.attributes['locality'];
                               country = feature.attributes['country'];
                               scientificname =
feature.attributes['scientificname'];
                               kingdom = feature.attributes['kingdom'];
                               norsknavnart =
feature.attributes['norsknavnart']!= null?
feature.attributes['norsknavnart'] + ' | ':'';
                               norsknavngruppe =
feature.attributes['norsknavngruppe']!= null?
feature.attributes['norsknavngruppe'] + ' | ':'';
                               collector =  feature.attributes['collector'];
                               kommentar =
feature.attributes['kommentar']!= null?
feature.attributes['kommentar'] + ' | ':'';
                               dateinterval =
feature.attributes['dateinterval'];
                               status = feature.attributes['status'];
statusimg = '<img src="/images/svg/bab_'+status+'.svg" width="10" />';
                               contentHtml = contentHtml + '<h2>' +
scientificname +' '+ statusimg + '</h2>';
                               contentHtml = contentHtml +
norsknavnart + norsknavngruppe + ' Reg.dato: ' + dateinterval + '<br
/>';

                               contentHtml = contentHtml + kommentar
+ ' Reg. av: ' + collector + '<br />';
                                                         contentHtml
= contentHtml + '<span class="popItem"><a
href="http://babkart.no/?x='+feature.attributes['x']+'&amp;y='+feature.attributes['y']+'">Direkte
link</a> til dette artsfunn.</span><hr />';
                               }
                       }
                   } else {
                       // Don't show any popup if no features.
                       return; alert(map.getLonLatFromPixel(event.xy));
                   }
                   var popup = new Popup(
                           "chicken",
                           map.getLonLatFromPixel(event.xy),
                           null,
                           contentHtml,
                           null,
                           true
                           );
                   popup.autoSize = true;
                   map.addPopup(popup, true);
                   Ext.ux.Lightbox.register("a[rel^=lightbox]",true);
               }
           }
       });
       map.addControl(info);
       info.activate();

~asle benoni

------------------------------------------------------------------------------
Live Security Virtual Conference
Exclusive live event will cover all the ways today's security and 
threat landscape has changed and how IT managers can respond. Discussions 
will include endpoint security, mobile security and the latest in malware 
threats. http://www.accelacomm.com/jaw/sfrnl04242012/114/50122263/
_______________________________________________
Geoserver-users mailing list
Geoserver-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/geoserver-users

Reply via email to