ReferenceProperty - Cesium Documentation

# ReferenceProperty

#### new ReferenceProperty(targetCollection, targetId, targetPropertyNames)

  A `Property` which transparently links to another property on a provided object.

  Name | Type | Description
  --- | --- | ---
  `targetCollection` | EntityCollection | The entity collection which will be used to resolve the reference.
  `targetId` | String | The id of the entity which is being referenced.
  `targetPropertyNames` | String | The name of the property on the target entity which we will use.

  ##### Example:

      var collection = new Cesium.EntityCollection();

      //Create a new entity and assign a billboard scale.
      var object1 = new Cesium.Entity({id:'object1'});
      object1.billboard = new Cesium.BillboardGraphics();
      object1.billboard.scale = new Cesium.ConstantProperty(2.0);
      collection.add(object1);

      //Create a second entity and reference the scale from the first one.
      var object2 = new Cesium.Entity({id:'object2'});
      object2.model = new Cesium.ModelGraphics();
      object2.model.scale = new Cesium.ReferenceProperty(collection, 'object1', ['billboard', 'scale']);
      collection.add(object2);

      //Create a third object, but use the fromString helper function.
      var object3 = new Cesium.Entity({id:'object3'});
      object3.billboard = new Cesium.BillboardGraphics();
      object3.billboard.scale = Cesium.ReferenceProperty.fromString(collection, 'object1#billboard.scale');
      collection.add(object3);

      //You can refer to an entity with a # or . in id and property names by escaping them.
      var object4 = new Cesium.Entity({id:'#object.4'});
      object4.billboard = new Cesium.BillboardGraphics();
      object4.billboard.scale = new Cesium.ConstantProperty(2.0);
      collection.add(object4);

      var object5 = new Cesium.Entity({id:'object5'});
      object5.billboard = new Cesium.BillboardGraphics();
      object5.billboard.scale = Cesium.ReferenceProperty.fromString(collection, '\\#object\\.4#billboard.scale');
      collection.add(object5);

  Source: DataSources/ReferenceProperty.js, line 106

### Members

#### readonlydefinitionChanged :Event

  Gets the event that is raised whenever the definition of this property changes. The definition is changed whenever the referenced property's definition is changed.
  Source: DataSources/ReferenceProperty.js, line 156

#### readonlyisConstant :Boolean

  Gets a value indicating if this property is constant.
  Source: DataSources/ReferenceProperty.js, line 144

#### readonlyreferenceFrame :ReferenceFrame

  Gets the reference frame that the position is defined in. This property is only valid if the referenced property is a `PositionProperty`.
  Source: DataSources/ReferenceProperty.js, line 168

#### readonlyresolvedProperty :Property

  Gets the resolved instance of the underlying referenced property.
  Source: DataSources/ReferenceProperty.js, line 212

#### readonlytargetCollection :EntityCollection

  Gets the collection containing the entity being referenced.
  Source: DataSources/ReferenceProperty.js, line 190

#### readonlytargetId :String

  Gets the id of the entity being referenced.
  Source: DataSources/ReferenceProperty.js, line 179

#### readonlytargetPropertyNames :Array.<String>

  Gets the array of property names used to retrieve the referenced property.
  Source: DataSources/ReferenceProperty.js, line 201

### Methods

#### staticReferenceProperty.fromString(targetCollection, referenceString)

  Creates a new instance given the entity collection that will be used to resolve it and a string indicating the target entity id and property. The format of the string is "objectId#foo.bar", where # separates the id from property path and . separates sub-properties. If the reference identifier or or any sub-properties contains a # . or \ they must be escaped.

  Name | Type | Description
  --- | --- | ---
  `targetCollection` | Entity |
  `referenceString` | String |

  ##### Returns:

  A new instance of ReferenceProperty.

  ##### Throws:

  - DeveloperError : invalid referenceString.
  Source: DataSources/ReferenceProperty.js, line 232

#### equals(other) → Boolean

  Compares this property to the provided property and returns `true` if they are equal, `false` otherwise.

  Name | Type | Description
  --- | --- | ---
  `other` | Property | optional The other property.

  ##### Returns:

  `true` if left and right are equal, `false` otherwise.
  Source: DataSources/ReferenceProperty.js, line 314

#### getType(time) → String

  Gets the `Material` type at the provided time. This method is only valid if the property being referenced is a `MaterialProperty`.

  Name | Type | Description
  --- | --- | ---
  `time` | JulianDate | The time for which to retrieve the type.

  ##### Returns:

  The type of material.
  Source: DataSources/ReferenceProperty.js, line 303

#### getValue(time, result) → Object

  Gets the value of the property at the provided time.

  Name | Type | Description
  --- | --- | ---
  `time` | JulianDate | The time for which to retrieve the value.
  `result` | Object | optional The object to store the value into, if omitted, a new instance is created and returned.

  ##### Returns:

  The modified result parameter or a new instance if the result parameter was not supplied.
  Source: DataSources/ReferenceProperty.js, line 279

#### getValueInReferenceFrame(time, referenceFrame, result) → Cartesian3

  Gets the value of the property at the provided time and in the provided reference frame. This method is only valid if the property being referenced is a `PositionProperty`.

  Name | Type | Description
  --- | --- | ---
  `time` | JulianDate | The time for which to retrieve the value.
  `referenceFrame` | ReferenceFrame | The desired referenceFrame of the result.
  `result` | Cartesian3 | optional The object to store the value into, if omitted, a new instance is created and returned.

  ##### Returns:

  The modified result parameter or a new instance if the result parameter was not supplied.
  Source: DataSources/ReferenceProperty.js, line 292