BuildingComponentSublayer

Class: esri/layers/buildingSublayers/BuildingComponentSublayer
Inheritance: BuildingComponentSublayer BuildingSublayer Accessor
Since: ArcGIS API for JavaScript 4.10

BuildingComponentSublayers contain 3D Object features representing building components like doors, pipes or AC units. They are sublayers in a BuildingSceneLayer either directly or as part of a BuildingGroupSublayer. This sublayer is similar to a 3D Object SceneLayer, it can be visualized with a specific renderer, popups can be customized using popupTemplate and SQL filters can be applied by setting a definitionExpression.

Starting with version 4.17, BuildingComponentSublayers support attribute or spatial queries if the the BuildingSceneLayer has an associated feature layer.

See also:

Property Overview

Any properties can be set, retrieved or listened to. See the Working with Properties topic.
Show inherited properties Hide inherited properties
Name Type Summary Class
Stringmore details

The name of the class.

more detailsAccessor
Stringmore details

The SQL where clause used to filter features on the client.

more detailsBuildingComponentSublayer
Numbermore details

The sublayer's layer id as defined by the Scene Service.

more detailsBuildingSublayer
Booleanmore details

Indicates if this sublayer is empty.

more detailsBuildingSublayer
Stringmore details

Indicates how the layer should display in the LayerList widget.

more detailsBuildingComponentSublayer
Errormore details

The Error object returned if an error occurred while loading.

more detailsBuildingComponentSublayer
Stringmore details

Represents the status of a load operation.

more detailsBuildingComponentSublayer
Object[]more details

A list of warnings which occurred while loading.

more detailsBuildingComponentSublayer
Stringmore details

The modelName is a standard name for each sublayer.

more detailsBuildingSublayer
Numbermore details

Opacity of the sublayer.

more detailsBuildingSublayer
String[]more details

An array of field names from the service to include with each feature.

more detailsBuildingComponentSublayer
Booleanmore details

Indicates whether to display popups when features in the layer are clicked.

more detailsBuildingComponentSublayer
PopupTemplatemore details

The popup template for the sublayer.

more detailsBuildingComponentSublayer
Renderermore details

The renderer assigned to the sublayer.

more detailsBuildingComponentSublayer
Stringmore details

The title of the sublayer used to identify it in places such as the LayerList and Legend widgets.

more detailsBuildingSublayer
Stringmore details For BuildingComponentSublayer the type is always "building-component". more detailsBuildingComponentSublayer
Booleanmore details

Indicates if the sublayer is visible in the view.

more detailsBuildingSublayer

Property Details

declaredClass Stringreadonly inherited

The name of the class. The declared class name is formatted as esri.folder.className.

definitionExpression String

The SQL where clause used to filter features on the client. Only the features that satisfy the definition expression are displayed in the View. Setting a definition expression is useful when only a subset of the data in the layer should be displayed.

Setting the definition expression of a layer automatically updates all layer views.

If the definition expression is set after the layer has been added to the map, the view will automatically refresh itself to display the features that satisfy the new definition expression.

Note that the initial loading time of the features remains unchanged, even if they are filtered. This happens because, as opposed to Feature Layers, feature filtering is done client-side. This means that all features need to be downloaded for filter evaluation.

This property is evaluated on the client using the cached attributes and it only supports standardized SQL.

id Numberreadonly inherited

The sublayer's layer id as defined by the Scene Service.

isEmpty Booleanreadonly inherited

Indicates if this sublayer is empty. This property is only read from the service. Empty sublayers are not loaded for rendering and applications can choose to hide them in their UI.

listMode String
Since: ArcGIS API for JavaScript 4.11

Indicates how the layer should display in the LayerList widget. The possible values are listed below.

Value Description
show The layer is visible in the table of contents.
hide The layer is hidden in the table of contents.

Possible Values:"show"|"hide"

Default Value:show
loadError Errorreadonly

The Error object returned if an error occurred while loading.

Default Value:null
loadStatus Stringreadonly

Represents the status of a load operation.

