Identify Widget Version 2.21 - 11/16/2021

253588
524
02-23-2015 05:20 PM
Labels (1)

Identify Widget Version 2.21 - 11/16/2021

Live Preview Site

Web AppBuilder for ArcGIS | Help - Identify Widget

 

List of the latest enhancements and changes:

  1. Added 10 max rows max display to widgets dropdowns.
  2. Fixed a mixed protocol issue in code

Previous enhancements and changes:

  Check the "Older enhancements or changes.txt" in the download for a complete list.

 

Older Versions

Last 2.4 version

Last 2.5 version

Last 2.7 version 

Last 2.8 version 

Last 2.9 version 

Last 2.10 version

Last 2.11 version

Last 2.12 version

Last 2.13 version

Last 2.14 version

Last 2.15 version

Last 2.17 version

 

ATTENTION:

  1. If you are hosting this widget on a https server, then make sure you change all your excludelayer urls to https. Failure to do so will result in widget failure.

 

Features:

  • Specify which layers are to be identified
  • Format the fields for identify layers
  • Configure links and link icon
  • Close result popups after a number of seconds of losing focus
  • Choose which layer to identify in the widget UI using drop down list
  • Specify layers to be excluded from identify operation
  • Choose to only identify configured layers
  • Replace null values with empty strings
  • Configure default symbology for identify results
  • Specify Visible, Top, or All layers to be identified.
  • Option to Keep Identify Active
  • All Identify geometry types are configurable
  • Option to use map time
Labels (1)
Attachments
Comments

Ryan,

   Can you provide any additional info? Are the attributes missing altogether from the widgets results or are they blank? Is your service public so I can test? Is there any errors presented in your browsers web console?

Robert,

Here is the map service.

http://jeffarcgis.jeffersoncountywi.gov/arcgis/rest/services/Public/Surveying/MapServer/0

Results using Identify Widget. (Highlighted in Yellow=Missing Values)

Same task using eSearch

Let me know if this helps, I appreciate your insight.

Best Regards,

Ryan

Ryan,

   Your server has some crazy stuff going on in the identify response. I see that you are running 10.11 (an old server version) but this does not explain why some fields are coming back aliased and some are not...

Here is how your rest service is returning fields, notice the field name MUN has an alias of "Municipality Code"

  • OBJECTID ( type: esriFieldTypeOID , alias: OBJECTID )
  • SN ( type: esriFieldTypeString , alias: Survey Map Number , length: 8 )
  • MUN ( type: esriFieldTypeSmallInteger , alias: Municipality Code )
  • Shape ( type: esriFieldTypeGeometry , alias: Shape )
  • InstrumentNo ( type: esriFieldTypeString , alias: Instrument Number , length: 30 )
  • FDINTURL ( type: esriFieldTypeString , alias: FileDirector Internal URL , length: 200 )

Now a normal server response when identify task is used would be:

"layerId": 0,

  "layerName": "Land Surveys",

  "displayFieldName": "SN",

  "value": "C09-133",

  "attributes": {

  "OBJECTID": "3668",

  "Survey Map Number": "C09-133",

  "Municipality Code": "10",

  "Shape": "Point",

  "Instrument Number": "878410",

  "FileDirector Internal URL": "Null"

  },

But your is returning:

"layerId": 0,

  "layerName": "Land Surveys",

  "displayFieldName": "SN",

  "value": "C09-133",

  "attributes": {

  "OBJECTID": "3668",

  "SN": "C09-133",

  "MUN": "10",

  "Shape": "Point",

  "Instrument Number": "878410",

  "FileDirector Internal URL": "Null"

  },

So some fields are aliased and some are not and thus my widget can not match the returned results of the fields that are not returned with their alias name as would be the norm.

My only suggestion is to upgrade your server as 10.11 is no longer going to entitle you to support, so you can not call tech support to diagnose why your server is mixing the response.

All,

   If you downloaded the 1.2.0.4 version before 1pm CST then you need to re-download it and replace that download.

Robert,

Great catch. It was an data issue and I have resolved.

Sent from my U.S. Cellular® Smartphone

Updated the widget with the latest update.

Excellent update Robert, attribute formatting is great.

Amit

Robert,

