[API](/solutions/geotoolkit/geotoolkit_js/apis/readme) / [geotoolkit](/solutions/geotoolkit/geotoolkit_js/apis/modules/geotoolkit) / [scene](/solutions/geotoolkit/geotoolkit_js/apis/modules/geotoolkit.scene) / [Node](/solutions/geotoolkit/geotoolkit_js/apis/modules/geotoolkit.scene.node) / Node

# Class: Node

[scene](/solutions/geotoolkit/geotoolkit_js/apis/modules/geotoolkit.scene).[Node](/solutions/geotoolkit/geotoolkit_js/apis/modules/geotoolkit.scene.node).Node

The Node class is the abstract class parent of all geotoolkit shapes.<br>
<br>
Node implements the functions required by a shape to be inserted in a Plot. (Except the render function which is Geotoolkit abstract method.)<br>
Every Node has two <b>transformations</b>: World Transform and the Scene Transform. <br>
WorldTransform corresponds to the concatenation of local and contents transforms <br>
Scene Transform corresponds to the concatenation of a Node's World Transform with its parent's World Transforms or the ultimate transformation beween the group and the plot.<br>
<br>
A node handles some of the <b>invalidation</b> mechanism as it forwards (upward) the invalidation event to its parent.<br>
One may add an invalidationHandler to be notified when the node has been invalidated, see [Node.addInvalidateHandler](/solutions/geotoolkit/geotoolkit_js/apis/classes/geotoolkit.scene.node.node#addinvalidatehandler)
<br>
When implementing a new shape, one will have to implement the <b>render()</b>function which allows rendering graphics.<br>
Note that shape selection/detection is also using rendering.<br>
It is also recommended to implement the <b>checkCollision()</b> function to let the toolkit optimize rendering by checking if the node is in the specified area and needs to be rendered.<br>
If it passes the test then only render() function will be called.<br>
<br>
The node class also introduces the functions <b>getProperties</b> and <b>setProperties</b> that may be used for serialization/deserialization.<br>
Therefore, a custom shape should extend those functions to be able to be serialized and deserialized.

## Hierarchy

- [`EventDispatcher`](/solutions/geotoolkit/geotoolkit_js/apis/classes/geotoolkit.util.eventdispatcher.eventdispatcher)
↳ **`Node`**
↳↳ [`Grid`](/solutions/geotoolkit/geotoolkit_js/apis/classes/geotoolkit.axis.grid.grid)
↳↳ [`AbstractLayer`](/solutions/geotoolkit/geotoolkit_js/apis/classes/geotoolkit.map.layers.abstractlayer.abstractlayer)
↳↳ [`AnimatedNode`](/solutions/geotoolkit/geotoolkit_js/apis/classes/geotoolkit.scene.animatednode.animatednode)
↳↳ [`HTMLOverlayLayer`](/solutions/geotoolkit/geotoolkit_js/apis/classes/geotoolkit.scene.htmloverlaylayer.htmloverlaylayer)
↳↳ [`Correlation`](/solutions/geotoolkit/geotoolkit_js/apis/classes/geotoolkit.welllog.multiwell.correlation.correlation.correlation)


## Implements

- [`IStyleListener`](/solutions/geotoolkit/geotoolkit_js/apis/classes/geotoolkit.attributes.iattributenode.istylelistener)


## Table of contents

Constructors
- [new Node(options)](/solutions/geotoolkit/GeoToolkit_JS/apis/classes/geotoolkit.scene.node.node.md#new node(options))


Methods
| [addCssClass](/solutions/geotoolkit/geotoolkit_js/apis/classes/geotoolkit.scene.node.node#addcssclass) | [addInvalidateHandler](/solutions/geotoolkit/geotoolkit_js/apis/classes/geotoolkit.scene.node.node#addinvalidatehandler) | [checkCollision](/solutions/geotoolkit/geotoolkit_js/apis/classes/geotoolkit.scene.node.node#checkcollision) |
|  --- | --- | --- |
| [clone](/solutions/geotoolkit/geotoolkit_js/apis/classes/geotoolkit.scene.node.node#clone) | [connectStyle](/solutions/geotoolkit/geotoolkit_js/apis/classes/geotoolkit.scene.node.node#connectstyle) | [copyConstructor](/solutions/geotoolkit/geotoolkit_js/apis/classes/geotoolkit.scene.node.node#copyconstructor) |
| [disconnectStyle](/solutions/geotoolkit/geotoolkit_js/apis/classes/geotoolkit.scene.node.node#disconnectstyle) | [dispose](/solutions/geotoolkit/geotoolkit_js/apis/classes/geotoolkit.scene.node.node#dispose) | [enableEventPropagation](/solutions/geotoolkit/geotoolkit_js/apis/classes/geotoolkit.scene.node.node#enableeventpropagation) |
| [execute](/solutions/geotoolkit/geotoolkit_js/apis/classes/geotoolkit.scene.node.node#execute) | [getClassName](/solutions/geotoolkit/geotoolkit_js/apis/classes/geotoolkit.scene.node.node#getclassname) | [getCssClass](/solutions/geotoolkit/geotoolkit_js/apis/classes/geotoolkit.scene.node.node#getcssclass) |
| [getCssClasses](/solutions/geotoolkit/geotoolkit_js/apis/classes/geotoolkit.scene.node.node#getcssclasses) | [getId](/solutions/geotoolkit/geotoolkit_js/apis/classes/geotoolkit.scene.node.node#getid) | [getName](/solutions/geotoolkit/geotoolkit_js/apis/classes/geotoolkit.scene.node.node#getname) |
| [getParent](/solutions/geotoolkit/geotoolkit_js/apis/classes/geotoolkit.scene.node.node#getparent) | [getProperties](/solutions/geotoolkit/geotoolkit_js/apis/classes/geotoolkit.scene.node.node#getproperties) | [getProperty](/solutions/geotoolkit/geotoolkit_js/apis/classes/geotoolkit.scene.node.node#getproperty) |
| [getPropertyKeys](/solutions/geotoolkit/geotoolkit_js/apis/classes/geotoolkit.scene.node.node#getpropertykeys) | [getRoot](/solutions/geotoolkit/geotoolkit_js/apis/classes/geotoolkit.scene.node.node#getroot) | [getSceneTransform](/solutions/geotoolkit/geotoolkit_js/apis/classes/geotoolkit.scene.node.node#getscenetransform) |
| [getTag](/solutions/geotoolkit/geotoolkit_js/apis/classes/geotoolkit.scene.node.node#gettag) | [getVisible](/solutions/geotoolkit/geotoolkit_js/apis/classes/geotoolkit.scene.node.node#getvisible) | [getWorldTransform](/solutions/geotoolkit/geotoolkit_js/apis/classes/geotoolkit.scene.node.node#getworldtransform) |
| [getZIndex](/solutions/geotoolkit/geotoolkit_js/apis/classes/geotoolkit.scene.node.node#getzindex) | [hasCssClass](/solutions/geotoolkit/geotoolkit_js/apis/classes/geotoolkit.scene.node.node#hascssclass) | [hasEventListener](/solutions/geotoolkit/geotoolkit_js/apis/classes/geotoolkit.scene.node.node#haseventlistener) |
| [invalidate](/solutions/geotoolkit/geotoolkit_js/apis/classes/geotoolkit.scene.node.node#invalidate) | [invalidateParent](/solutions/geotoolkit/geotoolkit_js/apis/classes/geotoolkit.scene.node.node#invalidateparent) | [isDisposed](/solutions/geotoolkit/geotoolkit_js/apis/classes/geotoolkit.scene.node.node#isdisposed) |
| [isEventPropagationEnabled](/solutions/geotoolkit/geotoolkit_js/apis/classes/geotoolkit.scene.node.node#iseventpropagationenabled) | [isNotificationEnabled](/solutions/geotoolkit/geotoolkit_js/apis/classes/geotoolkit.scene.node.node#isnotificationenabled) | [isSelectable](/solutions/geotoolkit/geotoolkit_js/apis/classes/geotoolkit.scene.node.node#isselectable) |
| [isSilent](/solutions/geotoolkit/geotoolkit_js/apis/classes/geotoolkit.scene.node.node#issilent) | [notify](/solutions/geotoolkit/geotoolkit_js/apis/classes/geotoolkit.scene.node.node#notify) | [off](/solutions/geotoolkit/geotoolkit_js/apis/classes/geotoolkit.scene.node.node#off) |
| [on](/solutions/geotoolkit/geotoolkit_js/apis/classes/geotoolkit.scene.node.node#on) | [onParentChanged](/solutions/geotoolkit/geotoolkit_js/apis/classes/geotoolkit.scene.node.node#onparentchanged) | [onVisibilityChanged](/solutions/geotoolkit/geotoolkit_js/apis/classes/geotoolkit.scene.node.node#onvisibilitychanged) |
| [removeCssClass](/solutions/geotoolkit/geotoolkit_js/apis/classes/geotoolkit.scene.node.node#removecssclass) | [removeInvalidateHandler](/solutions/geotoolkit/geotoolkit_js/apis/classes/geotoolkit.scene.node.node#removeinvalidatehandler) | [render](/solutions/geotoolkit/geotoolkit_js/apis/classes/geotoolkit.scene.node.node#render) |
| [renderAsync](/solutions/geotoolkit/geotoolkit_js/apis/classes/geotoolkit.scene.node.node#renderasync) | [setCssClass](/solutions/geotoolkit/geotoolkit_js/apis/classes/geotoolkit.scene.node.node#setcssclass) | [setId](/solutions/geotoolkit/geotoolkit_js/apis/classes/geotoolkit.scene.node.node#setid) |
| [setName](/solutions/geotoolkit/geotoolkit_js/apis/classes/geotoolkit.scene.node.node#setname) | [setNotification](/solutions/geotoolkit/geotoolkit_js/apis/classes/geotoolkit.scene.node.node#setnotification) | [setParent](/solutions/geotoolkit/geotoolkit_js/apis/classes/geotoolkit.scene.node.node#setparent) |
| [setProperties](/solutions/geotoolkit/geotoolkit_js/apis/classes/geotoolkit.scene.node.node#setproperties) | [setProperty](/solutions/geotoolkit/geotoolkit_js/apis/classes/geotoolkit.scene.node.node#setproperty) | [setSelectable](/solutions/geotoolkit/geotoolkit_js/apis/classes/geotoolkit.scene.node.node#setselectable) |
| [setSilent](/solutions/geotoolkit/geotoolkit_js/apis/classes/geotoolkit.scene.node.node#setsilent) | [setTag](/solutions/geotoolkit/geotoolkit_js/apis/classes/geotoolkit.scene.node.node#settag) | [setVisible](/solutions/geotoolkit/geotoolkit_js/apis/classes/geotoolkit.scene.node.node#setvisible) |
| [setZIndex](/solutions/geotoolkit/geotoolkit_js/apis/classes/geotoolkit.scene.node.node#setzindex) | [toString](/solutions/geotoolkit/geotoolkit_js/apis/classes/geotoolkit.scene.node.node#tostring) | [updateSceneTransformation](/solutions/geotoolkit/geotoolkit_js/apis/classes/geotoolkit.scene.node.node#updatescenetransformation) |
| [updateState](/solutions/geotoolkit/geotoolkit_js/apis/classes/geotoolkit.scene.node.node#updatestate) | [updateTimeStamp](/solutions/geotoolkit/geotoolkit_js/apis/classes/geotoolkit.scene.node.node#updatetimestamp) | [enableSceneGraphNotification](/solutions/geotoolkit/geotoolkit_js/apis/classes/geotoolkit.scene.node.node#enablescenegraphnotification) |
| [findParent](/solutions/geotoolkit/geotoolkit_js/apis/classes/geotoolkit.scene.node.node#findparent) | [getClassName](/solutions/geotoolkit/geotoolkit_js/apis/classes/geotoolkit.scene.node.node#getclassname-1) | [isSceneGraphNotificationEnabled](/solutions/geotoolkit/geotoolkit_js/apis/classes/geotoolkit.scene.node.node#isscenegraphnotificationenabled) |


Css Properties
| Name  | Type  | Description |
|  --- | --- | --- |
| `cssclass` | `string` | The css class name of this node |
| `id` | `string | number` | Id of the node, its a unique identifier |
| `name` | `string` | Name of the node. It is often used for debugging purposes or to simplify queries |
| `selectable` | `boolean` | Selectable node, a boolean to determine if selection should consider this node |
| `tag` | `any` | Custom information associated with node. It is a user object which can be used by client code to store information or attach an application object to the shape |
| `visible` | `boolean` | Visibility of the node, a boolean to determine if the node should be rendered or not |
| `z-index` | `number` | Define node z-index |


## Contents

Constructors
#### new Node(options)

• `Protected` **new Node**(`options?`)

Create Node

#### Parameters

| Name  | Type  | Description  |
|  --- | --- | --- |
| `Optional` `options` | [`Options`](/solutions/geotoolkit/geotoolkit_js/apis/modules/geotoolkit.scene.node#node#options) | options |


#### Overrides

EventDispatcher.constructor

Methods
#### addCssClass

▸ **addCssClass**(`cssclass`): [`Node`](/solutions/geotoolkit/geotoolkit_js/apis/classes/geotoolkit.scene.node.node)

Adds new css class to node

#### Parameters

| Name  | Type  | Description  |
|  --- | --- | --- |
| `cssclass` | `string` | `string`[] | css class name('s) |


#### Returns

[`Node`](/solutions/geotoolkit/geotoolkit_js/apis/classes/geotoolkit.scene.node.node)

this

#### addInvalidateHandler

▸ **addInvalidateHandler**(`handler`): [`Node`](/solutions/geotoolkit/geotoolkit_js/apis/classes/geotoolkit.scene.node.node)

Add invalidate handler

**`Deprecated`**

since 4.0, use Node.on instead

#### Parameters

| Name  | Type  | Description  |
|  --- | --- | --- |
| `handler` | `Function` | handler to be notified about invalidation |


#### Returns

[`Node`](/solutions/geotoolkit/geotoolkit_js/apis/classes/geotoolkit.scene.node.node)

this

#### checkCollision

▸ **checkCollision**(`context`): `boolean`

Check if this node is within the area being rendered by the context

#### Parameters

| Name  | Type  | Description  |
|  --- | --- | --- |
| `context` | [`RenderingContext`](/solutions/geotoolkit/geotoolkit_js/apis/classes/geotoolkit.renderer.renderingcontext.renderingcontext) | Rendering Context |


#### Returns

`boolean`

true if object is inside of renderable area

#### clone

▸ **clone**(): [`Node`](/solutions/geotoolkit/geotoolkit_js/apis/classes/geotoolkit.scene.node.node)

All subclasses should override copyConstructor or provide custom implementation for this method

#### Returns

[`Node`](/solutions/geotoolkit/geotoolkit_js/apis/classes/geotoolkit.scene.node.node)

clone

#### connectStyle

▸ **connectStyle**(`style`, `type`, `callback`): [`Node`](/solutions/geotoolkit/geotoolkit_js/apis/classes/geotoolkit.scene.node.node)

Connects style.<br>
<br>
This convenience method subscribes a listener to given style for the specified type.<br>
And automatically un-subscribes listener if node is disposed to prevent memory leaks

#### Parameters

| Name  | Type  | Description  |
|  --- | --- | --- |
| `style` | [`EventDispatcher`](/solutions/geotoolkit/geotoolkit_js/apis/classes/geotoolkit.util.eventdispatcher.eventdispatcher) | connect style |
| `type` | `string` | type of event or property |
| `callback` | [`AttributeCallback`](/solutions/geotoolkit/geotoolkit_js/apis/modules/geotoolkit.attributes#istylelistener#attributecallback)<[`EventDispatcher`](/solutions/geotoolkit/geotoolkit_js/apis/classes/geotoolkit.util.eventdispatcher.eventdispatcher)&gt; | function to be called |


#### Returns

[`Node`](/solutions/geotoolkit/geotoolkit_js/apis/classes/geotoolkit.scene.node.node)

this

#### Implementation of

[IStyleListener](/solutions/geotoolkit/geotoolkit_js/apis/classes/geotoolkit.attributes.iattributenode.istylelistener).[connectStyle](/solutions/geotoolkit/geotoolkit_js/apis/classes/geotoolkit.attributes.iattributenode.istylelistener#connectstyle)

#### copyConstructor

▸ `Protected` **copyConstructor**(`src`, `deepCopy?`): [`Node`](/solutions/geotoolkit/geotoolkit_js/apis/classes/geotoolkit.scene.node.node)

Copy constructor function.<br>
Function used as part of the cloning mechanism.<br>
Implementations should copy the given instance state to this instance.<br>

#### Parameters

| Name  | Type  | Description  |
|  --- | --- | --- |
| `src` | [`Node`](/solutions/geotoolkit/geotoolkit_js/apis/classes/geotoolkit.scene.node.node) | Source to copy from |
| `Optional` `deepCopy` | `boolean` | deep copy |


#### Returns

[`Node`](/solutions/geotoolkit/geotoolkit_js/apis/classes/geotoolkit.scene.node.node)

this

#### disconnectStyle

▸ **disconnectStyle**(`style`, `type`, `callback`): [`Node`](/solutions/geotoolkit/geotoolkit_js/apis/classes/geotoolkit.scene.node.node)

Disconnect style
<br>
This convenience method un-subscribes a listener to given style for the specified type.<br>

#### Parameters

| Name  | Type  | Description  |
|  --- | --- | --- |
| `style` | [`EventDispatcher`](/solutions/geotoolkit/geotoolkit_js/apis/classes/geotoolkit.util.eventdispatcher.eventdispatcher) | connect style |
| `type` | `string` | type of event or property |
| `callback` | [`AttributeCallback`](/solutions/geotoolkit/geotoolkit_js/apis/modules/geotoolkit.attributes#istylelistener#attributecallback)<[`EventDispatcher`](/solutions/geotoolkit/geotoolkit_js/apis/classes/geotoolkit.util.eventdispatcher.eventdispatcher)&gt; | function to be called |


#### Returns

[`Node`](/solutions/geotoolkit/geotoolkit_js/apis/classes/geotoolkit.scene.node.node)

this

#### Implementation of

[IStyleListener](/solutions/geotoolkit/geotoolkit_js/apis/classes/geotoolkit.attributes.iattributenode.istylelistener).[disconnectStyle](/solutions/geotoolkit/geotoolkit_js/apis/classes/geotoolkit.attributes.iattributenode.istylelistener#disconnectstyle)

#### dispose

▸ **dispose**(): `void`

Disposes this node, once disposes a node should not be used anymore.<br>
Clear all listeners, and disconnect styles to avoid memory leaks.<br>
Also aggressively 'cleanup' this node by setting some of its members to null.

#### Returns

`void`

#### Overrides

[EventDispatcher](/solutions/geotoolkit/geotoolkit_js/apis/classes/geotoolkit.util.eventdispatcher.eventdispatcher).[dispose](/solutions/geotoolkit/geotoolkit_js/apis/classes/geotoolkit.util.eventdispatcher.eventdispatcher#dispose)

#### enableEventPropagation

▸ **enableEventPropagation**(`enable`): [`Node`](/solutions/geotoolkit/geotoolkit_js/apis/classes/geotoolkit.scene.node.node)

Enable event propagation from the node hierarchy from bottom to top
<p>
This option is similar to DOM Event bubbling, which allows
to get any event from child node. By default it is disabled
for better performance.
</p>

**`Example`**

```ts
import {Group} from '@int/geotoolkit/scene/Group';
import {Events as SceneEvents} from '@int/geotoolkit/scene/Node';
const parentGroup = new Group()
.setName('ParentGroup')
.enableEventPropagation(true);
const childGroup = new Group()
.setName('ChildGroup');

parentGroup.addChild(childGroup);
parentGroup.on(SceneEvents.Invalidate, (eventName, sender, args) =&gt; {
// Got notifications from all children of parent group
});
childGroup.invalidate();
```

#### Parameters

| Name  | Type  | Description  |
|  --- | --- | --- |
| `enable` | `boolean` | enable |


#### Returns

[`Node`](/solutions/geotoolkit/geotoolkit_js/apis/classes/geotoolkit.scene.node.node)

this

#### execute

▸ **execute**(`delegate`): [`Node`](/solutions/geotoolkit/geotoolkit_js/apis/classes/geotoolkit.scene.node.node)

Executes delegate and return the result. It allows us to keep all initialization calls in one place, <br>
and we do not need to scroll up or down in IDE to find how and where it was initialized.

**`Example`**

```ts
// All setters (.setName() for example) returns reference to the this.
// In order to modify inner object like LineStyle or Pattern, to get this object (property) we should call getter to get object reference.
// Then modify it as shown below in Option 1 or you can use execute methods shown in Option 2.
import {Group} from '@int/geotoolkit/scene/Group';
import {Rect} from '@int/geotoolkit/util/Rect';
// Option 1
const group = new Group()
.setName('MyGroup')
.setBounds(new Rect(0, 0, 42, 16))
.enableClipping(true)
.setTag({'type': 'sometype'});

group.getLineStyle().setPattern('pattern');
return group;

// Options 2 ( using execute method )
return group
.execute(function () {
this.getLineStyle()
.setPattern("pattern");
});
```

#### Parameters

| Name  | Type  | Description  |
|  --- | --- | --- |
| `delegate` | (`this`: [`Node`](/solutions/geotoolkit/geotoolkit_js/apis/classes/geotoolkit.scene.node.node)) => `void` | Function to execute |


#### Returns

[`Node`](/solutions/geotoolkit/geotoolkit_js/apis/classes/geotoolkit.scene.node.node)

The result if any or this

▸ **execute**<`T`&gt;(`delegate`): `T`

#### Type parameters

| Name |
|  --- |
| `T` |


#### Parameters

| Name  | Type  |
|  --- | --- |
| `delegate` | (`this`: [`Node`](/solutions/geotoolkit/geotoolkit_js/apis/classes/geotoolkit.scene.node.node)) => `T` |


#### Returns

`T`

#### getClassName

▸ **getClassName**(): `string`

#### Returns

`string`

#### Inherited from

[EventDispatcher](/solutions/geotoolkit/geotoolkit_js/apis/classes/geotoolkit.util.eventdispatcher.eventdispatcher).[getClassName](/solutions/geotoolkit/geotoolkit_js/apis/classes/geotoolkit.util.eventdispatcher.eventdispatcher#getclassname)

#### getCssClass

▸ **getCssClass**(): `string`

Returns css class name to be used to apply CSS style

#### Returns

`string`

the css class name

#### getCssClasses

▸ **getCssClasses**(): `string`[]

Gets list of css class names which applied to this node

#### Returns

`string`[]

#### getId

▸ **getId**(): `string` | `number`

Returns the associated identifier of the node

#### Returns

`string` | `number`

The node's id

#### getName

▸ **getName**(): `string`

Returns the node name

#### Returns

`string`

The node name

#### getParent

▸ **getParent**(): [`Node`](/solutions/geotoolkit/geotoolkit_js/apis/classes/geotoolkit.scene.node.node)

Return parent node

#### Returns

[`Node`](/solutions/geotoolkit/geotoolkit_js/apis/classes/geotoolkit.scene.node.node)

parent node

#### getProperties

▸ **getProperties**(`context?`): [`Options`](/solutions/geotoolkit/geotoolkit_js/apis/modules/geotoolkit.scene.node#node#options)

Gets all the properties pertaining to this object

#### Parameters

| Name  | Type  | Description  |
|  --- | --- | --- |
| `Optional` `context` | [`ISerializationContext`](/solutions/geotoolkit/geotoolkit_js/apis/classes/geotoolkit.persistence.iserializationcontext.iserializationcontext) | serialization context |


#### Returns

[`Options`](/solutions/geotoolkit/geotoolkit_js/apis/modules/geotoolkit.scene.node#node#options)

An object containing the properties to set

#### getProperty

▸ **getProperty**(`name`): `any`

Gets dynamic property by name. These properties can be
used as a property bags

#### Parameters

| Name  | Type  | Description  |
|  --- | --- | --- |
| `name` | `string` | property name |


#### Returns

`any`

#### getPropertyKeys

▸ **getPropertyKeys**(): `string`[]

Returns known properties keys

#### Returns

`string`[]

#### getRoot

▸ **getRoot**(): [`Node`](/solutions/geotoolkit/geotoolkit_js/apis/classes/geotoolkit.scene.node.node)

Returns root node. <br>
If node doesn't have parent then it returns itself.

#### Returns

[`Node`](/solutions/geotoolkit/geotoolkit_js/apis/classes/geotoolkit.scene.node.node)

the root node

#### getSceneTransform

▸ **getSceneTransform**(): [`Transformation`](/solutions/geotoolkit/geotoolkit_js/apis/classes/geotoolkit.util.transformation.transformation)

Returns transformation from node to root scene

#### Returns

[`Transformation`](/solutions/geotoolkit/geotoolkit_js/apis/classes/geotoolkit.util.transformation.transformation)

a transformation from node to root scene

#### getTag

▸ **getTag**(): `any`

Returns the object associated with the node by user.

#### Returns

`any`

The node's user-object

#### getVisible

▸ **getVisible**(): `boolean`

Return visibility of the node

#### Returns

`boolean`

true if node is visible

#### getWorldTransform

▸ **getWorldTransform**(): [`Transformation`](/solutions/geotoolkit/geotoolkit_js/apis/classes/geotoolkit.util.transformation.transformation)

<code>getWorldTransform</code> retrieves the local transformation
of the inner node coordinates to parent coordinates.

#### Returns

[`Transformation`](/solutions/geotoolkit/geotoolkit_js/apis/classes/geotoolkit.util.transformation.transformation)

the world transform.

#### getZIndex

▸ **getZIndex**(): `number`

Returns node z-index (null if not set)

#### Returns

`number`

#### hasCssClass

▸ **hasCssClass**(`cssClass`): `boolean`

Check if node has specified css class

#### Parameters

| Name  | Type  | Description  |
|  --- | --- | --- |
| `cssClass` | `string` | css class name |


#### Returns

`boolean`

#### hasEventListener

▸ **hasEventListener**(`type`, `callback?`): `boolean`

Check if a list of event listeners for this type contains this listener

#### Parameters

| Name  | Type  | Description  |
|  --- | --- | --- |
| `type` | `string` | type of event or property |
| `Optional` `callback` | `Function` | to be called, if null, check if any callback is registered |


#### Returns

`boolean`

#### Inherited from

[EventDispatcher](/solutions/geotoolkit/geotoolkit_js/apis/classes/geotoolkit.util.eventdispatcher.eventdispatcher).[hasEventListener](/solutions/geotoolkit/geotoolkit_js/apis/classes/geotoolkit.util.eventdispatcher.eventdispatcher#haseventlistener)

#### invalidate

▸ **invalidate**(`bounds?`, `force?`): [`Node`](/solutions/geotoolkit/geotoolkit_js/apis/classes/geotoolkit.scene.node.node)

Invalidate area of the shape.  This method invalidates parent by default. invalidated from parent to root node.

#### Parameters

| Name  | Type  | Description  |
|  --- | --- | --- |
| `Optional` `bounds` | [`Rect`](/solutions/geotoolkit/geotoolkit_js/apis/classes/geotoolkit.util.rect.rect) | bounds of the invalid rectangle in the inner node coordinates |
| `Optional` `force` | `boolean` | true if parent should be invalidated immediately if null is provided then cache (if any will be completely refreshed) otherwise only specified rect or node.bounds will be refreshed |


#### Returns

[`Node`](/solutions/geotoolkit/geotoolkit_js/apis/classes/geotoolkit.scene.node.node)

this

#### invalidateParent

▸ `Protected` **invalidateParent**(`bounds?`, `force?`): [`Node`](/solutions/geotoolkit/geotoolkit_js/apis/classes/geotoolkit.scene.node.node)

Invalidate parent and notify all listeners.
NOTE: Don't keep arguments of the event, because instance can be changed

**`Fires`**

[Events.Invalidate](/solutions/geotoolkit/geotoolkit_js/apis/modules/geotoolkit.scene.node#events#invalidate)

#### Parameters

| Name  | Type  | Description  |
|  --- | --- | --- |
| `Optional` `bounds` | [`Rect`](/solutions/geotoolkit/geotoolkit_js/apis/classes/geotoolkit.util.rect.rect) | bounds of the invalid rectangle in the inner node coordinates |
| `Optional` `force` | `boolean` | force rendering |


#### Returns

[`Node`](/solutions/geotoolkit/geotoolkit_js/apis/classes/geotoolkit.scene.node.node)

this

#### isDisposed

▸ **isDisposed**(): `boolean`

Returns whether this object has been disposed

#### Returns

`boolean`

#### Inherited from

[EventDispatcher](/solutions/geotoolkit/geotoolkit_js/apis/classes/geotoolkit.util.eventdispatcher.eventdispatcher).[isDisposed](/solutions/geotoolkit/geotoolkit_js/apis/classes/geotoolkit.util.eventdispatcher.eventdispatcher#isdisposed)

#### isEventPropagationEnabled

▸ **isEventPropagationEnabled**(): `boolean`

Return true if event propagation is enabled from child to parent

#### Returns

`boolean`

#### isNotificationEnabled

▸ **isNotificationEnabled**(): `boolean`

return state of notification

#### Returns

`boolean`

current notification state

#### isSelectable

▸ **isSelectable**(): `boolean`

Returns true if node can be picked/selected.

#### Returns

`boolean`

The selectable flag

#### isSilent

▸ **isSilent**(): `boolean`

Return true if the event dispatcher doesn't notify any events

#### Returns

`boolean`

#### Inherited from

[EventDispatcher](/solutions/geotoolkit/geotoolkit_js/apis/classes/geotoolkit.util.eventdispatcher.eventdispatcher).[isSilent](/solutions/geotoolkit/geotoolkit_js/apis/classes/geotoolkit.util.eventdispatcher.eventdispatcher#issilent)

#### notify

▸ **notify**<`E`&gt;(`event`, `source`, `args?`): [`Node`](/solutions/geotoolkit/geotoolkit_js/apis/classes/geotoolkit.scene.node.node)

Notify listeners of the Node

#### Type parameters

| Name | Type |
|  --- | --- |
| `E` | extends `string` |


#### Parameters

| Name  | Type  | Description  |
|  --- | --- | --- |
| `event` | `E` | type of event |
| `source` | [`Node`](/solutions/geotoolkit/geotoolkit_js/apis/classes/geotoolkit.scene.node.node) | source who called the event |
| `Optional` `args` | [`EventMap`](/solutions/geotoolkit/geotoolkit_js/apis/modules/geotoolkit.scene.node#node#eventmap)[`E`] | event arguments |


#### Returns

[`Node`](/solutions/geotoolkit/geotoolkit_js/apis/classes/geotoolkit.scene.node.node)

this

#### Overrides

[EventDispatcher](/solutions/geotoolkit/geotoolkit_js/apis/classes/geotoolkit.util.eventdispatcher.eventdispatcher).[notify](/solutions/geotoolkit/geotoolkit_js/apis/classes/geotoolkit.util.eventdispatcher.eventdispatcher#notify)

#### off

▸ **off**<`E`&gt;(`type?`, `callback?`): [`Node`](/solutions/geotoolkit/geotoolkit_js/apis/classes/geotoolkit.scene.node.node)

Detach listener on event.
Calling .off() with no arguments removes all attached listeners.
Calling .off(type) with no callback removes all attached listeners for specific type.

#### Type parameters

| Name | Type |
|  --- | --- |
| `E` | extends `string` |


#### Parameters

| Name  | Type  | Description  |
|  --- | --- | --- |
| `Optional` `type` | `E` | type of the event |
| `Optional` `callback` | (`eventType`: `E`, `sender`: [`Node`](/solutions/geotoolkit/geotoolkit_js/apis/classes/geotoolkit.scene.node.node), `args`: [`EventMap`](/solutions/geotoolkit/geotoolkit_js/apis/modules/geotoolkit.scene.node#node#eventmap)[`E`]) => `void` | function to be called |


#### Returns

[`Node`](/solutions/geotoolkit/geotoolkit_js/apis/classes/geotoolkit.scene.node.node)

this

#### Overrides

[EventDispatcher](/solutions/geotoolkit/geotoolkit_js/apis/classes/geotoolkit.util.eventdispatcher.eventdispatcher).[off](/solutions/geotoolkit/geotoolkit_js/apis/classes/geotoolkit.util.eventdispatcher.eventdispatcher#off)

#### on

▸ **on**<`E`&gt;(`type`, `callback`): [`Node`](/solutions/geotoolkit/geotoolkit_js/apis/classes/geotoolkit.scene.node.node)

Attach listener on event that will be called whenever the specified event is delivered to the target
<p>
If the callback function is already in the list of event listeners for this target,
the function is not added a second time.
</p>
<p>
If a particular anonymous function is in the list of event listeners registered for a
certain target, and then later in the code, an identical anonymous function is given
in an "on" call, the second function will also be added to the list of
event listeners for that target.
</p>

#### Type parameters

| Name | Type |
|  --- | --- |
| `E` | extends `string` |


#### Parameters

| Name  | Type  | Description  |
|  --- | --- | --- |
| `type` | `E` | type of event or property |
| `callback` | (`eventType`: `E`, `sender`: [`Node`](/solutions/geotoolkit/geotoolkit_js/apis/classes/geotoolkit.scene.node.node), `args`: [`EventMap`](/solutions/geotoolkit/geotoolkit_js/apis/modules/geotoolkit.scene.node#node#eventmap)[`E`]) => `void` | to be called |


#### Returns

[`Node`](/solutions/geotoolkit/geotoolkit_js/apis/classes/geotoolkit.scene.node.node)

this

#### Overrides

[EventDispatcher](/solutions/geotoolkit/geotoolkit_js/apis/classes/geotoolkit.util.eventdispatcher.eventdispatcher).[on](/solutions/geotoolkit/geotoolkit_js/apis/classes/geotoolkit.util.eventdispatcher.eventdispatcher#on)

#### onParentChanged

▸ `Protected` **onParentChanged**(`node`): [`Node`](/solutions/geotoolkit/geotoolkit_js/apis/classes/geotoolkit.scene.node.node)

This method is called when parent changes. Do not call it directly.

#### Parameters

| Name  | Type  | Description  |
|  --- | --- | --- |
| `node` | [`Node`](/solutions/geotoolkit/geotoolkit_js/apis/classes/geotoolkit.scene.node.node) | node to change parent |


#### Returns

[`Node`](/solutions/geotoolkit/geotoolkit_js/apis/classes/geotoolkit.scene.node.node)

this

#### onVisibilityChanged

▸ `Protected` **onVisibilityChanged**(): `void`

This method is called if visibility is changed.  Send event [Events.VisibilityChanged](/solutions/geotoolkit/geotoolkit_js/apis/modules/geotoolkit.scene.node#events#visibilitychanged)

#### Returns

`void`

#### removeCssClass

▸ **removeCssClass**(`cssclass`): [`Node`](/solutions/geotoolkit/geotoolkit_js/apis/classes/geotoolkit.scene.node.node)

Removes css class from node

#### Parameters

| Name  | Type  | Description  |
|  --- | --- | --- |
| `cssclass` | `string` | `string`[] | css class name('s) |


#### Returns

[`Node`](/solutions/geotoolkit/geotoolkit_js/apis/classes/geotoolkit.scene.node.node)

this

#### removeInvalidateHandler

▸ **removeInvalidateHandler**(`handler`): [`Node`](/solutions/geotoolkit/geotoolkit_js/apis/classes/geotoolkit.scene.node.node)

Remove invalidate handler

**`Deprecated`**

since 4.0, use Node.off instead

#### Parameters

| Name  | Type  | Description  |
|  --- | --- | --- |
| `handler` | `Function` | handler to be notified about invalidation |


#### Returns

[`Node`](/solutions/geotoolkit/geotoolkit_js/apis/classes/geotoolkit.scene.node.node)

this

#### render

▸ `Abstract` **render**(`context`): `void`

Renders node

#### Parameters

| Name  | Type  | Description  |
|  --- | --- | --- |
| `context` | [`RenderingContext`](/solutions/geotoolkit/geotoolkit_js/apis/classes/geotoolkit.renderer.renderingcontext.renderingcontext) | The rendering context to be used to draw the node |


#### Returns

`void`

#### renderAsync

▸ **renderAsync**(`context`, `callback`): `void`

Render node in asynchronous mode. Default implementation creates call method "render" inside

#### Parameters

| Name  | Type  | Description  |
|  --- | --- | --- |
| `context` | [`RenderingContext`](/solutions/geotoolkit/geotoolkit_js/apis/classes/geotoolkit.renderer.renderingcontext.renderingcontext) | The rendering context to be used to draw the node |
| `callback` | () => `void` | callback function |


#### Returns

`void`

#### setCssClass

▸ **setCssClass**(`name`): [`Node`](/solutions/geotoolkit/geotoolkit_js/apis/classes/geotoolkit.scene.node.node)

Sets css class name of the node to be used to apply CSS style

#### Parameters

| Name  | Type  | Description  |
|  --- | --- | --- |
| `name` | `string` | css class name of the node |


#### Returns

[`Node`](/solutions/geotoolkit/geotoolkit_js/apis/classes/geotoolkit.scene.node.node)

this

#### setId

▸ **setId**(`id`): [`Node`](/solutions/geotoolkit/geotoolkit_js/apis/classes/geotoolkit.scene.node.node)

Allows the user to associate any identifier

#### Parameters

| Name  | Type  | Description  |
|  --- | --- | --- |
| `id` | `string` | `number` | object id |


#### Returns

[`Node`](/solutions/geotoolkit/geotoolkit_js/apis/classes/geotoolkit.scene.node.node)

this

#### setName

▸ **setName**(`name`): [`Node`](/solutions/geotoolkit/geotoolkit_js/apis/classes/geotoolkit.scene.node.node)

Sets name of the node

#### Parameters

| Name  | Type  | Description  |
|  --- | --- | --- |
| `name` | `string` | The node name |


#### Returns

[`Node`](/solutions/geotoolkit/geotoolkit_js/apis/classes/geotoolkit.scene.node.node)

this

#### setNotification

▸ **setNotification**(`notify`, `force?`): [`Node`](/solutions/geotoolkit/geotoolkit_js/apis/classes/geotoolkit.scene.node.node)

set notification state

#### Parameters

| Name  | Type  | Description  |
|  --- | --- | --- |
| `notify` | `boolean` | flag set to invalidate parent or not |
| `Optional` `force` | `boolean` | true if parent should be invalidated immediately |


#### Returns

[`Node`](/solutions/geotoolkit/geotoolkit_js/apis/classes/geotoolkit.scene.node.node)

this

#### setParent

▸ **setParent**(`parent`): [`Node`](/solutions/geotoolkit/geotoolkit_js/apis/classes/geotoolkit.scene.node.node)

Sets parent node. Don't call this method directly.
It is internal method.

#### Parameters

| Name  | Type  | Description  |
|  --- | --- | --- |
| `parent` | [`Node`](/solutions/geotoolkit/geotoolkit_js/apis/classes/geotoolkit.scene.node.node) | a parent node |


#### Returns

[`Node`](/solutions/geotoolkit/geotoolkit_js/apis/classes/geotoolkit.scene.node.node)

this

#### setProperties

▸ **setProperties**(`properties?`, `context?`): [`Node`](/solutions/geotoolkit/geotoolkit_js/apis/classes/geotoolkit.scene.node.node)

Sets all the properties pertaining to this object

#### Parameters

| Name  | Type  | Description  |
|  --- | --- | --- |
| `Optional` `properties` | [`Options`](/solutions/geotoolkit/geotoolkit_js/apis/modules/geotoolkit.scene.node#node#options) | An object containing the properties to set |
| `Optional` `context` | [`IDeserializationContext`](/solutions/geotoolkit/geotoolkit_js/apis/classes/geotoolkit.persistence.ideserializationcontext.ideserializationcontext) | deserialization context |


#### Returns

[`Node`](/solutions/geotoolkit/geotoolkit_js/apis/classes/geotoolkit.scene.node.node)

this

#### setProperty

▸ **setProperty**(`name`, `value`): [`Node`](/solutions/geotoolkit/geotoolkit_js/apis/classes/geotoolkit.scene.node.node)

Sets dynamic property by name

#### Parameters

| Name  | Type  | Description  |
|  --- | --- | --- |
| `name` | `string` | property name |
| `value` | `any` | property value |


#### Returns

[`Node`](/solutions/geotoolkit/geotoolkit_js/apis/classes/geotoolkit.scene.node.node)

this

#### setSelectable

▸ **setSelectable**(`selectable`): [`Node`](/solutions/geotoolkit/geotoolkit_js/apis/classes/geotoolkit.scene.node.node)

Allows to select node. If node is not selectable then child node is
not selectable.

#### Parameters

| Name  | Type  | Description  |
|  --- | --- | --- |
| `selectable` | `boolean` | flag to allow node selection |


#### Returns

[`Node`](/solutions/geotoolkit/geotoolkit_js/apis/classes/geotoolkit.scene.node.node)

this

#### setSilent

▸ **setSilent**(`bool`): [`Node`](/solutions/geotoolkit/geotoolkit_js/apis/classes/geotoolkit.scene.node.node)

Set silent mode

#### Parameters

| Name  | Type  | Description  |
|  --- | --- | --- |
| `bool` | `boolean` | flag to enable silent mode |


#### Returns

[`Node`](/solutions/geotoolkit/geotoolkit_js/apis/classes/geotoolkit.scene.node.node)

this

#### Inherited from

[EventDispatcher](/solutions/geotoolkit/geotoolkit_js/apis/classes/geotoolkit.util.eventdispatcher.eventdispatcher).[setSilent](/solutions/geotoolkit/geotoolkit_js/apis/classes/geotoolkit.util.eventdispatcher.eventdispatcher#setsilent)

#### setTag

▸ **setTag**(`tag`): [`Node`](/solutions/geotoolkit/geotoolkit_js/apis/classes/geotoolkit.scene.node.node)

Allows the user to associate any arbitrary object with the node.

#### Parameters

| Name  | Type  | Description  |
|  --- | --- | --- |
| `tag` | `any` | The object to be associated with the node. |


#### Returns

[`Node`](/solutions/geotoolkit/geotoolkit_js/apis/classes/geotoolkit.scene.node.node)

this

#### setVisible

▸ **setVisible**(`value`): [`Node`](/solutions/geotoolkit/geotoolkit_js/apis/classes/geotoolkit.scene.node.node)

Sets visibility of the node.
Send event [Events.VisibilityChanged](/solutions/geotoolkit/geotoolkit_js/apis/modules/geotoolkit.scene.node#events#visibilitychanged)

#### Parameters

| Name  | Type  | Description  |
|  --- | --- | --- |
| `value` | `boolean` | flag specifying visibility of the node |


#### Returns

[`Node`](/solutions/geotoolkit/geotoolkit_js/apis/classes/geotoolkit.scene.node.node)

this

#### setZIndex

▸ **setZIndex**(`value`): [`Node`](/solutions/geotoolkit/geotoolkit_js/apis/classes/geotoolkit.scene.node.node)

Sets z-index for node (set null for default)

#### Parameters

| Name  | Type  | Description  |
|  --- | --- | --- |
| `value` | `number` | index determining node z-position |


#### Returns

[`Node`](/solutions/geotoolkit/geotoolkit_js/apis/classes/geotoolkit.scene.node.node)

this

#### toString

▸ **toString**(): `string`

Returns a string representation of this object (generally the classname)

#### Returns

`string`

A string representation

#### updateSceneTransformation

▸ **updateSceneTransformation**(): [`Node`](/solutions/geotoolkit/geotoolkit_js/apis/classes/geotoolkit.scene.node.node)

Update scene transformation

#### Returns

[`Node`](/solutions/geotoolkit/geotoolkit_js/apis/classes/geotoolkit.scene.node.node)

this

#### updateState

▸ **updateState**(`regions?`, `changes?`): [`Node`](/solutions/geotoolkit/geotoolkit_js/apis/classes/geotoolkit.scene.node.node)

Update state. These methods reset node state and update state for children. this method is useful to
refresh a scene graph

#### Parameters

| Name  | Type  | Description  |
|  --- | --- | --- |
| `Optional` `regions` | [`Rect`](/solutions/geotoolkit/geotoolkit_js/apis/classes/geotoolkit.util.rect.rect)[] | optional array to return invalid rectangles in the parent coordinates |
| `Optional` `changes` | [`StateChanges`](/solutions/geotoolkit/geotoolkit_js/apis/modules/geotoolkit.scene.node#statechanges) | optional parameter to specify a reason of changes |


#### Returns

[`Node`](/solutions/geotoolkit/geotoolkit_js/apis/classes/geotoolkit.scene.node.node)

this

#### updateTimeStamp

▸ `Protected` **updateTimeStamp**(): [`Node`](/solutions/geotoolkit/geotoolkit_js/apis/classes/geotoolkit.scene.node.node)

Update time stamp to indicate that Node or Children has been changed.

#### Returns

[`Node`](/solutions/geotoolkit/geotoolkit_js/apis/classes/geotoolkit.scene.node.node)

this

#### enableSceneGraphNotification

▸ `Static` **enableSceneGraphNotification**(`enabled`): `void`

Enable / disable all notifications

#### Parameters

| Name  | Type  | Description  |
|  --- | --- | --- |
| `enabled` | `boolean` | sets if this object sends notifications |


#### Returns

`void`

#### findParent

▸ `Static` **findParent**<`T`&gt;(`node`, `classType`, `filter?`): `InstanceType`<`T`&gt;

Find root of the node with specified type

#### Type parameters

| Name | Type |
|  --- | --- |
| `T` | extends [`Constructor`](/solutions/geotoolkit/geotoolkit_js/apis/modules/geotoolkit.base#constructor)<`any`&gt; |


#### Parameters

| Name  | Type  | Description  |
|  --- | --- | --- |
| `node` | [`Node`](/solutions/geotoolkit/geotoolkit_js/apis/classes/geotoolkit.scene.node.node) | node to start search |
| `classType` | `T` | type of the class to search for |
| `Optional` `filter` | (`node`: [`Node`](/solutions/geotoolkit/geotoolkit_js/apis/classes/geotoolkit.scene.node.node)) => `boolean` | additional filter to apply |


#### Returns

`InstanceType`<`T`&gt;

▸ `Static` **findParent**(`node`, `classType`, `filter?`): [`Node`](/solutions/geotoolkit/geotoolkit_js/apis/classes/geotoolkit.scene.node.node)

Find root of the node with specified type

#### Parameters

| Name  | Type  | Description  |
|  --- | --- | --- |
| `node` | [`Node`](/solutions/geotoolkit/geotoolkit_js/apis/classes/geotoolkit.scene.node.node) | node to start search |
| `classType` | `string` | interface name to search for |
| `Optional` `filter` | (`node`: [`Node`](/solutions/geotoolkit/geotoolkit_js/apis/classes/geotoolkit.scene.node.node)) => `boolean` | additional filter to apply |


#### Returns

[`Node`](/solutions/geotoolkit/geotoolkit_js/apis/classes/geotoolkit.scene.node.node)

#### getClassName

▸ `Static` **getClassName**(): `string`

#### Returns

`string`

#### Inherited from

[EventDispatcher](/solutions/geotoolkit/geotoolkit_js/apis/classes/geotoolkit.util.eventdispatcher.eventdispatcher).[getClassName](/solutions/geotoolkit/geotoolkit_js/apis/classes/geotoolkit.util.eventdispatcher.eventdispatcher#getclassname-1)

#### isSceneGraphNotificationEnabled

▸ `Static` **isSceneGraphNotificationEnabled**(): `boolean`

Return status of the global notification for all nodes.

#### Returns

`boolean`