Learn how to format a pop-up to show attributes in a feature layer.
A feature layer is a dataset in a hosted feature service. Each feature layer contains features with a single geometry type and a set of attributes. You can display attributes when users click on a feature by using a pop-up. Pop-ups can be configured to display raw attribute values, calculated values, or content in different ways including with charts or media.
In this tutorial, you will use a Popup to display feature attributes in different ways in a pop-up for three different hosted feature layers.
Prerequisites
Steps
Create a new pen
- To get started, either complete the Display a map tutorial or .
 
Get an access token
You need an access token with the correct privileges to access the location services used in this tutorial.
- Go to the Create an API key tutorial and create an API key with the following privilege(s):
- Privileges
- Location services > Basemaps
 
 
- Item access
- Note: If you are using your own custom data layer for this tutorial, you need to grant the API key credentials access to the layer item. Learn more in Item access privileges.
 
 
 - Privileges
 - In CodePen, set 
esrito your access token.Config.api Key Use dark colors for code blocks var esriConfig = { apiKey: "YOUR_ACCESS_TOKEN", }; 
To learn about other ways to get an access token, go to Types of authentication.
Add modules
- 
In a new
<scriptat the bottom of the> <body, use> $arcgis.import()to add theFeaturemodule.Layer The ArcGIS Maps SDK for JavaScript is available via CDN and npm, but this tutorial is based on CDN. The
$arcgis.importglobal function accepts a module path or array of module paths, and returns a promise that resolves with the requested modules. This function can only be used when working with the CDN; otherwise, use the standard import syntax. To learn more about the SDK's different modules, visit the References page.Use dark colors for code blocks <body> <arcgis-map basemap="arcgis/topographic" center="-118.805, 34.020" zoom="13"> <arcgis-zoom slot="top-left"></arcgis-zoom> </arcgis-map> <script type="module"> const FeatureLayer = await $arcgis.import("@arcgis/core/layers/FeatureLayer.js"); </script> 
Display attributes
The easiest way to display feature attributes is to reference the field names in the title or content area of a pop-up. Use a Popup class to define the content with attributes for the Trailheads feature layer.
- 
Before you can progress further, you'll need to wait for the
viewmethod to resolve to ensure the Map component is loaded and ready to use.On Ready Use dark colors for code blocks <script type="module"> const FeatureLayer = await $arcgis.import("@arcgis/core/layers/FeatureLayer.js"); const viewElement = document.querySelector("arcgis-map"); await viewElement.viewOnReady(); </script> - 
Create a
popupobject and set theTrailheads contentproperty to a custom HTML string that will display information such as trail name and city jurisdiction.Use dark colors for code blocks <script type="module"> const FeatureLayer = await $arcgis.import("@arcgis/core/layers/FeatureLayer.js"); const viewElement = document.querySelector("arcgis-map"); await viewElement.viewOnReady(); // Define a pop-up for Trailheads const popupTrailheads = { title: "Trailhead", content: "<b>Trail:</b> {TRL_NAME}<br><b>City:</b> {CITY_JUR}<br><b>Cross Street:</b> {X_STREET}<br><b>Parking:</b> {PARKING}<br><b>Elevation:</b> {ELEV_FT} ft", }; </script> - 
Create a
trailheadsFeature. Set theLayer url,out, andFields popupproperties before addingTemplate trailheadsto themap. TheFeaturewill autocast theLayer popupto create a class instance of the object.Template The
outproperty enables access to attribute data on the client-side.Fields Use dark colors for code blocks // Define a pop-up for Trailheads const popupTrailheads = { title: "Trailhead", content: "<b>Trail:</b> {TRL_NAME}<br><b>City:</b> {CITY_JUR}<br><b>Cross Street:</b> {X_STREET}<br><b>Parking:</b> {PARKING}<br><b>Elevation:</b> {ELEV_FT} ft", }; const trailheads = new FeatureLayer({ url: "https://services3.arcgis.com/GVgbJbqm8hXASVYi/arcgis/rest/services/Trailheads_Styled/FeatureServer/0", outFields: ["TRL_NAME", "CITY_JUR", "X_STREET", "PARKING", "ELEV_FT"], popupTemplate: popupTrailheads, }); viewElement.map.add(trailheads); - 
Click on the hiker icons to display the pop-up.
 
Display a chart
You can display different types of charts, also known as media content, in pop-ups. Charts are created by defining the type and fields (attributes) values. Use the Popup class to define a bar chart that shows the minimum and maximum elevation for the Trails feature layer.
- 
Create a
popupobject. In theTrails contentproperty, set thetypetomediathat will display acolumn-chartof minimum and maximum elevations for each trail. Define thefieldarray at the popup template level to format the field names and values to display in the chart.Infos Use dark colors for code blocks viewElement.map.add(trailheads); // Define a popup for Trails const popupTrails = { title: "Trail Information", content: [ { type: "media", mediaInfos: [ { type: "column-chart", title: "Trail Elevation", value: { fields: ["ELEV_MIN", "ELEV_MAX"], normalizeField: null, tooltipField: "Min and max elevation values", }, }, ], }, ], fieldInfos: [ { fieldName: "ELEV_MIN", label: "Elevation Minimum", format: { digitSeparator: true, }, }, { fieldName: "ELEV_MAX", label: "Elevation Maximum", format: { digitSeparator: true, }, }, ], }; - 
Create a
trailsFeature. Set theLayer url,out, andFields popupproperties before addingTemplate trailsto themap. TheFeaturewill autocast theLayer popupto create a class instance of the object.Template Use dark colors for code blocks // Define a popup for Trails const popupTrails = { title: "Trail Information", content: [ { type: "media", mediaInfos: [ { type: "column-chart", title: "Trail Elevation", value: { fields: ["ELEV_MIN", "ELEV_MAX"], normalizeField: null, tooltipField: "Min and max elevation values", }, }, ], }, ], fieldInfos: [ { fieldName: "ELEV_MIN", label: "Elevation Minimum", format: { digitSeparator: true, }, }, { fieldName: "ELEV_MAX", label: "Elevation Maximum", format: { digitSeparator: true, }, }, ], }; const trails = new FeatureLayer({ url: "https://services3.arcgis.com/GVgbJbqm8hXASVYi/arcgis/rest/services/Trails_Styled/FeatureServer/0", outFields: ["TRL_NAME", "ELEV_GAIN"], popupTemplate: popupTrails, }); viewElement.map.add(trails, 0); - 
Click on the trails to view a pop-up that contains a bar chart with elevation data.
 
Display a table
Feature attributes can also be displayed in a table. Use the Popup and field classes to display attribute names and values in a table for the Parks and Open Spaces feature layer. One of the advantages of using a table with field is the ability to format field values in different ways, for example, to show currency or the number of decimal places.
- 
Create a
popupobject. In theOpenspaces contentproperty, settypetofieldsand define thefieldarray.Infos Use dark colors for code blocks viewElement.map.add(trails, 0); // Define popup for Parks and Open Spaces const popupOpenspaces = { title: "{PARK_NAME}", content: [ { type: "fields", fieldInfos: [ { fieldName: "AGNCY_NAME", label: "Agency", }, { fieldName: "TYPE", label: "Type", }, { fieldName: "ACCESS_TYP", label: "Access", }, { fieldName: "GIS_ACRES", label: "Acres", fieldFormat: { type: "number", usegrouping: "always", minimumFractionDigits: 2, maximumFractionDigits: 2, }, }, ], }, ], }; - 
Create an
openspacesFeature. Set theLayer url,out, andFields popupproperties before addingTemplate openspacesto themap. TheFeaturewill autocast theLayer popupto create a class instance of the object.Template Use dark colors for code blocks }, ], }, ], }; const openspaces = new FeatureLayer({ url: "https://services3.arcgis.com/GVgbJbqm8hXASVYi/arcgis/rest/services/Parks_and_Open_Space_Styled/FeatureServer/0", outFields: [ "TYPE", "PARK_NAME", "AGNCY_NAME", "ACCESS_TYP", "GIS_ACRES", "TRLS_MI", "TOTAL_GOOD", "TOTAL_FAIR", "TOTAL_POOR", ], popupTemplate: popupOpenspaces, }); viewElement.map.add(openspaces, 0); 
Run the App
In CodePen, run your code to display the map.
Click on different park areas to display a pop-up of a table view with the fields and values you specified. You should be able to click all of the features in the map and view a pop-up. Each pop-up will display feature attributes in a unique way.
What's next?
Learn how to use additional SDK features and ArcGIS services in these tutorials: