<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/" version="2.0">
  <channel>
    <title>topic Re: Identify on WMS Layer in ArcGIS API for Flex Questions</title>
    <link>https://community.esri.com/t5/arcgis-api-for-flex-questions/identify-on-wms-layer/m-p/463700#M10676</link>
    <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;SPAN&gt;in the interests of a quick reply, this is for &lt;/SPAN&gt;&lt;STRONG&gt;WFS&lt;/STRONG&gt;&lt;SPAN&gt; identify all from a project i have on disk that is based on google maps &amp;amp; geoserver. you'll have to change the map mouse event to ESRI's &amp;amp; build your own display as well as the cleanup routine to remove the event handlers.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;when i get a chance i'll dig up a proper WMS getFeatures example.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;PRE class="lia-code-sample line-numbers language-none"&gt;

// this snippet is set in the app init
// where: 
//&amp;nbsp; wfsURL==String var
//&amp;nbsp; campusMapParams.geoserver == your WFS server
//&amp;nbsp; qLayers==Array holding layer names you want to query
//&amp;nbsp; srs==spatial reference that applies to the &lt;STRONG&gt;WFS server&lt;/STRONG&gt; you want to query, for geoserver its EPSG references
wfsURL=campusMapParams.geoserver+"wfs?request=GetFeature&amp;amp;version=1.1.0&amp;amp;typeName="+qLayers.toString()+"&amp;amp;srs="+srs;



protected function doIdentifyAll(event:MapMouseEvent): void {
 var getWFS:HTTPService=new HTTPService;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 
 // we'll use a DWITHIN filter to grab any features that are within 25 meters or so
 // NOTE DWITHIN units MUST match the point coords, ie degrees!!
 var idPoint:String=String(event.latLng.lng())+","+String(event.latLng.lat());&amp;nbsp;&amp;nbsp;&amp;nbsp; 
 // google's coords are all geographic so we'll stick w/EPSG:4326
 getWFS.url=wfsURL+'&amp;amp;FILTER=&amp;lt;Filter xmlns="http://www.opengis.net/ogc" xmlns:gml="http://www.opengis.net/gml"&amp;gt;' + 
&amp;nbsp; '&amp;lt;DWithin&amp;gt;&amp;lt;PropertyName&amp;gt;the_geom&amp;lt;/PropertyName&amp;gt;' + 
&amp;nbsp; '&amp;lt;gml:Point srsName="EPSG:4326"&amp;gt;&amp;lt;gml:coordinates&amp;gt;'
&amp;nbsp; +idPoint
&amp;nbsp; +'&amp;lt;/gml:coordinates&amp;gt;&amp;lt;/gml:Point&amp;gt;&amp;lt;Distance units="deg"&amp;gt;0.000050&amp;lt;/Distance&amp;gt;&amp;lt;/DWithin&amp;gt;&amp;lt;/Filter&amp;gt;';
 getWFS.method="GET";
 getWFS.resultFormat="e4x";
 getWFS.addEventListener("result", identifyAllFeaturesHandler);
 getWFS.addEventListener("fault", httpServiceFault);
 getWFS.useProxy=false;
 try {
&amp;nbsp; getWFS.send();
 }&amp;nbsp;&amp;nbsp; 
 catch (error:Error) {
&amp;nbsp; informUser("Fatal error: Unable to perform identify features on geoserver " + error,"WFS identify all","error");
 }
}

protected function identifyAllFeaturesHandler(event:ResultEvent):void {
 var results:XML=event.result as XML;
 var features:XMLList=results.gml::featureMembers.children();
 var gid:String="";
 var featureAttributes:ArrayCollection=new ArrayCollection();
 for (var i:int = 0; i &amp;lt; features.length(); i++) {
&amp;nbsp; gid=features&lt;I&gt;.@gml::id;
&amp;nbsp; var thisFeature:Object=parseAttributes(features&lt;I&gt;);
&amp;nbsp; for (var x:String in thisFeature) {
&amp;nbsp;&amp;nbsp; featureAttributes.addItem({layer:gid,attribute:x,value:thisFeature&lt;X&gt;});
&amp;nbsp; }
 }
 if (featureAttributes.length==0)
&amp;nbsp; informUser("No features found at that point","Identify");
 else {
&amp;nbsp; if (idResultWindow) // get rid of last one no matter what
&amp;nbsp;&amp;nbsp; PopUpManager.removePopUp(idResultWindow);
&amp;nbsp; // clean slate 
&amp;nbsp; idResultWindow=IdentifyResultWindow(PopUpManager.createPopUp(this,IdentifyResultWindow,false));
&amp;nbsp; idResultWindow.dataSource=featureAttributes;
 }&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 
}