Value Description
not-loaded The object's resources have not loaded.
loading The object's resources are currently loading.
loaded The object's resources have loaded without errors.
failed The object's resources failed to load. See loadError for more details.

Possible Values:"not-loaded"|"loading"|"failed"|"loaded"

Default Value:not-loaded
loadWarnings Object[]readonly

A list of warnings which occurred while loading.

modelName Stringreadonly inherited

The modelName is a standard name for each sublayer. For example the sublayer containing the doors in a building has the modelName "Doors". Use this property to retrieve sublayers in a BuildingSceneLayer.

Example:
// use modelName to identify a sublayer
const doorslayer = buildingSceneLayer.allSublayers.find(function(sublayer) {
  return sublayer.modelName === "Doors";
});
opacity Number inherited

Opacity of the sublayer.

Default Value:1
outFields String[]
Since: ArcGIS API for JavaScript 4.12

An array of field names from the service to include with each feature. To fetch the values from all fields in the layer, use ["*"]. Fields specified in outFields will be requested alongside with required fields for rendering.

To include fields in all sublayers, use the outFields property of the parent layer.

Default Value:null
popupEnabled Boolean

Indicates whether to display popups when features in the layer are clicked. The layer needs to have a popupTemplate to define what information should be displayed in the popup. Alternatively, a default popup template may be automatically used if Popup.defaultPopupTemplateEnabled is set to true.

Default Value:true
See also:
popupTemplate PopupTemplateautocast

The popup template for the sublayer. When set, the popupTemplate allows users to access attributes and display their values in the view's popup when a feature is selected using text and/or charts. See the PopupTemplate sample for an example of how PopupTemplate interacts with a FeatureLayer. Setting a PopupTemplate on this layer type is done in the same way as a FeatureLayer.

A default popup template is automatically used if no popupTemplate has been defined when Popup.defaultPopupTemplateEnabled is set to true.

See also:
renderer Rendererautocast

The renderer assigned to the sublayer. The renderer defines how to visualize each feature in the sublayer. Depending on the renderer type, features may be visualized with the same symbol, or with varying symbols based on the values of provided attribute fields or functions.

See also:
Example:
// all features in the layer will be visualized with
// a blue color
sublayer.renderer = {
  type: "simple",  // autocasts as new SimpleRenderer()
  symbol: {
    type: "mesh-3d",  // autocasts as new MeshSymbol3D()
    symbolLayers: [{
      type: "fill",  // autocasts as new FillSymbol3DLayer()
      material: { color: "blue" }
    }]
  }
};

The title of the sublayer used to identify it in places such as the LayerList and Legend widgets.

type Stringreadonly

For BuildingComponentSublayer the type is always "building-component".

visible Boolean inherited

Indicates if the sublayer is visible in the view.

Default Value:true

Method Overview

Name Return Type Summary Class
more details

Cancels a load() operation if it is already in progress.

more detailsBuildingComponentSublayer
PopupTemplatemore details

Creates a default popup template for the layer, populated with all the fields of the layer.

more detailsBuildingComponentSublayer
Querymore details

Creates a query object that can be used to fetch features that satisfy the component sublayer's current definition expression.

more detailsBuildingComponentSublayer
Fieldmore details

Returns the Field instance for a field name (case-insensitive).

more detailsBuildingComponentSublayer
Domainmore details

Returns the Domain associated with the given field name.

more detailsBuildingComponentSublayer
Objectmore details

Gets field usage information.

more detailsBuildingComponentSublayer
Booleanmore details

isFulfilled() may be used to verify if creating an instance of the class is fulfilled (either resolved or rejected).

more detailsBuildingComponentSublayer
Booleanmore details

isRejected() may be used to verify if creating an instance of the class is rejected.

more detailsBuildingComponentSublayer
Booleanmore details

isResolved() may be used to verify if creating an instance of the class is resolved.

more detailsBuildingComponentSublayer
Promisemore details

Loads the resources referenced by this class.