I downloaded the widget before 1pm CST and it seems to be working fine. What was the issue?

Finbar

Finbar,

   There was a serious issue with processing results of the identify in certain situations. Best to update.

Hi Robert,

Thanks so much for releasing version 1.2.0.4 of your Identify Widget last Tuesday.

You added a new functionality that will be of tremendous value to me. I can now customize the colors and fonts of the Attribute Labels and Attribute Values

p01.jpg

You are the master of designing elegant graphical user interfaces!

I like the Preview that shows how my formatting will look like.

This makes it so easy to come up with pleasing color schemes to differentiate between the attribute label and its value.

p02.jpg

One can easily edit the config.json of the Identify Widget as well to specify the formatting:

p03.jpg

With so many new enhancements that you have included in your Enhanced Search and Identify Widget, I thought it was time to make a Web AppBuilder version of our Arizona Broadband Map.

I developed the Arizona Broadband Map using the ESRI Flexviewer template and adding all your Custom Widgets for the Flex API.

http://www.tapasdas.com/Maps/Desktops/web46

p04.jpg

What made this web application so popular for our end users was the sheer simplicity of the User Interface.

All it took was one mouse click to find all the Broadband Providers at any location in Arizona.

Here I am clicking on Flagstaff, and within 2 seconds I get a listing of all the Broadband Providers through your Identify Widget.

p05.jpg

We were thrilled with the speed at which it fetched all the records. The user can type in their home address in the Enhanced Locate Widget, zoom to that area, and get back a listing of all the Broadband Providers, Service Types, and Upload/Downloads speeds available at that location.

There was a trick inside your Identify Widget that allowed it to return the results almost instantaneously.

The Return Geometry for Zoom could be set to False in the config.xml file for the Identify Widget like so:

p06.jpg

This means no time was wasted in trying to draw the Geometry of the identified features.

Only the attributes were returned.

In fact, if you look a the Broadband Providers Map Service, you will see that I am intentionally not including the SHAPE field.

http://159.87.10.253/arcgis/rest/services/BroadbandProviders/MapServer/0

p07.jpg

There was no reason to include the SHAPE field, as there was no need to display the Broadband Footprints of the Providers. All I wanted to Query was the listing of the attributes.

I had configured a separate Enhanced Search Widget to display the Broadband Footprints.

p08.jpg

Here I am displaying the Broadband Footprints for Broadband Provider = ACCIPITER

p09.jpg

The results can take a while to draw if you select Verizon Communications.

p10.jpg

The Broadband Footprints of Verizon comprises of a complex set of polygons as shown below:

p11.jpg

This data is coming from the Broadband Footprints Map Service.

http://159.87.10.253/ArcGIS/rest/services/BBFootprints/MapServer/0

I have included the SHAPE field in this map service, because I need to return the geometry in order to display the Broadband Footprints.

p12.jpg

In fact, there is no difference between the BroadbandProviders map service and the BBFootprints map service, except that one has the SHAPE field, and the other does not.

The BroadbandProviders map service is being used to Identify Broadband Providers at any location without returning the Geometry.

The BBFootprints map service is being used to draw the Broadband Footprints, one Provider at a time. As expected, this takes considerably longer to draw the complex polygons.

The BBFootprints File Geodatabase comprises of 187 overlapping polygons across Arizona.

With this background information on how the Flex version of the Broadband Map works, let me try to explain what I did to mimic this functionality using the Web AppBuilder version of your Identify Widget.

The key to making the Identify work so fast in the Flex version was the setting on the Return Geometry for Zoom that could be set to false.

This setting is not available on the GUI on your Identify Widget, but you do have this setting available on the config_Identify.json file.

So, I began with a simple test case using:

"returngeometryforzoom": false,

p13.jpg

I created a simple Web App using these 4 map services:

Schools:

http://gis.maricopa.gov/arcgis/rest/services/WAB/Schools/MapServer/0

ZIP Codes:

http://gis.maricopa.gov/arcgis/rest/services/WAB/Zipcodes/MapServer/0

Places:

http://gis.maricopa.gov/arcgis/rest/services/WAB/Places/MapServer/0

Counties:

http://gis.maricopa.gov/arcgis/rest/services/WAB/County/MapServer/0