protected function parseAttributes(xmlNode:XML):Object {
 var nodes:XMLList = xmlNode.children();
 var attributes:Object = {};
 for(var i:int = 0; i &amp;lt; nodes.length(); i++) {
&amp;nbsp; var name:String = nodes&lt;I&gt;.localName();
&amp;nbsp; var value:Object = nodes&lt;I&gt;.valueOf();
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if(name == null || name=="the_geom")
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; continue;
&amp;nbsp; // Check for a leaf node
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if((nodes&lt;I&gt;.children().length() == 1)
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;&amp;amp; !(nodes&lt;I&gt;.children().children()[0] is XML))
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; attributes[name] = value.children()[0].toXMLString();&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 
&amp;nbsp;&amp;nbsp;&amp;nbsp; extend(attributes, this.parseAttributes(nodes&lt;I&gt;));&amp;nbsp;&amp;nbsp;&amp;nbsp; 
 }
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return attributes;
}
&lt;/I&gt;&lt;/I&gt;&lt;/I&gt;&lt;/I&gt;&lt;/I&gt;&lt;/X&gt;&lt;/I&gt;&lt;/I&gt;&lt;/PRE&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
    <pubDate>Sat, 11 Dec 2021 20:35:38 GMT</pubDate>
    <dc:creator>PaulHastings1</dc:creator>
    <dc:date>2021-12-11T20:35:38Z</dc:date>
    <item>
      <title>Identify on WMS Layer</title>
      <link>https://community.esri.com/t5/arcgis-api-for-flex-questions/identify-on-wms-layer/m-p/463696#M10672</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;SPAN&gt;Are there any snippets out there for this? Samples, etc.?&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Thanks in advance....&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;rGibson&lt;/SPAN&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Mon, 18 Apr 2011 20:55:57 GMT</pubDate>
      <guid>https://community.esri.com/t5/arcgis-api-for-flex-questions/identify-on-wms-layer/m-p/463696#M10672</guid>
      <dc:creator>Anonymous User</dc:creator>
      <dc:date>2011-04-18T20:55:57Z</dc:date>
    </item>
    <item>
      <title>Re: Identify on WMS Layer</title>
      <link>https://community.esri.com/t5/arcgis-api-for-flex-questions/identify-on-wms-layer/m-p/463697#M10673</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;SPAN&gt;This was posted pretty long ago, is there anyone who has been able to do an identify on a WMS layer from flex since then?&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;I've search the forums och documentation for ArcGIS API for flex as well as ArcGIS Viewer for Flex but haven't found anything.&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;If WMS layers is supposed to be supported, I don't think it's too much to ask to be able to perform an identify on them...&lt;/SPAN&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 07 Dec 2011 06:02:03 GMT</pubDate>
      <guid>https://community.esri.com/t5/arcgis-api-for-flex-questions/identify-on-wms-layer/m-p/463697#M10673</guid>
      <dc:creator>MattiasEkström</dc:creator>
      <dc:date>2011-12-07T06:02:03Z</dc:date>
    </item>
    <item>
      <title>Re: Identify on WMS Layer</title>
      <link>https://community.esri.com/t5/arcgis-api-for-flex-questions/identify-on-wms-layer/m-p/463698#M10674</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;SPAN&gt;it's easy enough to do yourself in the meantime. do you need a sample?&lt;/SPAN&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Sat, 10 Dec 2011 10:13:06 GMT</pubDate>
      <guid>https://community.esri.com/t5/arcgis-api-for-flex-questions/identify-on-wms-layer/m-p/463698#M10674</guid>
      <dc:creator>PaulHastings1</dc:creator>
      <dc:date>2011-12-10T10:13:06Z</dc:date>
    </item>
    <item>
      <title>Re: Identify on WMS Layer</title>
      <link>https://community.esri.com/t5/arcgis-api-for-flex-questions/identify-on-wms-layer/m-p/463699#M10675</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;SPAN&gt;I have been able to write some code that provides an url that will work if I copy and paste it into a new browser. I've tried using this url with a httpRequest without any succes so far. A sample would be great!&lt;/SPAN&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Mon, 12 Dec 2011 05:37:57 GMT</pubDate>
      <guid>https://community.esri.com/t5/arcgis-api-for-flex-questions/identify-on-wms-layer/m-p/463699#M10675</guid>
      <dc:creator>MattiasEkström</dc:creator>
      <dc:date>2011-12-12T05:37:57Z</dc:date>
    </item>
    <item>
      <title>Re: Identify on WMS Layer</title>
      <link>https://community.esri.com/t5/arcgis-api-for-flex-questions/identify-on-wms-layer/m-p/463700#M10676</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;SPAN&gt;in the interests of a quick reply, this is for &lt;/SPAN&gt;&lt;STRONG&gt;WFS&lt;/STRONG&gt;&lt;SPAN&gt; identify all from a project i have on disk that is based on google maps &amp;amp; geoserver. you'll have to change the map mouse event to ESRI's &amp;amp; build your own display as well as the cleanup routine to remove the event handlers.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;when i get a chance i'll dig up a proper WMS getFeatures example.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;PRE class="lia-code-sample line-numbers language-none"&gt;

// this snippet is set in the app init
// where: 
//&amp;nbsp; wfsURL==String var
//&amp;nbsp; campusMapParams.geoserver == your WFS server
//&amp;nbsp; qLayers==Array holding layer names you want to query
//&amp;nbsp; srs==spatial reference that applies to the &lt;STRONG&gt;WFS server&lt;/STRONG&gt; you want to query, for geoserver its EPSG references
wfsURL=campusMapParams.geoserver+"wfs?request=GetFeature&amp;amp;version=1.1.0&amp;amp;typeName="+qLayers.toString()+"&amp;amp;srs="+srs;



