Class: annotation

geo. annotation

new geo.annotation(type, args){geo.annotation}

Base annotation class.

Name Type Description
type string

The type of annotation. These should be registered with geo.registerAnnotation and can be listed with geo.listAnnotations.

args geo.annotation.spec optional nullable

Options for the annotation.

Returns:
Type Description
geo.annotation

Type Definitions

geo.annotation.specobject

General annotation specification.

Properties:
Name Type Argument Default Description
name string <optional>

A name for the annotation. This defaults to the type with a unique ID suffixed to it.

layer geo.annotationLayer <optional>

A reference to the controlling layer. This is used for coordinate transforms.

state string <optional>

Initial annotation state. One of the geo.annotation.state values.

showLabel boolean | Array.<string> <optional>
true

true to show the annotation label on annotations in done or edit states. Alternately, a list of states in which to show the label. Falsy to not show the label.

Static Members

staticgeo.annotation.defaultEditHandleStyleobject

These styles are applied to edit handles, and can be overridden by individual annotations.

Default Value:
  • {"fill":true,"fillColor":"","fillOpacity":"","radius":"","scaled":false,"stroke":true,"strokeColor":"","strokeOpacity":1,"strokeWidth":"","rotateHandleOffset":24,"rotateHandleRotation":"","resizeHandleOffset":48,"resizeHandleRotation":"","handles":""}

staticgeo.annotation.statestring

Properties:
Name Type Default Description
create string create
done string done
highlight string highlight
edit string edit

Methods

actions(state){Array.<geo.actionRecord>}

Return actions needed for the specified state of this annotation.

Name Type Description
state string optional

The state to return actions for. Defaults to the current state.

Returns:
Type Description
Array.<geo.actionRecord> A list of actions.

coordinates(gcs){Array.<geo.geoPosition>}

Get coordinates associated with this annotation.

Name Type Description
gcs string | geo.transform | null optional

undefined to use the interface gcs, null to use the map gcs, or any other transform.

Returns:
Type Description
Array.<geo.geoPosition> An array of coordinates.

createStyle()

Calls geo.annotation#style with styleType='createStyle'.

description(arg){this|string}

Get or set the description of this annotation.

Name Type Description
arg string | undefined

If undefined, return the description, otherwise change it.

Returns:
Type Description
this | string The current description or this annotation.

draw(){this}

Draw this annotation. This just updates and draws the parent layer.

Returns:
Type Description
this The annotation.

editHandleStyle()

Calls geo.annotation#style with styleType='editHandleStyle'.

editStyle()

Calls geo.annotation#style with styleType='editStyle'.

features(){array}

Get a list of renderable features for this annotation. The list index is functionally a z-index for the feature. Each entry is a dictionary with the key as the feature name (such as line, quad, or polygon), and the value a dictionary of values to pass to the feature constructor, such as style and coordinates.

Returns:
Type Description
array An array of features.

geojson(gcs, includeCrs){object}

Return the annotation as a geojson object.

Name Type Description
gcs string | geo.transform | null optional

undefined to use the interface gcs, null to use the map gcs, or any other transform.

includeCrs boolean optional

If truthy, include the coordinate system.

Returns:
Type Description
object The annotation as a geojson object, or undefined if it should not be represented (for instance, while it is being created).

highlightHandleStyle()

Calls geo.annotation#style with styleType='highlightHandleStyle'.

id(){number}

Get a unique annotation id.

Returns:
Type Description
number The annotation id.

label(arg, noFallback){this|string}

Get or set the label of this annotation.

Name Type Description
arg string | null | undefined optional

If undefined, return the label, otherwise change it. null to clear the label.

noFallback boolean optional

If not truthy and the label is null, return the name, otherwise return the actual value for label.

Returns:
Type Description
this | string The current label or this annotation.

If the label should be shown, get a record of the label that can be used in a geo.textFeature.

Returns:
Type Description
geo.annotationLayer.labelRecord | undefined A label record, or undefined if it should not be shown.

labelStyle()