more detailsBuildingComponentSublayer
Promise<Object>more details

Executes a Query against the associated feature service and returns the 2D Extent of features that satisfy the query.

more detailsBuildingComponentSublayer
Promise<Number>more details

Executes a Query against the associated feature service and returns the number of features that satisfy the query.

more detailsBuildingComponentSublayer
Promise<FeatureSet>more details

Executes a Query against the associated feature service and returns a FeatureSet.

more detailsBuildingComponentSublayer
Promise<Number[]>more details

Executes a Query against the associated feature service and returns an array of ObjectIDs of the features that satisfy the input query.

more detailsBuildingComponentSublayer
Promisemore details

when() may be leveraged once an instance of the class is created.

more detailsBuildingComponentSublayer

Method Details

cancelLoad()

Cancels a load() operation if it is already in progress.

createPopupTemplate(options){PopupTemplate}
Since: ArcGIS API for JavaScript 4.11

Creates a default popup template for the layer, populated with all the fields of the layer.

Parameter:
optional

Options for creating the popup template.

Returns:
Type Description
PopupTemplate The popup template, or null if the layer does not have any fields.
createQuery(){Query}
Since: ArcGIS API for JavaScript 4.17

Creates a query object that can be used to fetch features that satisfy the component sublayer's current definition expression. The query should only be used on the layer and not on the layer view.

Returns:
Type Description
Query The query object representing the layer's definition expression.
getField(fieldName){Field}
Since: ArcGIS API for JavaScript 4.12

Returns the Field instance for a field name (case-insensitive).

Parameter:
fieldName String

Name of the field.

Returns:
Type Description
Field the matching field or undefined
getFieldDomain(fieldName, options){Domain}
Since: ArcGIS API for JavaScript 4.12

Returns the Domain associated with the given field name. The domain can be either a CodedValueDomain or RangeDomain.

Parameters:
fieldName String

Name of the field.

options Object
optional

An object specifying additional options. See the object specification table below for the required properties of this object.

Specification:
feature Graphic

The feature to which the Domain is assigned.

Returns:
Type Description
Domain The Domain object associated with the given field name for the given feature.
getFieldUsageInfo(fieldName){Object}
Since: ArcGIS API for JavaScript 4.17.

Gets field usage information. On building component sub layers, fields can always be used for rendering and popups. Fields can only be used for querying if an associated feature service is available.

The returned object contains the following usage information:

Property Type Description
supportsRenderer boolean Indicates that a field can be used in a renderer (e.g. in visual variables), see renderer.
supportsLabelingInfo boolean This is always false, labeling is not supported on BuildingSceneLayer.
supportsPopupTemplate boolean Indicates that a field can be used in a popup template, see popupTemplate.
supportsLayerQuery boolean Indicates that a field can be used in layer queries, see queryFeatures().
Parameter:
fieldName String

The name of the field to get usage info for.

Returns:
Type Description
Object the field usage
isFulfilled(){Boolean}

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.

Returns:
Type Description
Boolean Indicates whether creating an instance of the class has been fulfilled (either resolved or rejected).
isRejected(){Boolean}

isRejected() may be used to verify if creating an instance of the class is rejected. If it is rejected, true will be returned.

Returns:
Type Description
Boolean Indicates whether creating an instance of the class has been rejected.
isResolved(){Boolean}

isResolved() may be used to verify if creating an instance of the class is resolved. If it is resolved, true will be returned.

Returns:
Type Description
Boolean Indicates whether creating an instance of the class has been resolved.
load(signal){Promise}

Loads the resources referenced by this class. This method automatically executes for a View and all of the resources it references in Map if the view is constructed with a map instance.

This method must be called by the developer when accessing a resource that will not be loaded in a View.

The load() method only triggers the loading of the resource the first time it is called. The subsequent calls return the same promise.

It's possible to provide a signal to stop being interested into a Loadable instance load status. When the signal is aborted, the instance does not stop its loading process, only cancelLoad can abort it.

Parameter:
signal AbortSignal
optional

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.

