Drawable2D is the base class for Drawables representing
GeoObjects as 2D objects.
Drawable2Ds can be scaled and rotated (rotation axis is defined as the normal
on the screen plain, causing a rotation on the screen), and an opacity can be
defined. They also allow for horizontal and vertical anchors, defining the
anchor of Drawable2Ds on the screen relative to the GeoLocations of the
In case a Drawable2D is used for representation of a GeoObject having
multiple GeoLocations, the Drawable2D will represent each GeoLocation
seperately. For example, if a GeoObject has an array of 2 GeoLocations set as
GeoObject.locations, two Drawable2Ds will be visible.
Drawable2D is a superclass for other classes and must not be directly instantiated by the developer.
Destroys the object.
Indicates if the object has already been destroyed.
Flag to enable/disable the Drawable. If the Drawable is disabled, it will never appear on the screen and triggers on this Drawable will never be fired. In case it is enabled, it can be rendered on the screen and fire triggers.
The horizontal anchor defines which pixel (in a horizontal
pixel row) of the Drawable2D will be placed right at the
screen position of the GeoObject represented by the
Valid values are defined in AR.CONST.HORIZONTAL_ANCHOR. For example, if
LEFT is set as horizontal anchor of an ImageDrawable, the image's left edge will
match the calculated position of the Drawable2D.
The default horizontal anchor points is dependent on the concrete class of the Drawable2D.
Flag to enable/disable mirroring for this Drawable. When using the front camera, a mirrored drawable will be rotated 180 degree around its y axis.
Default: true for generic drawables, false for labels and HTMLDrawables
The horizontal offset to the calculated position of the Drawable2D, in SDUs. A positive offsetX causes the Drawable2D to move right, a negative offsetX causes it to move left.
The vertical offset to the calculated position of the Drawable2D, in SDUs. A positive offsetY causes the Drawable2D to move up, a negative offsetY causes it to move down.
A value within the interval from 0.0 to 1.0 defining the opacity of the entire Drawable2D. A value of 0 indicates full transparency, a value of 1 indicates full opacity.
Defines a rotation of the Drawable around the y-axis, specified in degrees. Values will be applied modulo 360. A value of 361 degrees has the same effect as setting the value to 1 degree.
Defines a rotation of the Drawable around the z-axis, specified in degrees. Values will be applied modulo 360. A value of 361 degrees has the same effect as setting the value to 1 degree.
Defines a rotation of the Drawable around the x-axis, specified in degrees. Values will be applied modulo 360. A value of 361 degrees has the same effect as setting the value to 1 degree.
Defines the rotation of the Drawable, in degrees, with the
rotation axis perpendicular to the screen plain. For
example, setting rotation to 45.0 on a square plain image
turns it into a rhombus. A positive value defines a rotation
in clockwise direction, a negative value defines a rotation
in anti-clockwise direction. Rotation can influence the
BoundingRectangle of the Drawable (for example, when a
Rectangle is rotated).
Note, rotation is applied in addition to any roll-tilt-heading rotations defined. Rotation specifies the rotation on the screen, with the origin of the rotation being the center of the Drawable2D, including any offsets etc.
The scale factor for the Drawable2D. A scale factor greater than 1 enlarges the drawable, a scale factor less than 1 shrinks it down. Only values greater than or equal to 0 are allowed. A scale factor of 0 makes the Drawable2D invisible. A scale factor of 2 doubles the size of the Drawable2D, a scale factor of 0.5 halfs the size of the Drawable2D. Scale will influence the BoundingRectangle of the Drawable, but it will not influence the original properties of the Drawable2D.
The vertical anchor defines which pixel (in a vertical pixel
column) of the Drawable2D will be placed right at the screen
position of the GeoObject represented by the Drawable2D.
Valid values are defined in AR.CONST.VERTICAL_ANCHOR. For example, if TOP
is set as horizontal anchor of an Image, the image's top edge will match
the calculated position of the Drawable2D.
The default vertical anchor points is dependent on the concrete class of the Drawable2D.
If multiple Drawable2Ds are assigned to a certain GeoObject, the zOrder defines the drawing order of these Drawables.
In case the Drawables overlap, the Drawable with the higher zOrder value is rendered on top of the others (e.g. a Drawable with
zOrder 1 is rendered on top of a Drawable of zOrder 0, which again is rendered on top of -1).
In case Drawables have the same zOrder defined, and they overlap, the behavior is undefined and might cause unexpected results,
thus it is good practice to define the zOrder for potentially overlapping Drawables.
To specify the rendering order of the Drawables of different GeoObjects, refer to GeoObject.renderingOrder.
Must be a whole number.
When the Drawable is clicked, the system will trigger Drawable.onClick(ARObject). A click on the screen might hit multiple Drawables, thus a click creates a "clicked Drawables-queue", with the uppermost Drawable in the front of the queue. The return value of the function determines if, after the onClick()-Function was executed for this Drawable, the queue shall continue to execute onClick() for the next Drawable in the queue. In case the last Drawable in the queue still requests to continue the click-queue, ARObject.onClick() will be executed. If the queue still continues, context.onScreenClick() will be executed.
The return value of the function determines what happens next. If false, the click-queue should not stop with this Drawable. Thus, the next Drawable's onClick() function will be executed. This is the default value in case no return value is set or the function is not defined for this Drawable. If true, the queue-execution will stop at the current Drawable, underlying Drawables will not receive onClick() calls.
the ARObject the clicked Drawable is attached to.
The trigger is null by default, and will thus result in no action executed when the trigger fires. A developer can add custom functionality by assigning a custom function to onClick.