Calls geo.annotation#style with styleType='labelStyle'.

Get or set the annotation layer associated with this annotation.

Name Type Description
arg geo.annotationLayer | undefined

if undefined, return the layer, otherwise change it.

Returns:
Type Description
this | geo.annotationLayer the current layer or this annotation.

modified(){this}

Mark this annotation as modified. This just marks the parent layer as modified.

Returns:
Type Description
this The annotation.

mouseClick(evt){boolean|string}

Handle a mouse click on this annotation. If the event is processed, evt.handled should be set to true to prevent further processing.

Name Type Description
evt geo.event

The mouse click event.

Returns:
Type Description
boolean | string true to update the annotation, 'done' if the annotation was completed (changed from create to done state), 'remove' if the annotation should be removed, falsy to not update anything.

mouseClickEdit(evt){boolean|string}

Handle a mouse click on this annotation when in edit mode. If the event is processed, evt.handled should be set to true to prevent further processing.

Name Type Description
evt geo.event

The mouse click event.

Returns:
Type Description
boolean | string true to update the annotation, 'done' if the annotation was completed (changed from create to done state), 'remove' if the annotation should be removed, falsy to not update anything.

mouseMove(evt){boolean}

Handle a mouse move on this annotation.

Name Type Description
evt geo.event

The mouse move event.

Returns:
Type Description
boolean Truthy to update the annotation, falsy to not update anything.

name(arg){this|string}

Get or set the name of this annotation.

Name Type Description
arg string | undefined

If undefined, return the name, otherwise change it. When setting the name, the value is trimmed of whitespace. The name will not be changed to an empty string.

Returns:
Type Description
this | string The current name or this annotation.

options(arg1, arg2){object|this}

Set or get options.

Name Type Description
arg1 string | object optional

If undefined, return the options object. If a string, either set or return the option of that name. If an object, update the options with the object's values.

arg2 object optional

If arg1 is a string and this is defined, set the option to this value.

Fires:
Returns:
Type Description
object | this If options are set, return the annotation, otherwise return the requested option or the set of options.

processAction(evt){boolean|string}

Process any non-edit actions for this annotation.

Name Type Description
evt geo.event

The action event.

Returns:
Type Description
boolean | string true to update the annotation, 'done' if the annotation was completed (changed from create to done state), 'remove' if the annotation should be removed, falsy to not update anything.

processEditAction(evt){boolean}

Process any edit actions for this annotation.

Name Type Description
evt geo.event

The action event.

Returns:
Type Description
boolean true to update the annotation, falsy to not update anything.

selectEditHandle(handle, enable){this}

When an edit handle is selected or deselected (for instance, by moving the mouse on or off of it), mark if it is selected and record the current coordinates.

Name Type Description
handle object

The data for the edit handle.

enable boolean

True to enable the handle, false to disable.

Fires:
Returns:
Type Description
this

state(arg){this|string}

Get or set the state of this annotation.

Name Type Description
arg string | undefined

If undefined, return the state, otherwise change it. This should be one of the geo.annotation.state values.

Fires:
Returns:
Type Description
this | string The current state or this annotation.

style(arg1, arg2, styleType){object|this}

Set or get style.

Name Type Default Description
arg1 string | object optional

If undefined, return the current style object. If a string and arg2 is undefined, return the style associated with the specified key. If a string and arg2 is defined, set the named style to the specified value. Otherwise, extend the current style with the values in the specified object.

arg2 * optional

If arg1 is a string, the new value for that style.

styleType string 'style' optional

The name of the style type, such as createStyle, editStyle, editHandleStyle, labelStyle, or highlightStyle.

Returns:
Type Description
object | this Either the entire style object, the value of a specific style, or the current class instance.

styleForState(state){object}

Return the style dictionary for a particular state.

Name Type Description
state string optional

The state to return styles for. Defaults to the current state.

Returns:
Type Description
object The style object for the state. If there is no such style defined, the default style is used.

type(){string}

Get the type of this annotation.

Returns:
Type Description
string The annotation type.