This is the test Web App using Identify 1.2.0.4

http://www.tapasdas.com/Maps/Phones/app120

p14.jpg

If I click on any point on the map, it returns the attributes of the layers that are intersected without drawing the geometry.

p15.jpg

It works blindingly fast, as it does not have to fetch and draw the polygon boundaries for the County, Place, and ZIP Code.

This is exactly what I was hoping for!

This is exactly how Flex version behaves with the Return geometry for zoom set to false.

This is the perfect solution if you have a large number of complex data layers, and all you need is to show are the attributes as you drill down.

With this test case being a success, I decided to create another test case including the BroadbandProviders map service.

Here is how the Web Map looks like in ArcGIS Online:

I have added the Broadband Providers layer:

http://159.87.10.253/ArcGIS/rest/services/BroadbandProviders/MapServer

The Pop-up lists all the Broadband Providers as expected.

p16.jpg

The Attribute Table displays correctly.

It shows the 187 overlapping polygons.

Note: The BroadbandProviders map service does not include the SHAPE field.

p17.jpg

So far, so good.

Next, I created a Web App from this Web Map using Identify 1.2.0.4

http://www.tapasdas.com/Maps/Phones/app121

First, I went and checked to see if the ESRI Popup is working properly.

The ESRI Pop-up works perfectly.

p18.jpg

Then I tried to use the Identify Widget.

p19.jpg

I found the Identify Results do not show the Broadband Providers.

p20.jpg

It seems it tried to read the data from the Broadband Providers layer and timed out.

Here is how I have the Broadband Providers layer configured within your GUI

p21.jpg

Identify URL =

http://159.87.10.253/ArcGIS/rest/services/BroadbandProviders/MapServer/0

p22.jpg

Here is the ZIP file of the web application:

http://www.tapasdas.com/Maps/Phones/app121.zip

Since this did not work, I thought maybe I should try using the BBFootprints map service that has the SHAPE file included.

I created another Web Map adding the Broadband Footprints data layer.

http://159.87.10.253/ArcGIS/rest/services/BBFootprints/MapServer

This map service has the SHAPE field.

So as expected, the ESRI Pop-ups do work, but takes very long as it is drawing the geometry.

p23.jpg

Finally, I created another Web App based on this Web Map:

http://www.tapasdas.com/Maps/Phones/app122

The ESRI Pop-ups do work within this Web App, although it takes a very long time to pull the geometry.

p24.jpg

The Attribute Table works as expected.

Since the BBFootprints Map Service has the SHAPE field, I can select any Provider and display the Footprints like so:

p25.jpg

So far, so good.

Next, I tried to use the Identify Widget.

I found the same problem. It did not list the Broadband Providers.

p26.jpg

It seems it was trying to access the data, and then timed out.

Here is how I have this layer configured:

p27.jpg

The Identify URL =

http://159.87.10.253/ArcGIS/rest/services/BBFootprints/MapServer/0

p28.jpg

Here is the ZIP file of the web application:

http://www.tapasdas.com/Maps/Phones/app122.zip

Robert,

I'm not seeing any results when using the live site.

Is there a way to have this tool just identify all visible layers without having to pre-load them into the widget's identify layers section?

Daniel,

   Strange, I just tested the live preview site and it is working fine... Yes you can configure the Identify widget to identify any layer on the map configured or not. All you have to do is not check "only these" option in the widget configuration.

Here is a snapshot of some code errors that I'm getting when looking at the web console:

It also might be something to do with one of the layers I have loaded in my webmap I'm using.

Here is the layer:

http://geo.maps.arcgis.com/home/item.html?id=3f81b22eb8b44929a3b93b009fb318db

Edit: It appears that it is related to any wms layers loaded into the webmap - all will show with the error on the console above.

Is there a way that this can be corrected in the widget code to ignore these?

Anonymous User

awesome post, thanks Tapas

Daniel,

   I will look at this for the next release.

I also noticed the same is true for any KMLs loaded into the webmap.

Thanks.

Hi Robert,

Perhaps you can help me with this issue.  I have been attempting to get links to Windows folder locations in the form of

\\myserver\dir1\dir2\

