Web AppBuilder for ArcGIS | Help - Identify Widget
List of the latest enhancements and changes:
Previous enhancements and changes:
Check the "Older enhancements or changes.txt" in the download for a complete list.
Older Versions
ATTENTION:
Features:
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"
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
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.
One can easily edit the config.json of the Identify Widget as well to specify the formatting:
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
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.
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:
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
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.
Here I am displaying the Broadband Footprints for Broadband Provider = ACCIPITER
The results can take a while to draw if you select Verizon Communications.
The Broadband Footprints of Verizon comprises of a complex set of polygons as shown below:
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.
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,
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
If I click on any point on the map, it returns the attributes of the layers that are intersected without drawing the geometry.
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.
The Attribute Table displays correctly.
It shows the 187 overlapping polygons.
Note: The BroadbandProviders map service does not include the SHAPE field.
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.
Then I tried to use the Identify Widget.
I found the Identify Results do not show the Broadband Providers.
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
Identify URL =
http://159.87.10.253/ArcGIS/rest/services/BroadbandProviders/MapServer/0
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.
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.
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:
So far, so good.
Next, I tried to use the Identify Widget.
I found the same problem. It did not list the Broadband Providers.
It seems it was trying to access the data, and then timed out.
Here is how I have this layer configured:
The Identify URL =
http://159.87.10.253/ArcGIS/rest/services/BBFootprints/MapServer/0
Here is the ZIP file of the web application:
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?
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.
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
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
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.
Normally, an Identify Popup would partially hide the graphics.
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.
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:
Launchpad Theme
http://www.tapasdas.com/Maps/Phones/app138
Works perfectly.
Dart Theme
http://www.tapasdas.com/Maps/Phones/app139
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.
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.
I can proceed to add to my current selection within the eSearch widget.
My Identify selection remains unaffected.
I can make a new selection using the Identify widget.
This does not affect my eSearch selection.
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
Box Theme
http://www.tapasdas.com/Maps/Phones/app141
Jewelry Box Theme
http://www.tapasdas.com/Maps/Phones/app142
Billboard Theme
http://www.tapasdas.com/Maps/Phones/app143
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
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).
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
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.
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.
FYI, 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.
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.
Hi Robert,
I just downloaded Identify Widget 1.3. The widget doesn't open the tools. It keeps looping. Any suggestions?
Heena
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!