Returns:
Type Description
Promise Resolves when the resources have loaded.
queryExtent(query, options){Promise<Object>}
Since: ArcGIS API for JavaScript 4.17

Executes a Query against the associated feature service and returns the 2D Extent of features that satisfy the query. At the moment the 3D Extent can be returned by using BuildingComponentSublayerView.queryExtent(), but this will return the 3D extent only for features currently in the view. The query succeeds only if the BuildingSceneLayer has an associated feature layer. If an associated feature layer is not available, then an error with the name buildingscenelayer:query-not-available is thrown. Read more about queries in the Querying section of the BuildingSceneLayer class description.

Parameters:
query Query autocast
optional
Autocasts from Object

Specifies the query parameters.

options Object
optional

An object with the following properties.

Specification:
signal AbortSignal
optional

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.

Returns:
Type Description
Promise<Object> When resolved, returns the extent and count of the features that satisfy the input query. See the object specification table below for details.
Property Type Description
count Number The number of features that satisfy the input query.
extent Extent The extent of the features that satisfy the query.
queryFeatureCount(query, options){Promise<Number>}
Since: ArcGIS API for JavaScript 4.17

Executes a Query against the associated feature service and returns the number of features that satisfy the query. The query succeeds only if the layer's supportsLayerQuery capability is enabled. Use the getFieldUsageInfo() method to check if the layer supports queries. If querying is not enabled, then an error with the name buildingscenelayer:query-not-available is thrown. Read more about queries in the Querying section of the BuildingSceneLayer class description.

Parameters:
query Query autocast
optional
Autocasts from Object

Specifies the query parameters.

options Object
optional

An object with the following properties.

Specification:
signal AbortSignal
optional

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.

Returns:
Type Description
Promise<Number> Resolves to the count of the features satisfying the query.
queryFeatures(query, options){Promise<FeatureSet>}
Since: ArcGIS API for JavaScript 4.17

Executes a Query against the associated feature service and returns a FeatureSet. The query succeeds only if the layer's supportsLayerQuery capability is enabled. Use the getFieldUsageInfo() method to check if the layer supports queries. If querying is not enabled, then an error with the name buildingscenelayer:query-not-available is thrown. Read more about queries in the Querying section of the BuildingSceneLayer class description.

Parameters:
query Query autocast
optional
Autocasts from Object

Specifies the query parameters.

options Object
optional

An object with the following properties.

Specification:
signal AbortSignal
optional

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.

Returns:
Type Description
Promise<FeatureSet> Resolves to a FeatureSet which contains the features satisfying the query.
queryObjectIds(query, options){Promise<Number[]>}
Since: ArcGIS API for JavaScript 4.17

Executes a Query against the associated feature service and returns an array of ObjectIDs of the features that satisfy the input query. The query succeeds only if the layer's supportsLayerQuery capability is enabled. Use the getFieldUsageInfo() method to check if the layer supports queries. If querying is not enabled, then an error with the name buildingscenelayer:query-not-available is thrown. Read more about queries in the Querying section of the SceneLayer class description.

Parameters:
query Query autocast
optional
Autocasts from Object

Specifies the query parameters.

options Object
optional

An object with the following properties.

Specification:
signal AbortSignal
optional

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.

Returns:
Type Description
Promise<Number[]> Resolves to an array of numbers representing the object IDs of the features satisfying the query.
See also:
when(callback, errback){Promise}

when() may be leveraged once an instance of the class is created. This method takes two input parameters: a callback function and an errback function. The callback executes when the instance of the class loads. The errback executes if the instance of the class fails to load.

Parameters:
callback Function
optional

The function to call when the promise resolves.

errback Function
optional

The function to execute when the promise fails.

Returns:
Type Description
Promise Returns a new promise for the result of callback that may be used to chain additional functions.
Example:
// Although this example uses MapView, any class instance that is a promise may use when() in the same way
let view = new MapView();
view.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
});

Your browser is no longer supported. Please upgrade your browser for the best experience. See our browser deprecation post for more details.