protected function doIdentifyAll(event:MapMouseEvent): void {
 var getWFS:HTTPService=new HTTPService;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 
 // we'll use a DWITHIN filter to grab any features that are within 25 meters or so
 // NOTE DWITHIN units MUST match the point coords, ie degrees!!
 var idPoint:String=String(event.latLng.lng())+","+String(event.latLng.lat());&amp;nbsp;&amp;nbsp;&amp;nbsp; 
 // google's coords are all geographic so we'll stick w/EPSG:4326
 getWFS.url=wfsURL+'&amp;amp;FILTER=&amp;lt;Filter xmlns="http://www.opengis.net/ogc" xmlns:gml="http://www.opengis.net/gml"&amp;gt;' + 
&amp;nbsp; '&amp;lt;DWithin&amp;gt;&amp;lt;PropertyName&amp;gt;the_geom&amp;lt;/PropertyName&amp;gt;' + 
&amp;nbsp; '&amp;lt;gml:Point srsName="EPSG:4326"&amp;gt;&amp;lt;gml:coordinates&amp;gt;'
&amp;nbsp; +idPoint
&amp;nbsp; +'&amp;lt;/gml:coordinates&amp;gt;&amp;lt;/gml:Point&amp;gt;&amp;lt;Distance units="deg"&amp;gt;0.000050&amp;lt;/Distance&amp;gt;&amp;lt;/DWithin&amp;gt;&amp;lt;/Filter&amp;gt;';
 getWFS.method="GET";
 getWFS.resultFormat="e4x";
 getWFS.addEventListener("result", identifyAllFeaturesHandler);
 getWFS.addEventListener("fault", httpServiceFault);
 getWFS.useProxy=false;
 try {
&amp;nbsp; getWFS.send();
 }&amp;nbsp;&amp;nbsp; 
 catch (error:Error) {
&amp;nbsp; informUser("Fatal error: Unable to perform identify features on geoserver " + error,"WFS identify all","error");
 }
}

protected function identifyAllFeaturesHandler(event:ResultEvent):void {
 var results:XML=event.result as XML;
 var features:XMLList=results.gml::featureMembers.children();
 var gid:String="";
 var featureAttributes:ArrayCollection=new ArrayCollection();
 for (var i:int = 0; i &amp;lt; features.length(); i++) {
&amp;nbsp; gid=features&lt;I&gt;.@gml::id;
&amp;nbsp; var thisFeature:Object=parseAttributes(features&lt;I&gt;);
&amp;nbsp; for (var x:String in thisFeature) {
&amp;nbsp;&amp;nbsp; featureAttributes.addItem({layer:gid,attribute:x,value:thisFeature&lt;X&gt;});
&amp;nbsp; }
 }
 if (featureAttributes.length==0)
&amp;nbsp; informUser("No features found at that point","Identify");
 else {
&amp;nbsp; if (idResultWindow) // get rid of last one no matter what
&amp;nbsp;&amp;nbsp; PopUpManager.removePopUp(idResultWindow);
&amp;nbsp; // clean slate 
&amp;nbsp; idResultWindow=IdentifyResultWindow(PopUpManager.createPopUp(this,IdentifyResultWindow,false));
&amp;nbsp; idResultWindow.dataSource=featureAttributes;
 }&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 
}

protected function parseAttributes(xmlNode:XML):Object {
 var nodes:XMLList = xmlNode.children();
 var attributes:Object = {};
 for(var i:int = 0; i &amp;lt; nodes.length(); i++) {
&amp;nbsp; var name:String = nodes&lt;I&gt;.localName();
&amp;nbsp; var value:Object = nodes&lt;I&gt;.valueOf();
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if(name == null || name=="the_geom")
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; continue;
&amp;nbsp; // Check for a leaf node
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if((nodes&lt;I&gt;.children().length() == 1)
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;&amp;amp; !(nodes&lt;I&gt;.children().children()[0] is XML))
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; attributes[name] = value.children()[0].toXMLString();&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 
&amp;nbsp;&amp;nbsp;&amp;nbsp; extend(attributes, this.parseAttributes(nodes&lt;I&gt;));&amp;nbsp;&amp;nbsp;&amp;nbsp; 
 }
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return attributes;
}
&lt;/I&gt;&lt;/I&gt;&lt;/I&gt;&lt;/I&gt;&lt;/I&gt;&lt;/X&gt;&lt;/I&gt;&lt;/I&gt;&lt;/PRE&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Sat, 11 Dec 2021 20:35:38 GMT</pubDate>
      <guid>https://community.esri.com/t5/arcgis-api-for-flex-questions/identify-on-wms-layer/m-p/463700#M10676</guid>
      <dc:creator>PaulHastings1</dc:creator>
      <dc:date>2021-12-11T20:35:38Z</dc:date>
    </item>
  </channel>
</rss>