to work via LocalLayer widget + either pop-ups and/or ID widget.  I have a vector polygon layer with link fields in the attributes, and I cannot get links to folder locations to work reliably via either pop-ups or ID widget.  Do you know if such functionality is possible from a WAB viewer?

The links will work properly from IE11, which can readily interpret Windows folder addresses, but not from Chrome or Firefox.

Best regards,

Barnaby

Barnaby,

Just like in flex, unc paths are not a good ideas in web mapping. IE has always done well UNCs, but you should always use virtual directories instead to have true urls.

Hi Robert,

Barbary?  Ha! 

Do you mean with symbolic links or somesuch?  I was thinking of that last week.

Cheers,

Barnaby

Barnaby,

   That's what I get for trying to reply from my phone.

Do you mean with symbolic links or somesuch

Not sure what you mean there.

Using UNC paths has never been a recommended approach in web apps. As I mentioned IE has always been the one browser that does well with them (makes since MS would deal well with something that is established by their OS), but other browsers not so much. The proper way to handle UNC paths has always been to establish a virtual directory using the UNC path.

Robert,

Thanks for the info.  How are you thinking of establishing a virtual directory?  I was wondering about making a symlink in wwwroot of my server which would direct users to a shared directory on another server.  So far, that hasn't worked, but I've only tried making soft and hard (dir junction) symlinks for a few minutes.

Cheers,

Barnaby

