import AttributeBinsGraphic from "@arcgis/core/AttributeBinsGraphic.js";const AttributeBinsGraphic = await $arcgis.import("@arcgis/core/AttributeBinsGraphic.js");- Since
- ArcGIS Maps SDK for JavaScript 4.32
A Graphic returned in a FeatureSet as result of running queryAttributeBins() method.
It can contain stackedAttributes in addition to geometry, a symbol, and attributes.
Constructors
Constructor
Parameters
| Parameter | Type | Description | Required |
|---|---|---|---|
| properties | | |
Properties
| Property | Type | Class |
|---|---|---|
aggregateGeometries inherited | Record<string, GeometryUnion> | null | undefined | |
attributes inherited | ||
declaredClass readonly inherited | ||
geometry inherited | ||
isAggregate readonly inherited | ||
layer inherited | ||
origin inherited | ||
popupTemplate inherited | ||
| | ||
symbol inherited | SymbolUnion | null | undefined | |
visible inherited |
aggregateGeometries
- Type
- Record<string, GeometryUnion> | null | undefined
The aggregateGeometries contains spatial aggregation geometries when statistics query is executed with
envelope-aggregate, centroid-aggregate and/or convex-hull-aggregate statistics type. Each property on aggregateGeometries is populated with
statistics field containing the aggregate geometry matching the aggregate statistics type.
Example
// average of age fields by regionsconst ageStatsByRegion = new StatisticDefinition({ onStatisticField: field, outStatisticFieldName: "avgAge", statisticType: "avg"});
// extent encompassing all features by regionconst aggregatedExtent = new StatisticDefinition({ statisticType: "envelope-aggregate", outStatisticFieldName: "aggregateExtent",});
// group the statistics by Region field// get avg age by Regions and extent of each regionconst query = layer.createQuery();query.groupByFieldsForStatistics = ["Region"];query.outStatistics = [consumeStatsByRegion, aggregatedExtent];layer.queryFeatures(query).then((results) => { results.features.forEach((feature) => { if (feature.attributes.Region === "Midwest") { view.goTo(feature.aggregateGeometries.aggregateExtent); } });}); geometry
- Type
- GeometryUnion | null | undefined
The geometry that defines the graphic's location.
Z-values defined in a geographic or metric coordinate system are expressed in meters. However, in local scenes that use a projected coordinate system, vertical units are assumed to be the same as the horizontal units specified by the service.
Example
// First create a point geometrylet point = { type: "point", // autocasts as new Point() longitude: -71.2643, latitude: 42.0909};
// Create a symbol for drawing the pointlet markerSymbol = { type: "simple-marker", // autocasts as new SimpleMarkerSymbol() color: [226, 119, 40]};
// Create a graphic and add the geometry and symbol to itlet pointGraphic = new Graphic({ geometry: point, symbol: markerSymbol}); isAggregate
- Type
- boolean
Indicates whether the graphic refers to an aggregate, or cluster graphic. Aggregate graphics represent clusters of features. If a graphic is an aggregate, you can use its Object ID to Query.aggregateIds the features comprising the cluster.
- See also
- Default value
- false
layer
- Type
- GraphicLayer | null | undefined
If applicable, references the layer in which the graphic is stored.
origin
- Type
- GraphicOrigin | null | undefined
Returns information about the origin of a graphic if applicable.
Origin details may be returned by methods such as MapView.hitTest() or by calling queryFeatures() on a layer or layer view.
Depending on the origin type, this information may include the source layer or other origin-related metadata.
Example
// get screen point from view's click eventview.on("click", (event) => { // Search for all features only on included layers at the clicked location view.hitTest(event, {include: vectorTileLayer}).then((response) => { // if graphics are returned from vector tile layer, do something with results if (response.results.length){ response.results.forEach((result, i) => { const layerId = result.graphic?.origin?.layerId; const styleLayer = vectorTileLayer.getStyleLayer(layerId); // update layer's style }); } })}); popupTemplate
- Type
- PopupTemplate | null | undefined
The template for displaying content in a Popup when the graphic is selected. The PopupTemplate may be used to access a graphic's attributes and display their values in the view's default popup. See the documentation for PopupTemplate for details on how to display attribute values in the popup.
As of 4.8, to get the actual popupTemplate of the graphic, see the getEffectivePopupTemplate()
method that either returns this value or the popupTemplate of the graphic's layer.
- See also
Example
// The following snippet shows how to set a popupTemplate// on the returned results (features) from identify
idResult.feature.popupTemplate = { title: "{NAME}", content: [{ // Pass in the fields to display type: "fields", fieldInfos: [{ fieldName: "NAME", label: "Name" }, { fieldName: "REGION", label: "Region" }] }]}; stackedAttributes
The stackedAttributes contains an array of name-value pairs, where the names correspond to unique values of the specified field or expression alias. Each name-value pair in the array represents a segment of the data, and these segments are stacked within the same bin. This allows for visualizing how different categories contribute to a total value. For example, it can be used to compare sales performance across different regions within the same time period.
symbol
- Type
- SymbolUnion | null | undefined
The Symbol for the graphic. Choosing a symbol for a graphic depends on the View type (SceneView or MapView), and the geometry type of the graphic.
Each graphic may have its own symbol specified when the parent layer is a GraphicsLayer. For a FeatureLayer the symbol of each graphic should not be set by the developer since the graphics' rendering properties are determined by the layer's Renderer.
To change a graphic's Symbol in the GraphicsLayer and in the View.graphics at runtime, one of the following can be done:
- Clone the symbol and change its properties.
- Assign a new symbol to the graphic.
Example
view.on("click", function(event){ let graphic = new Graphic({ geometry: event.mapPoint, symbol: { type: "simple-marker", // autocasts as new SimpleMarkerSymbol() color: "blue", size: 8, outline: { // autocasts as new SimpleLineSymbol() width: 0.5, color: "darkblue" } } });});Methods
| Method | Signature | Class |
|---|---|---|
fromJSON inherited static | fromJSON(json: any): any | |
clone inherited | clone(): this | |
getAttribute inherited | getAttribute<T = any>(name: string): T | |
getEffectivePopupTemplate inherited | getEffectivePopupTemplate(defaultPopupTemplateEnabled?: boolean): PopupTemplate | null | undefined | |
getGlobalId inherited | getGlobalId(): string | null | undefined | |
getObjectId inherited | getObjectId(): ObjectId | null | undefined | |
setAttribute inherited | setAttribute(name: string, newValue: any): void | |
toJSON inherited | toJSON(): any |
fromJSON
- Signature
-
fromJSON (json: any): any
Creates a new instance of this class and initializes it with values from a JSON object
generated from an ArcGIS product. The object passed into the input json
parameter often comes from a response to a query operation in the REST API or a
toJSON()
method from another ArcGIS product. See the Using fromJSON()
topic in the Guide for details and examples of when and how to use this function.
Parameters
| Parameter | Type | Description | Required |
|---|---|---|---|
| json | A JSON representation of the instance in the ArcGIS format. See the ArcGIS REST API documentation for examples of the structure of various input JSON objects. | |
- Returns
- any
Returns a new instance of this class.
clone
- Signature
-
clone (): this
Creates a deep clone of this object. Any properties that store values by reference will be assigned copies of the referenced values on the cloned instance.
- Returns
- this
A deep clone of the class instance that invoked this method.
getAttribute
- Signature
-
getAttribute <T = any>(name: string): T
- Type parameters
- <T = any>
Returns the value of the specified attribute.
Parameters
| Parameter | Type | Description | Required |
|---|---|---|---|
| name | The name of the attribute. | |
- Returns
- T
Returns the value of the attribute specified by
name.
getEffectivePopupTemplate
- Signature
-
getEffectivePopupTemplate (defaultPopupTemplateEnabled?: boolean): PopupTemplate | null | undefined
Returns the popup template applicable for the graphic.
It's either the value of popupTemplate or
the popupTemplate from the graphic's layer.
Parameters
| Parameter | Type | Description | Required |
|---|---|---|---|
| defaultPopupTemplateEnabled | = false - Whether support for default popup templates is enabled. When true, a default popup template may be created automatically if neither the graphic nor its layer have a popup template defined. | |
- Returns
- PopupTemplate | null | undefined
Returns the popup template of the graphic.
getGlobalId
- Signature
-
getGlobalId (): string | null | undefined
- Since
- ArcGIS Maps SDK for JavaScript 4.33
Returns the Global ID of the feature associated with the graphic, if it exists.
getObjectId
- Signature
-
getObjectId (): ObjectId | null | undefined
Returns the Object ID of the feature associated with the graphic, if it exists. The Object ID can be either a numeric value or a string identifier.
setAttribute
- Signature
-
setAttribute (name: string, newValue: any): void
Sets a new value to the specified attribute.
toJSON
- Signature
-
toJSON (): any
Converts an instance of this class to its ArcGIS portal JSON representation. See the Using fromJSON() guide topic for more information.
- Returns
- any
The ArcGIS portal JSON representation of an instance of this class.