I'm using the Feature Info widget to display popup info for a couple tables, and it's giving me the error "The information for this feature could not be displayed".
The error:
The widget configuration:
The functioning popup in Map Viewer:
Similarly configured widget working in a different view (comes from the same hosted table in a different web map):
Here are the expressions used:
{expression/expr0}:
var awards = FeatureSetByName($map, "Livable Communities Grant Awards")
var districts = FeatureSetByName($map, "Met Council Districts")
// Filter for the district polygon corresponding to the district in this table
// should be a featureset with one feature
var thisDistrictFS = Filter(districts, "MCDIST = " + $feature.mcdist)
// Get the feature from the featureset
var thisDistrict = First(thisDistrictFS)
// Find award points within the district feature
var districtAwards = Intersects(awards, thisDistrict)
// Create list of the award categories
var awardTypes = []
var awardList = ""
for (var f in districtAwards) {
Push(awardTypes, f.CATEGORY)
}
// Clean up the list
awardTypes = Distinct(awardTypes)
awardTypes = Sort(awardTypes)
for (var f in awardTypes) {
awardList += awardTypes[f] + TextFormatting.NewLine
}
awardList = Replace(awardList, "TBRA", "Tax Base Revitalization Account (TBRA)")
awardList = Replace(awardList, "LCDA", "Livable Communities Demonstration Account (LCDA)")
awardList = Replace(awardList, "LHIA", "Local Housing Incentives Account (LHIA)")
awardList = Replace(awardList, "TOD", "Transit-Oriented Development (TOD)")
awardList = Trim(awardList)
return awardList{expression/expr1}:
// Convert big numbers to $1.7B, etc var amount = $feature.lcaawardtotal var millions = "$" + Round(amount / 1000000, 1) + "M" var billions = "$" + Round(amount / 1000000000, 1) + "B" var thousands = "$" + Text(amount, "#,###") When( amount >= 1000000 && amount < 1000000000, millions, amount >= 1000000000, billions, thousands)
Incorporated into the text block of the popup:
{lcagrantsawarded} grants awarded through the following programs:
{expression/expr0}
{expression/expr1} in grants awarded since 1996
This might not be the answer, but are the non-working pop-ups created with Arcade content blocks (this is different from Arcade attribute expressions)? You mention expressions in your post, but I figured I'd ask since I've had problems displaying Arcade content blocks before with other widgets, though the result was a blank pop-up, not an error.
If you're using Arcade content blocks, try removing them and adding something "simpler" like a field list, and see if your feature info widget works then.
It's not using Arcade content blocks - just attribute expressions incorporated into a text block.
[Edit: had posted the Arcade expressions as a comment; added them to the main post instead]
FeatureSetByName Creates a FeatureSet from a Feature Layer based on its name within a map or feature service. Keep in mind this name is not necessarily unique. It is therefore more appropriate to create a FeatureSet using FeatureSetById().
FeatureSetByName($map, "Livable Communities Grant Awards")
Livable Communities Grant Awards and Met Council Districts should be the title of the layer within the given map in every map (not the hosted feature layer name), so check all your maps to ensure the names match. Even a trailing space can make a difference.
Intersects() with null geometries
I would also check if there are any null geometries in Met Council Districts.
var districtAwards = Intersects(awards, thisDistrict)
Thanks for the response @EMani .
There are no null geometries in Met Council Districts - just sixteen valid polygon features.
The names match exactly, even spaces, and are unique within the map. (Met Council Districts is within a group layer - wonder if that requires something special for the name?)
I'm looking into using FeatureSetByID instead of FeatureSetByName, but can't find any clear explanation on how to find the layer's ID!