Barnaby,

    If take the UNC path to the other servers directory "i.e. //serverA/links" and when in IIS Manager you right click on Default Web Site and choose Add Virtual Directory. In the Alias you enter the alias name that will appear in the url (i.e. http://yourwebserver/symlink/linkedresource.pdf) in the example case "symlink". Next you enter the Physical Path (this will be the UNC path) "i.e. //serverA/links". Now you have a virtual directory setup on your web server that points to the UNC path on another server.

Robert,

Ah ha!!!!!!!!!!!!!!!!!!! 

Sounds like the perfect thing.  I'll try it out.

Many thanks,

Barnaby

Edit, by "symlink" I was referring to symbolic links such as those created with mklink.

Daniel Stoelb

   I am working on my 1.3 release and I thought I would look at the issue you were having with WMS layers. I added the layer you provided the link for to a webmap and used the identify widget and did not see any issue... Any ideas on what you are seeing and I am not?

!!Update never mind I had the widget set to "only these" as I usually do. Now I see the error.

Hi Robert,

Thanks so much for releasing your Identify Widget 1.3 for Web AppBuilder 1.3

I made 7 test cases to see how they work under the 7 different Themes in WAB 1.3

I was curious to find how it interacts with your Enhanced Search Widget 1.3

Foldable Theme

http://www.tapasdas.com/Maps/Phones/app137

image137.jpg

I noticed a quirk.

When you deactivate the Select by Point tool, you get a different marker symbol.

This happens under all themes. This may be the new default point symbol under WAB 1.3

p01.jpg

Identify works very fast under WAB 1.3

The ability to custom format your Attribute Labels and Values makes it very easy to read the list.

p02.jpg

Normally, an Identify Popup would partially hide the graphics.

p03.jpg

However, opening the Popup Panel widget allows me to get an unobstructed view of the graphics.

This is also the perfect solution for viewing a long list of attributes.

p04.jpg

I wish you would add the attribute formatting option to this widget so that ESRI Popups will appear in my own custom format.

Otherwise, ESRI Popups would appear in gray like this:

p05.jpg

Launchpad Theme

http://www.tapasdas.com/Maps/Phones/app138

Works perfectly.

image138.jpg

Dart Theme

http://www.tapasdas.com/Maps/Phones/app139

image139.jpg

The Dart Theme allows the user to have multiple widgets open and simultaneously interact with the graphical selection tools.

You have made Identify 1.3 and eSearch 1.3 completely independent of each other as you promised!

This was a big fix for me.

I can now open the Identify Widget and make a selection.

p06.jpg

While the Identify Widget is open, I can open the eSearch Widget and make a different selection, and this does not affect my Identify Selection.

p07.jpg

I can proceed to add to my current selection within the eSearch widget.

p08.jpg

My Identify selection remains unaffected.

p09.jpg

I can make a new selection using the Identify widget.

This does not affect my eSearch selection.

p10.jpg

This is exactly what I was hoping for.

The end user can freely use the selection tools from the Identify and eSearch Widgets while both are open.

This must have taken some clever coding on your part to pull this off with so many graphic layers.

The Identify and eSearch are the two most important tools in the Web AppBuilder.

I am delighted to see that they are working in harmony.

There were no issues in the other themes.

Tab Theme

http://www.tapasdas.com/Maps/Phones/app140

image140.jpg

Box Theme

http://www.tapasdas.com/Maps/Phones/app141

image141.jpg

Jewelry Box Theme

http://www.tapasdas.com/Maps/Phones/app142

image142.jpg

Billboard Theme

http://www.tapasdas.com/Maps/Phones/app143

image143.jpg

Thanks for releasing the WAB 1.3 versions of all your Custom Widgets so promptly.

Your support is outstanding to our Web AppBuilder Community.

Tapas,

  Not sure if you have noticed but the WAB dev team has changes the point icon to this new icon like the directions  EsriBluePinCircle26.png

This means I have to update my css code to handle the new selection image. I will address this in the next release of my widgets.

Robert,

Thanks for making me aware of the new changes in WAB1.3.

The new point icon looks better and easily stands out.

Tapas,

   Here is the new image that should be placed in the [install dir]\server\apps\[app#]\widgets\Identify\css\images folder (you can not tell it because of the white background of GeoNet threads but the image is there).

draw_point.png

Robert,

Thanks for the quick fix!

Robert,

Your fix on replacing the new image = draw_point.png also works on your Enhanced Search Widget widget in the folder:

[install dir]\server\apps\[app#]\widgets\eSearch\css\images

I like this new Point Marker symbol better

Robert Scheitlin, GISP

I am having trouble getting the Identify widget to work when I add a link or links to the item's results window.  I don't recall having this problem in your 1.1 or 1.2 versions, and I don't think I'm doing anything differently in the general configuration, but perhaps I'm skipping an important step that you notice right away.

Example: one of the layers I want to identify is parcels.  I want the assessor's report and school information links to appear in the results window.  If I add them and try to identify a parcel I get the "No Results Found" message.  If I remove the links from the config the results appear as they should (minus any links, of course).  I've experienced this same problem with other layers whose results display should include a link.

My setup:

All of the link fields are esriFieldTypeString.  Should they be something else?  As far as I know that's what we've had all along.  Those same fields work fine in the eSearch results display.

Adam,

   Thanks for bringing this to my attention. It is now fixed in 1.3.0.1

Great, thank you for updating that.  One more thing to make note of for the 1.3.0.2 release is your help doc (Learn more about this widget) shows version 1.2.0.4.  I know similar configuration steps apply but I figured you'd like to update that to 1.3.0.2 at its release.

Robert Scheitlin, GISP

I'm encountering another problem that I believe I experienced with the Identify widget in WAB 1.2.  I have many instances of a) the Identify widget not identifying a feature, and b) not responding with the "No Results Found" message.  The blue status/progress bar simply runs without stopping.  I have tried to identify other features or identify from a different layer, but neither method will clear the previous request.  In order for me to clear the request I have to refresh my browser.

I test each Identify layer after I add it to my configuration.  While I haven't been 100% successful in getting each layer to work upon configuration (problems = those listed above) I have had success in setting up probably 18 of the 20 layers in my widget.  When I launch the application (from WAB, not hosted) I then have the problems I mentioned above.  And more often than not, it's the line and point layers that have the problems, regardless of what kind of graphic I use to identify the feature.  The problem has occurred with polygon features as well.

I have adjusted the identify tolerance and that seemed to help with some layers, but I still experience inconsistent results (or no results) across all layers.

I don't know if there is something problematic with my services or not as they'll work, just not all of the time.  Do you know of anything for me to check with my services or configuration to enable the widget to work on the desired layers?

Adam,

   Providing the error info from the browsers web console would be more helpful.

Robert:

Below is the console error I saw when checking at least three different layers (point, line and poly).  Is this what you need?  Can you read it clearly?  The error also refers to init.js:182:169 and widget.js:704:11.

Identify_error_2.pngFYI, the Identify widget did work when checking a few other layers, but still gets hung up on others.

Adam,

   Sorry that is not good. The error is occurring on your server for those services as you can see at the very top of the error "Error performing identify" that is at the server and the Widget.js line 704 you mention is just the widget responding to the Identify Task error. You can check your ArcGIS server logs to see if you get any clue.

Checking the Logs in Server Manager I see the following errors:

Error performing identify Wait time of the request to the service 'service name here' has expired.

Instance of service 'service name here' failed to process a request.

Error performing identify Error handling service request: java.lang.OutOfMemoryError: Java heap space

Processing request took longer than the usage timeout for service 'service name here'.  Server request timed out.  Check that the usage timeout is appropriately configure for such requests.

The above error messages refer to the same service.  If it means anything this specific service is my default basemap.  There are two layers in this basemap that I want configured in the Identify widget.  Sometimes the identify action works on them, sometimes it doesn't.  I don't see any error messages for the unsuccessful attempts to identify within a different service though.  Additionally, I'm now experiencing instances where the widget works in a specific layer, but then when I pan/move and attempt to identify another feature within that same layer the blue status bar runs until I refresh the browser.

I am wondering if the basemap service mentioned above is somehow holding up the progress of the Identify widget, but I can't say that for sure or know how to resolve the issue.

Adam,

   The fact that you server is experiencing java.lang.OutOfMemoryErrors is likely a big issue and the server is becoming unstable. This is more of tech support call, but here are a few recommendations.

  1. Restart the server.
  2. If you are not using "Only These" option in the identify widget then make sure you are excluding map services that are use as basemaps.

Robert:

Thanks for the suggestions.   I restarted ArcGIS Server and it didn't have any (noticeable) positive impact on the error as some attempts still don't return any results and essentially lock up the widget.

I have had "Only These" checked throughout the entire configuration.  One thing I have noticed with the layers from my default basemap is they tend to work with the widget when I'm zoomed into the community level or better.  If I try them at the county or township extent it locks up, even with the one layer that's visible at all extents.

It looks like this will require a tech support call next week. Thanks for your help.

Hi - is there a way to show related records in the results area?  What I'm trying to do is when a user selects a polygon feature, the related point feature becomes highlighted.  Basically I'd be tweaking your widget to do this, but thought a good starting point would be if those related feature's attributes were shown.

Megan,


  Currently no there is no support for related features in the identity widgets results.

Is it possible the widget to list the operational layers by default to search? It would save a lot of time if you have to create multiple maps with different layers.

Thanks.

Lefteris,

      It's something I will consider adding to the enhancement list.

Thanks. Meanwhile, I went ahead to modify the code as a temporary measure until you apply this enhancement. I needed to change the widget, so this version adds only the operational layers ignoring the config.json of the widget. All the fields from each operational layer are included. It seems to be working as intended for all the feature layers that are on the map, however, the popup window of the results is very small. Do you have any suggestion of how to address this issue? Thanks.

http://ekoumis.net/widget.zip

Hi Robert,

I just downloaded Identify Widget 1.3. The widget doesn't open the tools. It keeps looping. Any suggestions?

HeenaIdentifyTool Error.PNG

Heena,

  Check your browsers web console to see what the error is there. Likely you did not install correctly or with correct widget folder name (should be "Identify" with capital I).

This widget is great!!  Exactly what we are looking for in a bunch of our apps.  Got a couple of questions:

1)  Is there a way to disable the highlight of features that are selected when you place an identify point?  Not really looking for the features to be highlighted, just want to display the attributes.

2)  Is there a way to show other fields for a raster that has been categorized with field names?  I can get this to work, but only when it shows all the attributes and not the selected ones.

Thanks for this widget!  It has saved us a bunch of programming time in a crunched time frame for a project!


Chris

Chris,

   1. Sure just set the widgets configuration to Return Geometry for Zoom unchecked

   2. A rasters rest endpoint does not list any fields if you look at the REST service endpoint. but if you know the field name (which you do because you see the fields listed when you use only these as false) then you can manually add them to the config_Identify widget.json file.

Thanks for the info!!!  That makes sense, don't know why I didn't try that.  That is where I will make my edits in the config_identify.  Thanks for the help!

Version history
Last update:
‎11-16-2021 06:51 AM
Updated by: