The Popup widget allows users to view content from feature attributes. Popups enhance web applications by providing users with a simple way to interact with and view attributes in a layer. They play an important role in relaying information to the user, which improves the storytelling capabilities of the application.
All Views contain a default popup. This popup can display generic content, which is set in its title and content properties. When content is set directly on the Popup instance it is not tied to a specific feature or layer.
In the image above, the text "Marriage in NY, Zip Code: 11385" is the popup's title
. The remaining text is
its content
. A dock button may also be available in the
top right corner of the popup. This allows the user to dock the popup to one of the sides or corners of the view.
The options for docking may be set in the dockOptions property.
Popups can also contain actions that act like buttons,
which execute a function defined by the developer when clicked.
By default, every popup has a "Zoom in" action
that allows users to zoom to the selected feature. See the actions
property for information about adding custom actions to a popup.
In most cases this module will not need to be loaded into your application because the view contains a default instance of popup.
PopupTemplate is closely related to Popup, but is more specific to layers and graphics. It allows you to define custom title and content templates based on the source of the selected feature. When a layer or a graphic has a defined PopupTemplate, the popup will display the content defined in the PopupTemplate when the feature is clicked. The content may contain field values from the attributes of the selected feature.
Custom PopupTemplates may also be assigned directly to a popup by setting graphics on the features property. For more information about Popup and how it relates to PopupTemplate see the samples listed below.
- See also
Constructors
-
new Popup(properties)
-
Parameterproperties Objectoptional
See the properties for a list of all the properties that may be passed into the constructor.
Property Overview
Name | Type | Summary | Class |
---|---|---|---|
Collection<(ActionButton|ActionToggle)> | Defines actions that may be executed by clicking the icon or image symbolizing them in the popup. more details | Popup | |
String|Function | Position of the popup in relation to the selected feature. more details | Popup | |
Boolean | This closes the popup when the View camera or Viewpoint changes. more details | Popup | |
Boolean | This property indicates to the | Popup | |
Boolean | Indicates whether the popup displays its content. more details | Popup | |
Boolean | Indicates whether to enable collapse functionality for the popup. more details | Popup | |
String|HTMLElement | The ID or node representing the DOM element containing the widget. more details | Widget | |
String|HTMLElement|Widget | The content of the popup. more details | Popup | |
String | Dock position in the View. more details | Popup | |
String | The name of the class. more details | Accessor | |
Boolean | Enables automatic creation of a popup template for layers that have popups enabled but no popupTemplate defined. more details | Popup | |
Boolean | Indicates whether the placement of the popup is docked to the side of the view. more details | Popup | |
Object | Docking the popup allows for a better user experience, particularly when opening popups in apps on mobile devices. more details | Popup | |
Number | The number of selected features available to the popup. more details | Popup | |
Graphic[] | An array of features associated with the popup. more details | Popup | |
GoToOverride | This function provides the ability to override either the MapView goTo() or SceneView goTo() methods. more details | Popup | |
Number | Indicates the heading level to use for the title of the popup. more details | Popup | |
Boolean | Highlight the selected popup feature using the highlightOptions set on the MapView or the highlightOptions set on the SceneView. more details | Popup | |
String | The unique ID assigned to the widget when the widget is created. more details | Widget | |
String | The widget's default label. more details | Popup | |
Point | Point used to position the popup. more details | Popup | |
Number|null | Defines the maximum icons displayed at one time in the action area. more details | Popup | |
Promise[] | An array of pending Promises that have not yet been fulfilled. more details | Popup | |
Graphic | The selected feature accessed by the popup. more details | Popup | |
Number | Index of the feature that is selected. more details | Popup | |
Feature | Returns a reference to the current Feature that the Popup is using. more details | Popup | |
Boolean | Indicates whether to display a spinner at the popup location prior to its display when it has pending promises. more details | Popup | |
String | The title of the popup. more details | Popup | |
MapView|SceneView | A reference to the MapView or SceneView. more details | Popup | |
PopupViewModel | This is a class that contains all the logic (properties and methods) that controls this widget's behavior. more details | Popup | |
Boolean | Indicates whether the popup is visible. more details | Popup | |
VisibleElements | The visible elements that are displayed within the widget. more details | Popup |
Property Details
-
actions Collection<(ActionButton|ActionToggle)>autocast
-
Defines actions that may be executed by clicking the icon or image symbolizing them in the popup. By default, every popup has a
zoom-to
action styled with a magnifying glass icon. When this icon is clicked, the view zooms in four LODs and centers on the selected feature.
You may remove this action from the default popup actions by setting includeDefaultActions to
false
in the PopupViewModel, or by setting the overwriteActions property totrue
in a PopupTemplate. The order of each action in the popup is the order in which they appear in the array.The trigger-action event fires each time an action in the popup is clicked. This event should be used to execute custom code for each action clicked. For example, if you would like to add a
zoom-out
action to the popup that zooms the view out several LODs, you would define the zoom-out code in a separate function. Then you would call the customzoom-out
function in the trigger-action event handler. See the sample code snippet below for more details on how this works.Actions are defined with the properties listed in the ActionButton or ActionToggle classes.
- See also
Example// Defines an action to zoom out from the selected feature let zoomOutAction = { // This text is displayed as a tooltip title: "Zoom out", // The ID by which to reference the action in the event handler id: "zoom-out", // Sets the icon font used to style the action button className: "esri-icon-zoom-out-magnifying-glass" }; // Adds the custom action to the popup. view.popup.actions.push(zoomOutAction); // The function to execute when the zoom-out action is clicked function zoomOut() { // in this case the view zooms out two LODs on each click view.goTo({ center: view.center, zoom: view.zoom - 2 }); } // This event fires for each click on any action view.popup.on("trigger-action", function(event){ // If the zoom-out action is clicked, fire the zoomOut() function if(event.action.id === "zoom-out"){ zoomOut(); } });
-
Since: ArcGIS Maps SDK for JavaScript 4.8
-
Position of the popup in relation to the selected feature. The default behavior is to display above the feature and adjust if not enough room. If needing to explicitly control where the popup displays in relation to the feature, choose an option besides
auto
.Possible Values:"auto"|"top-center"|"top-right"|"bottom-left"|"bottom-center"|"bottom-right"
- Default Value:auto
Example// Popup will display on the bottom-right of the selected feature regardless of where that feature is located view.popup.alignment = "bottom-right";
-
autoCloseEnabled BooleanSince: ArcGIS Maps SDK for JavaScript 4.5
-
- Default Value:false
-
autoOpenEnabled BooleanSince: ArcGIS Maps SDK for JavaScript 4.10
-
This property indicates to the
Popup
that it needs to allow or disallow the click event propagation.Use
view.popup.autoOpenEnabled = false;
when needing to stop the click event propagation.- Default Value:true
Exampleview.popup.autoOpenEnabled = false; view.on("click", function(event) { view.popup.open({ // Set the popup }); });
-
collapsed BooleanSince: ArcGIS Maps SDK for JavaScript 4.5
-
Indicates whether the popup displays its content. If
true
, only the header displays.- Default Value:false
-
collapseEnabled Boolean
-
Indicates whether to enable collapse functionality for the popup.
- Default Value:true
-
-
The ID or node representing the DOM element containing the widget. This property can only be set once. The following examples are all valid use cases when working with widgets.
Examples// Create the HTML div element programmatically at runtime and set to the widget's container const basemapGallery = new BasemapGallery({ view: view, container: document.createElement("div") }); // Add the widget to the top-right corner of the view view.ui.add(basemapGallery, { position: "top-right" });
// Specify an already-defined HTML div element in the widget's container const basemapGallery = new BasemapGallery({ view: view, container: basemapGalleryDiv }); // Add the widget to the top-right corner of the view view.ui.add(basemapGallery, { position: "top-right" }); // HTML markup <body> <div id="viewDiv"></div> <div id="basemapGalleryDiv"></div> </body>
// Specify the widget while adding to the view's UI const basemapGallery = new BasemapGallery({ view: view }); // Add the widget to the top-right corner of the view view.ui.add(basemapGallery, { position: "top-right" });
-
-
The content of the popup. When set directly on the Popup, this content is static and cannot use fields to set content templates. To set a template for the content based on field or attribute names, see PopupTemplate.content.
Example// This sets generic instructions in the popup that will always be displayed // unless it is overridden by a PopupTemplate view.popup.content = "Click a feature on the map to view its attributes";
-
currentDockPosition Stringreadonly
-
Dock position in the View.
Possible Values:"auto"|"top-center"|"top-right"|"top-left"|"bottom-left"|"bottom-center"|"bottom-right"
-
Since: ArcGIS Maps SDK for JavaScript 4.7
-
The name of the class. The declared class name is formatted as
esri.folder.className
.
-
defaultPopupTemplateEnabled BooleanSince: ArcGIS Maps SDK for JavaScript 4.11
-
Enables automatic creation of a popup template for layers that have popups enabled but no popupTemplate defined. Automatic popup templates are supported for layers that support the
createPopupTemplate
method. (Supported for FeatureLayer, GeoJSONLayer, OGCFeatureLayer, SceneLayer, CSVLayer, PointCloudLayer, StreamLayer, and ImageryLayer).- Starting with version 4.12, PopupTemplate content can no longer be set using a
wildcard, e.g.
*
. Instead, set thedefaultPopupTemplateEnabled
property totrue
. - Starting with 4.16, the default popup has been improved to no longer display system
fields
that do not hold significant value, e.g.
Shape__Area
andShape__Length
are two fields that no longer display.
- Default Value:false
- Starting with version 4.12, PopupTemplate content can no longer be set using a
wildcard, e.g.
-
dockEnabled Boolean
-
Indicates whether the placement of the popup is docked to the side of the view.
Docking the popup allows for a better user experience, particularly when opening popups in apps on mobile devices. When a popup is "dockEnabled" it means the popup no longer points to the selected feature or the location assigned to it. Rather it is attached to a side, the top, or the bottom of the view.
See dockOptions to override default options related to docking the popup.
- Default Value:false
- See also
Example// The popup will automatically be dockEnabled when made visible view.popup.dockEnabled = true;
-
dockOptions Object
-
Docking the popup allows for a better user experience, particularly when opening popups in apps on mobile devices. When a popup is "dockEnabled" it means the popup no longer points to the selected feature or the location assigned to it. Rather it is placed in one of the corners of the view or to the top or bottom of it. This property allows the developer to set various options for docking the popup.
See the object specification table below to override default docking properties on the popup.
- Properties
-
optional Default Value:trueDefines the dimensions of the View at which to dock the popup. Set to
false
to disable docking at a breakpoint.buttonEnabled BooleanIf
true
, displays the dock button. Iffalse
, hides the dock button from the popup.optional Default Value:autoThe position in the view at which to dock the popup. Can be set as either a string or function. See the table below for known string values and their position in the view based on the view's size.
Known Value View size > breakpoint View size < breakpoint auto top-right bottom 100% top-left top-left top 100% top-center top-center top 100% top-right top-right top 100% bottom-left bottom-left bottom 100% bottom-center bottom-center bottom 100% bottom-right bottom-right bottom 100% If viewing the popup in a mobile UI, the default dock position is bottom 100%.
- See also
Exampleview.popup.dockOptions = { // Disable the dock button so users cannot undock the popup buttonEnabled: false, // Dock the popup when the size of the view is less than or equal to 600x1000 pixels breakpoint: { width: 600, height: 1000 } };
-
An array of features associated with the popup. Each graphic in this array must have a valid PopupTemplate set. They may share the same PopupTemplate or have unique PopupTemplates depending on their attributes. The content and title of the popup is set based on the
content
andtitle
properties of each graphic's respective PopupTemplate.When more than one graphic exists in this array, the current content of the Popup is set based on the value of the selected feature.
This value is
null
if no features are associated with the popup.Example// When setting the features property, the graphics pushed to this property // must have a PopupTemplate set. let g1 = new Graphic(); g1.popupTemplate = new PopupTemplate({ title: "Results title", content: "Results: {ATTRIBUTE_NAME}" }); // Set the graphics as an array to the popup instance. The content and title of // the popup will be set depending on the PopupTemplate of the graphics. // Each graphic may share the same PopupTemplate or have a unique PopupTemplate let graphics = [g1, g2, g3, g4, g5]; view.popup.features = graphics;
-
goToOverride GoToOverrideSince: ArcGIS Maps SDK for JavaScript 4.8
-
This function provides the ability to override either the MapView goTo() or SceneView goTo() methods.
Example// The following snippet uses the Search widget but can be applied to any // widgets that support the goToOverride property. search.goToOverride = function(view, goToParams) { goToParams.options.duration = updatedDuration; return view.goTo(goToParams.target, goToParams.options); };
-
headingLevel NumberSince: ArcGIS Maps SDK for JavaScript 4.20
-
Indicates the heading level to use for the title of the popup. By default, the title is rendered as a level 2 heading (e.g.
<h2>Popup title</h2>
). Depending on the widget's placement in your app, you may need to adjust this heading for proper semantics. This is important for meeting accessibility standards.- Default Value:2
- See also
Example// popup title will render as an <h3> popup.headingLevel = 3;
-
highlightEnabled Boolean
-
Highlight the selected popup feature using the highlightOptions set on the MapView or the highlightOptions set on the SceneView.
- Default Value:true
-
The unique ID assigned to the widget when the widget is created. If not set by the developer, it will default to the container ID, or if that is not present then it will be automatically generated.
-
label String
-
The widget's default label.
-
Point used to position the popup. This is automatically set when viewing the popup by selecting a feature. If using the Popup to display content not related to features in the map, such as the results from a task, then you must set this property before making the popup visible to the user.
- See also
Examples// Sets the location of the popup to the center of the view view.popup.location = view.center; // Displays the popup view.popup.visible = true;
// Sets the location of the popup to a specific place (using autocast) // Note: using latlong only works if view is in Web Mercator or WGS84 spatial reference. view.popup.location = {latitude: 34.0571, longitude: -117.1968};
// Sets the location of the popup to the location of a click on the view view.on("click", function(event){ view.popup.location = event.mapPoint; // Displays the popup view.popup.visible = true; });
-
Defines the maximum icons displayed at one time in the action area.
- Default Value:3
-
An array of pending Promises that have not yet been fulfilled. If there are no pending promises, the value is
null
. When the pending promises are resolved they are removed from this array and the features they return are pushed into the features array.
-
selectedFeature Graphicreadonly
-
The selected feature accessed by the popup. The content of the Popup is determined based on the PopupTemplate assigned to this feature.
-
selectedFeatureIndex Number
-
Index of the feature that is selected. When features are set, the first index is automatically selected.
-
selectedFeatureWidget FeaturereadonlySince: ArcGIS Maps SDK for JavaScript 4.7
-
Returns a reference to the current Feature that the Popup is using. This is useful if needing to get a reference to the widget in order to make any changes to it.
-
spinnerEnabled Boolean
-
Indicates whether to display a spinner at the popup location prior to its display when it has pending promises.
-
title String
-
The title of the popup. This can be set generically on the popup no matter the features that are selected. If the selected feature has a PopupTemplate, then the title set in the corresponding template is used here.
- See also
Example// This title will display in the popup unless a selected feature's // PopupTemplate overrides it view.popup.title = "Population by zip codes in Southern California";
-
viewModel PopupViewModelautocast
-
This is a class that contains all the logic (properties and methods) that controls this widget's behavior. See the PopupViewModel class to access all properties and methods on the widget.
-
visible Boolean
-
Indicates whether the popup is visible.
-
visibleElements VisibleElementsSince: ArcGIS Maps SDK for JavaScript 4.15
-
The visible elements that are displayed within the widget. This property provides the ability to turn individual elements of the widget's display on/off.
Examplepopup.visibleElements = { closeButton: false };
Method Overview
Name | Return Type | Summary | Class |
---|---|---|---|
Adds one or more handles which are to be tied to the lifecycle of the object. more details | Accessor | ||
Use this method to remove focus from the Widget. more details | Popup | ||
String | A utility method used for building the value for a widget's | Widget | |
Removes promises, features, content, title and location from the Popup. more details | Popup | ||
Closes the popup by setting its visible property to | Popup | ||
Destroys the widget instance. more details | Widget | ||
Boolean | Emits an event on the instance. more details | Popup | |
Promise<FetchPopupFeaturesResult> | Use this method to return feature(s) at a given screen location. more details | Popup | |
Use this method to give focus to the Widget if the widget is able to be focused. more details | Popup | ||
Boolean | Indicates whether there is an event listener on the instance that matches the provided event name. more details | Popup | |
Boolean | Returns true if a named group of handles exist. more details | Accessor | |
Boolean |
| Widget | |
Boolean |
| Widget | |
Boolean |
| Widget | |
PopupViewModel | Selects the feature at the next index in relation to the selected feature. more details | Popup | |
Object | Registers an event handler on the instance. more details | Popup | |
Opens the popup at the given location with content defined either explicitly with | Popup | ||
Adds one or more handles which are to be tied to the lifecycle of the widget. more details | Widget | ||
This method is primarily used by developers when implementing custom widgets. more details | Widget | ||
PopupViewModel | Selects the feature at the previous index in relation to the selected feature. more details | Popup | |
Removes a group of handles owned by the object. more details | Accessor | ||
Object | This method is primarily used by developers when implementing custom widgets. more details | Widget | |
Renders widget to the DOM immediately. more details | Widget | ||
Positions the popup on the view. more details | Popup | ||
This method is primarily used by developers when implementing custom widgets. more details | Widget | ||
Triggers the trigger-action event and executes the action at the specified index in the actions array. more details | Popup | ||
Promise |
| Widget |
Method Details
-
addHandles(handleOrHandles, groupKey)inheritedSince: ArcGIS Maps SDK for JavaScript 4.25
-
Adds one or more handles which are to be tied to the lifecycle of the object. The handles will be removed when the object is destroyed.
// Manually manage handles const handle = reactiveUtils.when( () => !view.updating, () => { wkidSelect.disabled = false; }, { once: true } ); this.addHandles(handle); // Destroy the object this.destroy();
ParametershandleOrHandles WatchHandle|WatchHandle[]Handles marked for removal once the object is destroyed.
groupKey *optionalKey identifying the group to which the handles should be added. All the handles in the group can later be removed with Accessor.removeHandles(). If no key is provided the handles are added to a default group.
-
blur()Since: ArcGIS Maps SDK for JavaScript 4.6
-
Use this method to remove focus from the Widget.
-
Since: ArcGIS Maps SDK for JavaScript 4.7
-
A utility method used for building the value for a widget's
class
property. This aids in simplifying CSS class setup.Parameterrepeatable The class names.
ReturnsType Description String The computed class name. Example// .tsx syntax showing how to set CSS classes while rendering the widget render() { const dynamicIconClasses = { [CSS.myIcon]: this.showIcon, [CSS.greyIcon]: !this.showIcon }; return ( <div class={classes(CSS.root, CSS.mixin, dynamicIconClasses)} /> ); }
-
clear()
-
-
close()
-
Closes the popup by setting its visible property to
false
. Users can alternatively close the popup by directly setting the visible property tofalse
.- See also
-
destroy()inherited
-
Destroys the widget instance.
-
emit(type, event){Boolean}Since: ArcGIS Maps SDK for JavaScript 4.5
-
Emits an event on the instance. This method should only be used when creating subclasses of this class.
Parameterstype StringThe name of the event.
event ObjectoptionalThe event payload.
ReturnsType Description Boolean true
if a listener was notified
-
fetchFeatures(screenPoint, options){Promise<FetchPopupFeaturesResult>}Since: ArcGIS Maps SDK for JavaScript 4.15
-
Use this method to return feature(s) at a given screen location. These features are fetched from all of the LayerViews in the view. In order to use this, a layer must already have an associated PopupTemplate and have its popupEnabled. These features can then be used within a custom Popup or Feature widget experience. One example could be a custom side panel that displays feature-specific information based on an end user's click location. This method allows a developer the ability to control how the input location is handled, and then subsequently, what to do with the results.
ParametersscreenPoint ObjectAn object representing a point on the screen. This point can be in either the MapView or SceneView.
Specificationx NumberThe x coordinate.
y NumberThe y coordinate.
options FetchFeaturesOptionsoptionalThe options to pass into the
fetchFeatures
method.ReturnsType Description Promise<FetchPopupFeaturesResult> Resolves with the selected hitTest
location. In addition, it also returns an array of graphics if thehitTest
is performed directly on the view, a single Promise containing an array of all resulting graphics, or an array of objects containing this array of resulting graphics in addition to its associated layerview. Most commonly if accessing all features, use the single promise returned in the result's allGraphicsPromise and call.then()
as seen in the example snippet.Example// Add Feature widget to UI view.ui.add(featureWidget, "top-right"); // Get view's click event view.on("click", function(event) { // Call fetchFeatures and pass in the click event screenPoint view.popup.fetchFeatures(event.screenPoint).then(function(response) { // Access the response from fetchFeatures response.allGraphicsPromise.then(function(graphics) { // Set the feature widget's graphic to the returned graphic from fetchFeatures featureWidget.graphic = graphics[0]; }); }); });
-
focus()Since: ArcGIS Maps SDK for JavaScript 4.6
-
Use this method to give focus to the Widget if the widget is able to be focused.
-
hasEventListener(type){Boolean}
-
Indicates whether there is an event listener on the instance that matches the provided event name.
Parametertype StringThe name of the event.
ReturnsType Description Boolean Returns true if the class supports the input event.
-
Since: ArcGIS Maps SDK for JavaScript 4.25
-
Returns true if a named group of handles exist.
ParametergroupKey *optionalA group key.
ReturnsType Description Boolean Returns true
if a named group of handles exist.Example// Remove a named group of handles if they exist. if (obj.hasHandles("watch-view-updates")) { obj.removeHandles("watch-view-updates"); }
-
Since: ArcGIS Maps SDK for JavaScript 4.19
-
isFulfilled()
may be used to verify if creating an instance of the class is fulfilled (either resolved or rejected). If it is fulfilled,true
will be returned.ReturnsType Description Boolean Indicates whether creating an instance of the class has been fulfilled (either resolved or rejected).
-
Since: ArcGIS Maps SDK for JavaScript 4.19
-
isRejected()
may be used to verify if creating an instance of the class is rejected. If it is rejected,true
will be returned.ReturnsType Description Boolean Indicates whether creating an instance of the class has been rejected.
-
Since: ArcGIS Maps SDK for JavaScript 4.19
-
isResolved()
may be used to verify if creating an instance of the class is resolved. If it is resolved,true
will be returned.ReturnsType Description Boolean Indicates whether creating an instance of the class has been resolved.
-
next(){PopupViewModel}
-
Selects the feature at the next index in relation to the selected feature.
ReturnsType Description PopupViewModel Returns an instance of the popup's view model. - See also
-
on(type, listener){Object}
-
Registers an event handler on the instance. Call this method to hook an event with a listener.
ParametersAn event or an array of events to listen for.
listener FunctionThe function to call when the event fires.
ReturnsType Description Object Returns an event handler with a remove()
method that should be called to stop listening for the event(s).Property Type Description remove Function When called, removes the listener from the event. Exampleview.on("click", function(event){ // event is the event handle returned after the event fires. console.log(event.mapPoint); });
-
open(options)
-
Opens the popup at the given location with content defined either explicitly with
content
or driven from the PopupTemplate of input features. This method sets the popup's visible property totrue
. Users can alternatively open the popup by directly setting the visible property totrue
.The popup will only display if the view's size constraints in dockOptions are met or the location property is set to a geometry.
ParametersSpecificationoptions ObjectoptionalDefines the location and content of the popup when opened.
Specificationtitle StringoptionalSets the title of the popup.
content String|HTMLElement|WidgetoptionalSets the content of the popup.
location GeometryoptionalSets the popup's location, which is the geometry used to position the popup.
fetchFeatures BooleanoptionalDefault Value: falseWhen
true
, indicates the popup should fetch the content of this feature and display it. If no PopupTemplate exists, a default template is created for the layer if defaultPopupTemplateEnabled =true
. In order for this option to work, there must be a validview
andlocation
set.optional Sets the popup's features, which populate the title and content of the popup based on each graphic's PopupTemplate.
optional Sets pending promises on the popup. The popup will display once the promises resolve. Each promise must resolve to an array of Graphics.
featureMenuOpen BooleanoptionalDefault Value: falseSince: 4.5
This property enables multiple features in a popup to display in a list rather than displaying the first selected feature. Setting this totrue
allows the user to scroll through the list of features returned from the query and choose the selection they want to display within the popup.updateLocationEnabled BooleanoptionalDefault Value: falseWhen
true
indicates the popup should update its location for each paginated feature based on the selected feature's geometry.collapsed BooleanoptionalDefault Value: falseSince: 4.5
Whentrue
, indicates that only the popup header will display.shouldFocus BooleanoptionalDefault Value: falseSince: 4.23
Whentrue
, indicates that the focus should be on the popup after it has been opened.Examplesview.on("click", function(event){ view.popup.open({ location: event.mapPoint, // location of the click on the view title: "You clicked here", // title displayed in the popup content: "This is a point of interest" // content displayed in the popup }); });
view.on("click", function(event){ view.popup.open({ location: event.mapPoint, // location of the click on the view fetchFeatures: true // display the content for the selected feature if a popupTemplate is defined. }); });
view.popup.open({ title: "You clicked here", // title displayed in the popup content: "This is a point of interest", // content displayed in the popup location: event.mapPoint, updateLocationEnabled: true // updates the location of popup based on // selected feature's geometry });
view.popup.open({ features: graphics, // array of graphics featureMenuOpen: true, // selected features initially display in a list location: graphics[0].geometry // location of the first graphic in the array of graphics });
-
own(handleOrHandles)inheritedSince: ArcGIS Maps SDK for JavaScript 4.24
-
Adds one or more handles which are to be tied to the lifecycle of the widget. The handles will be removed when the widget is destroyed.
const handle = reactiveUtils.when( () => !view.updating, () => { wkidSelect.disabled = false; }, { once: true} ); this.own(handle); // Handle gets removed when the widget is destroyed.
ParameterhandleOrHandles WatchHandle|WatchHandle[]Handles marked for removal once the widget is destroyed.
-
postInitialize()inherited
-
This method is primarily used by developers when implementing custom widgets. Executes after widget is ready for rendering.
-
previous(){PopupViewModel}
-
Selects the feature at the previous index in relation to the selected feature.
ReturnsType Description PopupViewModel Returns an instance of the popup's view model. - See also
-
removeHandles(groupKey)inheritedSince: ArcGIS Maps SDK for JavaScript 4.25
-
Removes a group of handles owned by the object.
ParametergroupKey *optionalA group key or an array or collection of group keys to remove.
Exampleobj.removeHandles(); // removes handles from default group obj.removeHandles("handle-group"); obj.removeHandles("other-handle-group");
-
This method is primarily used by developers when implementing custom widgets. It must be implemented by subclasses for rendering.
ReturnsType Description Object The rendered virtual node.
-
renderNow()inherited
-
Renders widget to the DOM immediately.
-
reposition()
-
Positions the popup on the view. Moves the popup into the view's extent if the popup is partially or fully outside the view's extent.
If the popup is partially out of view, the view will move to fully show the popup. If the popup is fully out of view, the view will move to the popup's location.
-
scheduleRender()inherited
-
This method is primarily used by developers when implementing custom widgets. Schedules widget rendering. This method is useful for changes affecting the UI.
-
triggerAction(actionIndex)
-
Triggers the trigger-action event and executes the action at the specified index in the actions array.
ParameteractionIndex NumberThe index of the action to execute.
-
Since: ArcGIS Maps SDK for JavaScript 4.19
-
when()
may be leveraged once an instance of the class is created. This method takes two input parameters: acallback
function and anerrback
function. Thecallback
executes when the instance of the class loads. Theerrback
executes if the instance of the class fails to load.Parameterscallback FunctionoptionalThe function to call when the promise resolves.
errback FunctionoptionalThe function to execute when the promise fails.
ReturnsType Description Promise Returns a new promise for the result of callback
.Example// Although this example uses the BasemapGallery widget, any class instance that is a promise may use when() in the same way let bmGallery = new BasemapGallery(); bmGallery.when(function(){ // This function will execute once the promise is resolved }, function(error){ // This function will execute if the promise is rejected due to an error });
Type Definitions
-
FetchFeaturesOptions
-
Optional properties to use with the fetchFeatures method.
- Properties
-
event ClickEvent
The
click
event for either the MapView or SceneView. The event can be supplied in order to adjust the query radius depending on the pointer type. For example, touch events query a larger radius.signal AbortSignalThe signal object that can be used to abort the asynchronous task. The returned promise will be rejected with an Error named
AbortError
when an abort is signaled. See also AbortController for more information on how to construct a controller that can be used to deliver abort signals.
-
FetchPopupFeaturesPromisesPerLayerView
-
An object containing popup features for a specific location in addition to its associated layerview.
-
FetchPopupFeaturesResult
-
The resulting features returned from the fetchFeatures method.
- Properties
-
optional An array of promises containing graphics from the selected location. This can be a combination of graphics derived from a layerview, and/or graphics that reside directly on the view, ie. view.graphics.
optional An array of graphics that do not have any associated LayerView, ie. view.graphics.
location PointThe resulting location of the MapView or SceneView's'
hitTest
.promisesPerLayerView FetchPopupFeaturesPromisesPerLayerView[]An array of FetchPopupFeaturesPromisesPerLayerView.
-
VisibleElements
-
The visible elements that are displayed within the widget. This provides the ability to turn individual elements of the widget's display on/off.
- Properties
-
featureNavigation Boolean
Indicates whether pagination for feature navigation will be displayed. Default value is
true
. This allows the user to scroll through various selected features using pagination arrows.closeButton BooleanIndicates whether to display a close button on the popup dialog. Default value is
true
.
Event Overview
Name | Type | Summary | Class |
---|---|---|---|
{action: ActionButton|ActionToggle} |
Fires after the user clicks on an action or action toggle inside a popup. more details |
Popup |
Event Details
-
trigger-action
-
Fires after the user clicks on an action or action toggle inside a popup. This event may be used to define a custom function to execute when particular actions are clicked. See the example below for details of how this works.
- Property
-
action ActionButton|ActionToggle
The action clicked by the user. For a description of this object and a specification of its properties, see the actions property of this class.
- See also
Example// Defines an action to zoom out from the selected feature let zoomOutAction = { // This text is displayed as a tooltip title: "Zoom out", // The ID used to reference this action in the event handler id: "zoom-out", // Sets the icon font used to style the action button className: "esri-icon-zoom-out-magnifying-glass" }; // Adds the custom action to the popup view.popup.actions.push(zoomOutAction); // Fires each time an action is clicked view.popup.on("trigger-action", function(event){ // If the zoom-out action is clicked, than execute the following code if(event.action.id === "zoom-out"){ // Zoom out two levels (LODs) view.goTo({ center: view.center, zoom: view.zoom - 2 }); } });