@vertigis/viewer-spec
Version:
VertiGIS Viewer Specification
1,312 lines (1,311 loc) • 39.7 kB
TypeScript
import type Graphic from "@arcgis/core/Graphic.js";
import type EsriMap from "@arcgis/core/Map";
import type Viewpoint from "@arcgis/core/Viewpoint";
import type Extent from "@arcgis/core/geometry/Extent";
import type Point from "@arcgis/core/geometry/Point";
import type SpatialReference from "@arcgis/core/geometry/SpatialReference";
import type GeographicTransformation from "@arcgis/core/geometry/support/GeographicTransformation";
import type Layer from "@arcgis/core/layers/Layer";
import type { GeometryUnion } from "@arcgis/core/unionTypes.js";
import type { GeometryJsonType } from "@vertigis/arcgis-extensions/json/GeometryJson.js";
import type { OperationalLayerJson } from "@vertigis/arcgis-extensions/json/OperationalLayerJson.js";
import type { SymbolJson } from "@vertigis/arcgis-extensions/json/SymbolJson.js";
import type { LayerPreset } from "@vertigis/arcgis-extensions/layer-preset/LayerPreset";
import type { LayerExtension } from "@vertigis/arcgis-extensions/mapping/LayerExtension";
import type { MapExtension, ViewMode } from "@vertigis/arcgis-extensions/mapping/MapExtension";
import type { Action } from "@vertigis/arcgis-extensions/support/Action";
import type { PortalItemLike } from "@vertigis/arcgis-extensions/utilities/portal";
import type { Command } from "../Command.js";
import { CommandRegistry } from "../CommandRegistry.js";
import type { TimeSpan } from "../DotNetTypes.js";
import type { Event } from "../Event.js";
import { EventRegistry } from "../EventRegistry.js";
import type { Operation } from "../Operation.js";
import { OperationRegistry } from "../OperationRegistry.js";
import type { Features, FeaturesLike, Geometries, GeometryLike, GraphicsLike, HasMaps, HasUITarget, Layers, LayersLike, Maps, MapsLike, ViewpointLike } from "../common.js";
import type { EnhancedFileData } from "./file.js";
import type { PortalItemData } from "./portal.js";
import type { GeometryEditorSettings } from "./sketching.js";
/**
* Levels (z-orders) to which markup can be assigned, listed from high to low.
*/
export type MarkupLevel = "ui" | "labels" | "custom3" | "custom2" | "custom1" | "default";
/**
* Arguments for the various map events.
*/
export interface MapEvent {
/**
* The map from which the event was generated. Web only.
*
* @webOnly
*/
maps?: MapsLike;
/**
* The map extension for which the event was generated. This property is
* required in VertiGIS Studio Mobile. Mobile only.
*
* @mobileOnly
*/
mapExtension?: MapExtension;
}
/**
* Arguments for the ViewModeChanged event.
*/
export interface ViewModeChangedEvent extends MapEvent {
/**
* The new ViewMode.
*/
viewMode?: ViewMode;
}
/**
* Arguments for the map.zoom-to-viewpoint command.
*/
export interface ZoomToViewpointArgs {
/**
* The map(s) to zoom. If omitted, all maps will be zoomed.
*/
maps?: MapsLike;
/**
* The viewpoint to zoom to.
*/
viewpoint: ViewpointLike | string;
}
/**
* The result of getting a Viewpoint.
*/
export interface GetViewpointResult {
/**
* The map(s) used in the operation.
*/
maps?: MapsLike;
/**
* The viewpoint.
*/
viewpoint: Viewpoint;
}
/**
* Arguments for the map.zoom-to-layer-extent and
* map.zoom-to-layer-visible-scale commands.
*/
export interface ZoomToLayerArgs {
/**
* The map(s) to zoom. If omitted, all maps will be zoomed.
*/
maps?: MapsLike;
/**
* The layer(s) to zoom to.
*/
layers: LayersLike;
}
/**
* Arguments for the map.zoom-to-scale command.
*/
export interface ZoomToScaleArgs {
/**
* The map(s) to zoom. If omitted, all maps will be zoomed.
*/
maps?: MapsLike;
/**
* The scale to zoom to.
*/
scale: number;
}
/**
* Arguments for the map.zoom-to-features command.
*/
export interface ZoomToFeaturesArgs {
/**
* The map(s) to zoom. If omitted, all maps will be zoomed.
*/
maps?: MapsLike;
/**
* The feature(s) to zoom to.
*/
features: FeaturesLike;
}
/**
* Arguments for the "map.get-extent" operation.
*/
export interface GetExtentArgs {
/**
* The map from which to retrieve the extent.
*/
maps?: MapsLike;
}
/**
* Result of the "map.get-extent" operation.
*/
export interface GetExtentResult {
/**
* The extent for the selected map.
*/
geometry: GeometryUnion;
/**
* The associated map for the retrieved extent.
*/
maps: MapsLike;
}
/**
* Base arguments for markup commands and operations.
*/
export interface MarkupArgs extends HasMaps {
/**
* The named collection of markup to operate on. If not specified, the
* default markup collection will be used.
*
* Note that collections with names prefixed by "vgs" are reserved for
* internal system use and should not be referenced directly.
*
* Web only.
*
* @webOnly
*/
collection?: string;
}
/**
* Arguments for the "map.add-markup" command.
*/
export interface AddMarkupArgs extends MarkupArgs {
/**
* The markup to add to the map. `GraphicsLike` is only available in Web.
*/
graphics?: Graphic[] | GraphicsLike;
/**
* The level (z-order) to assign the markup to. If not specified uses the
* same level as default markup. Web only.
*
* @webOnly
*/
level?: MarkupLevel;
}
/**
* Arguments for the "map.clear-markup" command.
*
* @webOnly
*/
export interface ClearMarkupArgs extends MarkupArgs {
/**
* The markup to clear. If not specified will clear all markup in the
* selected collection.
*/
graphics?: GraphicsLike;
}
/**
* Arguments for the "map.get-markup" operation.
*/
export interface GetMarkupArgs extends MarkupArgs {
/**
* The geometry used to bound the retrieved markup. If not specified all
* markup in the selected collection will be returned.
*/
geometry?: GeometryUnion;
}
/**
* Result of the "map.get-markup" operation.
*/
export interface GetMarkupResult {
/**
* The markup results.
*/
graphics: GraphicsLike;
/**
* The associated map the markup was retrieved from.
*/
maps?: MapsLike;
}
/**
* Represents an operational layer.
*/
export type OperationalLayerLike = Layer | OperationalLayerJson | LayerExtension | PortalItemLike;
/**
* Arguments for the map.add-layers command.
*/
export interface AddLayersArgs {
/**
* The layer(s) to add.
*/
layers: OperationalLayerLike | OperationalLayerLike[];
/**
* The associated map(s) for the layer(s).
*/
maps?: MapsLike;
}
/**
* Arguments for the map.remove-layers command.
*/
export interface RemoveLayersArgs {
/**
* The layer(s) to remove.
*/
layers: LayersLike;
/**
* The associated map(s) for the layer(s).
*/
maps?: MapsLike;
}
/**
* Arguments for the map.apply-layer-preset command.
*/
export interface ApplyLayerPresetArgs {
/**
* The map(s) to which the layerPreset will be applied.
*/
maps?: MapsLike;
/**
* The LayerPreset to apply.
*/
layerPreset: LayerPreset;
}
/**
* Arguments for the map.update-layer command.
*/
export interface UpdateLayerArgs {
/**
* The associated map(s) for the layer(s).
*/
maps?: MapsLike;
/**
* The web map spec JSON used to update the Layer.
*/
layerJson: OperationalLayerJson;
/**
* The layer to update. If more than one layer is present, only the first
* will be updated and the rest will be ignored.
*/
layers: LayersLike;
}
/**
* Arguments for the map.create-note command.
*/
export interface CreateMapNoteArgs extends HasUITarget {
/**
* Optionally the features that can be referenced for inserting snippets.
*/
features?: FeaturesLike;
/**
* The map that should show the created note.
*/
maps?: MapsLike;
/**
* The location for the map note.
*/
geometry: Point;
}
/**
* Arguments for the map.edit-note command.
*/
export interface EditMapNotesArgs extends HasUITarget {
/**
* Optionally the features that can be referenced for inserting snippets.
*/
features?: FeaturesLike;
/**
* The map on which to edit the result.
*/
maps: MapsLike;
/**
* The geometry from which to attempt to select the Note.
*/
geometry?: Point;
}
/**
* Arguments for the map.get-user-coordinates-input operation.
*/
export interface GetCoordinateArgs extends HasUITarget {
/**
* The map on which to select the result.
*/
maps?: MapsLike;
/**
* Indicates if the user should be given the option to select a point from
* the map.
*/
allowSelectFromMap?: boolean;
/**
* An optional starting coordinate.
*/
geometry?: Point;
/**
* Optionally override the display text on the complete button. Defaults to
* 'OK'.
*/
completeLabel?: string;
}
/**
* The result of a map.get-user-coordinates-input operation.
*/
export interface GetCoordinateResult {
/**
* The result.
*/
geometry: Point;
/**
* The associated map.
*/
maps: MapsLike;
}
/**
* The unit for calculating the buffer distance when 'distance' is specified for
* a filter effect.
*/
export type FilterDistanceUnits = "feet" | "miles" | "nautical-miles" | "meters" | "kilometers";
/**
* The spatial relationship for a filter effect.
*/
export type FilterSpatialRelationship = "contains" | "crosses" | "envelope-intersects" | "overlaps" | "touches" | "within" | "disjoint" | "intersects";
/**
* A time extent for a filter effect.
*/
export interface TimeExtent {
/**
* The beginning of the time interval, as either a JavaScript Date object or
* the number of milliseconds elapsed since January 1, 1970 00:00:00 UTC.
*/
start: Date | number;
/**
* The end of the time interval, as either a JavaScript Date object or the
* number of milliseconds elapsed since January 1, 1970 00:00:00 UTC.
*/
end: Date | number;
}
/**
* Filter effect configuration for either the included or excluded filter.
*/
export interface FilterEffectSettings {
/**
* Converts the input image to grayscale. The value defines the proportion
* of the conversion. A value of 100% (or 1) is completely grayscale. A
* value of 0% (or 0) leaves the input unchanged. See
* https://developer.mozilla.org/en-US/docs/Web/CSS/filter-function/grayscale
* for more details.
*/
grayscale?: string;
/**
* Converts the input image to sepia. The value defines the proportion of
* the conversion. A value of 100% (or 1) is completely grayscale. A value
* of 0% (or 0) leaves the input unchanged. See
* https://developer.mozilla.org/en-US/docs/Web/CSS/filter-function/sepia
* for more details.
*/
sepia?: string;
/**
* Applies a hue rotation on the input image. The value defines the number
* of degrees around the color circle the input samples will be adjusted. A
* value of 0deg leaves the input unchanged. There is no maximum value; the
* effect of values above 360deg wraps around. See
* https://developer.mozilla.org/en-US/docs/Web/CSS/filter-function/hue-rotate
* for more details.
*/
hueRotate?: string;
/**
* Inverts the samples in the input image. The value defines the proportion
* of the conversion. A value of 100% (or 1) is completely inverted. A value
* of 0% (or 0) leaves the input unchanged. See
* https://developer.mozilla.org/en-US/docs/Web/CSS/filter-function/invert
* for more details.
*/
invert?: string;
/**
* Applies transparency to the samples in the input image. The value defines
* the proportion of the conversion. A value of 0% (or 0) is completely
* transparent. A value of 100% (or 1) leaves the input unchanged. See
* https://developer.mozilla.org/en-US/docs/Web/CSS/filter-function/opacity
* for more details.
*/
opacity?: string;
/**
* Applies a linear multiplier to the input image, making it appear more or
* less bright. A value of 0% (or 0) will create an image that is completely
* black. A value of 100% (or 1) leaves the input unchanged. Values of an
* amount over 100% are allowed, providing brighter results. See
* https://developer.mozilla.org/en-US/docs/Web/CSS/filter-function/brightness
* for more details.
*/
brightness?: string;
/**
* Adjusts the contrast of the input image. A value of 0% (or 0) will create
* an image that is completely gray. A value of 100% (or 1) leaves the input
* unchanged. Values of an amount over 100% are allowed, providing results
* with more contrast. See
* https://developer.mozilla.org/en-US/docs/Web/CSS/filter-function/contrast
* for more details.
*/
contrast?: string;
}
/**
* A feature mode for use with filter effects (see
* `ApplyFilterEffectArgs.featureMode`).
*/
export type FilterEffectFeatureMode = "include" | "exclude" | "replace";
/**
* The required arguments for the 'maps.apply-filter-effect' command.
*/
export interface ApplyFilterEffectArgs {
/**
* The layer(s) to which the filter effect will be applied. When defined,
* the filter only gets set on the corresponding LayerView. If no 'layer' is
* defined, all applicable layers included in the specified 'maps' will
* receive the filter effect.
*/
layers?: LayersLike;
/**
* The map(s) whose layers will receive the filter effect. If no 'maps' nor
* 'layer' are defined, all applicable layers on all maps will receive the
* filter effect.
*/
maps?: MapsLike;
/**
* A where clause for the feature filter. Any legal SQL92 where clause
* operating on the fields in the 'layer' is allowed. The 'where' clause is
* ignored if no 'layer' is defined.
*/
where?: string;
/**
* The features to which the filter effect is applied. If the 'layer'
* property is set, only features from that layer will be effected;
* otherwise, the filter effect is applied to each of the features' source
* layers and all other applicable layers on the 'maps' will receive the
* 'excludedEffect'.
*/
features?: Features;
/**
* How the features are used in the filter effect. 'include' includes new
* features to any that may exist within an existing effect. 'exclude'
* removes features that may exist within an existing effect. 'replace'
* replaces any features that may exist within an existing effect. The
* default is 'include'.
*/
featureMode?: FilterEffectFeatureMode;
/**
* The geometry to apply to the spatial filter. The spatial relationship, as
* specified by the 'spatialRelationship' property, will indicate how the
* geometry should be used to filter features.
*/
geometry?: GeometryUnion;
/**
* The spatial relationship to filter features in the layer view against the
* filter 'geometry'.
*/
spatialRelationship?: FilterSpatialRelationship;
/**
* Specifies a search distance from a given 'geometry' in th spatial filter.
* In essence, setting this property creates a buffer at the specified size
* around the input 'geometry'.
*/
distance?: number;
/**
* The unit for calculating the buffer distance when 'distance' is defined
* for the spatial filter. If 'units' is not specified, the unit is derived
* from the filter geometry's spatial reference.
*/
units?: FilterDistanceUnits;
/**
* A range of time with start and end date. Only the features that fall
* within this time extent will be included.
*/
timeExtent?: TimeExtent;
/**
* The effect given to features that match the filter.
*/
includedEffect?: FilterEffectSettings;
/**
* The effect given to features that don't match the filter.
*/
excludedEffect?: FilterEffectSettings;
}
/**
* Result of the "map.get-view-insets" operation.
*/
export interface GetViewInsetsArgs {
/**
* The width covering the map on the left.
*/
left: number;
/**
* The width covering the map from above.
*/
top: number;
/**
* The width covering the map on the right.
*/
right: number;
/**
* The width covering the map from below.
*/
bottom: number;
}
/**
* Arguments for the "map.display-extent-selector" command.
*/
export interface DisplayExtentSelectorArgs {
/**
* Help text to display above the extent selector overlay to give context to
* what the user is expected to do.
*/
selectorHelpText: string;
/**
* The command to execute when the extent selector's Continue button is
* selected by the user.
*/
continueCommand: Action;
/**
* The map to display the selector on.
*/
maps: MapsLike;
}
/**
* Arguments for the "map.export-image" operation.
*/
export interface ExportMapImageArgs {
/**
* The name of the file to export to.
*/
fileName?: string;
/**
* If true, then the file will be stored permanently in a user accessible
* directory. If false, a temporary file will be created.
*/
keepFile?: boolean;
/**
* The map to export. If more than one map is specified, the first will be
* used. If no maps are specified, a default will be used.
*/
maps?: MapsLike;
}
/**
* Arguments for the "map.hide" operation.
*/
export interface HideMapArgs {
/**
* Whether or not to show a spinner while the map is hidden.
*/
showSpinner: boolean;
/**
* The map to hide.
*/
maps: MapsLike;
}
/**
* Arguments for the "map.rotate-by" and "map.rotate-to" commands.
*/
export interface MapRotateArgs {
/**
* The number of degrees clock-wise, with North being 0 degrees.
*/
rotation: number;
/**
* The map to rotate.
*/
maps?: MapsLike;
}
/**
* Arguments for the "map.replace*" operations.
*/
export interface ReplaceMapArgs {
/**
* The map with which to replace the current map.
*/
replacementMap: EsriMap;
/**
* The MapExtension in which to replace the map.
*/
mapExtension: MapExtension;
}
/**
* Arguments for the "map.set-view-mode" command.
*/
export interface SetViewModeArgs extends HasMaps {
/**
* The new view mode for the specified map(s).
*/
viewMode: ViewMode;
}
/**
* Arguments for the "map.start-sketch" operation.
*/
export interface StartSketchArgs {
/**
* The map to sketch on.
*/
maps: MapsLike;
/**
* The geometry to edit.
*/
geometry: GeometryUnion;
/**
* The type of geometry to edit.
*/
geometryType: GeometryJsonType;
/**
* Gets a resume ID for the sketch. Cannot be set.
*/
resumeId: string;
/**
* The size of the buffer to be created around the geometry. If null or a
* negative value, no buffer will be created.
*
* This is currently only supported for line geometry types.
*/
bufferSize: number;
/**
* Whether the previous geometry editor settings should be restored after
* this sketch is stopped.
*/
retainEditorSettings: boolean;
/**
* The settings to be applied to the sketch.
*/
editorSettings: GeometryEditorSettings;
/**
* The maximum number of segments permitted for a polyline or polygon
* sketch. Default is no limit. Mobile only.
*/
maxSegments?: number;
/**
* An optional symbol to use.
*/
symbol?: SymbolJson;
}
/**
* Result of the "map.get-coordinate-transformation" operation.
*/
export interface CoordinateTransformation {
/**
* The initial coordinate system of the data.
*/
inputSpatialReference: SpatialReference;
/**
* The coordinate system to project the data into.
*/
outputSpatialReference: SpatialReference;
/**
* The geographic transformation used to project data between the input
* coordinate system and the output coordinate system.
*/
transformation: GeographicTransformation;
}
/**
* A result geometry which also indicates which map it came from.
*/
export interface HasMapGeometry {
/**
* The map(s) to target.
*/
maps?: MapsLike;
/**
* The geometry to target.
*/
geometry?: GeometryLike;
}
/**
* Event args for the map.switched event.
*/
export interface MapSwitchedEvent extends MapEvent {
/**
* The previous map.
*/
oldMap: EsriMap;
}
/**
* Event args for the map.initialized event.
*/
export interface MapInitializedEvent extends MapEvent {
/**
* The amount of time that the map took to load. Mobile only.
*/
loadTime: TimeSpan;
}
/**
* Event args for the map.markup-added event.
*/
export interface MarkupAddedEvent extends MapEvent {
/**
* The markup type of the added markup.
*/
markupType: MarkupType;
}
/**
* The type of markup.
*/
export type MarkupType = "Unknown" | "Polygon" | "Polyline" | "Text" | "PictureMarker" | "PictureFill" | "Composite" | "Multi";
export declare class MapCommands extends CommandRegistry {
protected readonly _prefix = "map";
/**
* Adds markup to the map(s).
*
* **Example:** Adding markup to a custom collection using `AddMarkupArgs`.
*
* ```
* {
* "collection": "my-custom-markup",
* "graphics": [
* {
* "geometry": {
* "x": -13733416.69,
* "y": 6177670.86,
* "spatialReference": {
* "wkid": 3857
* },
* "type": "point"
* },
* "symbol": {
* "color": [76, 115, 0, 255],
* "size": 16,
* "style": "esriSMSCircle",
* "type": "simple-marker"
* }
* }
* ]
* }
* ```
*/
get addMarkup(): Command<AddMarkupArgs | GraphicsLike>;
/**
* Add the specified layer(s) to the maps(s). Layers will be inserted in the
* order specified and will be added above existing layers in the drawing
* order. Note that an Esri `Layer` object can only be added to one map.
*
* Web only.
*
* **Example:** Adding a CSV layer to the main map using `AddLayersArgs`.
*
* ```
* {
* "layers": [
* {
* "id": "csv_123",
* "layerType": "CSV",
* "title": "Earthquakes",
* "url": "http://earthquake.usgs.gov/earthquakes/feed/v1.0/summary/2.5_month.csv",
* "columnDelimiter": ",",
* "layerDefinition": {
* "geometryType": "esriGeometryPoint",
* "objectIdField": "__OBJECTID",
* "capabilities": "Query",
* "extent": {
* "xmin": -20034970.25849882,
* "ymin": -9494815.985282788,
* "xmax": 20026086.963133518,
* "ymax": 14269743.874052156,
* "spatialReference": {
* "wkid": 102100
* }
* }
* },
* "locationInfo": {
* "locationType": "coordinates",
* "latitudeFieldName": "latitude",
* "longitudeFieldName": "longitude"
* }
* }
* ]
* }
* ```
*
* @webOnly
*/
get addLayers(): Command<AddLayersArgs>;
/**
* Applies a Filter Effect to the map(s). Web only.
*
* @webOnly
*/
get applyFilterEffect(): Command<ApplyFilterEffectArgs>;
/**
* Applies a LayerPreset to the map(s). Web only.
*
* @webOnly
*/
get applyLayerPreset(): Command<ApplyLayerPresetArgs>;
/**
* Create a map note. Web only.
*
* @webOnly
*/
get createNote(): Command<CreateMapNoteArgs>;
/**
* Edit an existing map note. Web only.
*
* @webOnly
*/
get editNote(): Command<EditMapNotesArgs>;
/**
* Removes a Filter Effect(s) from the map(s). Web only.
*
* @webOnly
*/
get removeFilterEffects(): Command<Layers>;
/**
* Clears all Filter Effects from the map(s). Web only.
*
* @webOnly
*/
get clearFilterEffects(): Command<Maps | void>;
/**
* Clears all markup from the map(s).
*/
get clearMarkup(): Command<ClearMarkupArgs | void>;
/**
* Disables the click event handler on the map, so that if the user clicks
* on the map, the configured handler will not be invoked. Mobile only.
*
* @mobileOnly
*/
get disableMapClick(): Command<HasMaps>;
/**
* Displays a square overlay on the map that allows the user to change the
* map extent within the overlay. Mobile only.
*
* @mobileOnly
*/
get displayExtentSelector(): Command<DisplayExtentSelectorArgs>;
/**
* Enables the click event handler on the map, so that if the user clicks on
* the map, the configured handler will be invoked. Mobile only.
*
* @mobileOnly
*/
get enableMapClick(): Command<HasMaps>;
/**
* Zooms to (without animation) one or many features on the targeted map(s).
* Web only.
*
* @webOnly
*/
get goToFeatures(): Command<Features>;
/**
* Zooms to (without animation) one or many geometries on the targeted
* map(s). Web only.
*
* @webOnly
*/
get goToGeometry(): Command<Geometries | HasMapGeometry>;
/**
* Zooms to (without animation) the next viewpoint to undo viewpoint changes
* from zooming to a previous viewpoint.
*
* Note that if no map is included as an argument, the command will run for
* all maps, which could result in unexpected behavior. Web only.
*
* @webOnly
*/
get goToNextViewpoint(): Command<Maps | void>;
/**
* Zooms to (without animation) the previous viewpoint.
*
* Note that if no map is included as an argument, the command will run for
* all maps, which could result in unexpected behavior. Web only.
*
* @webOnly
*/
get goToPreviousViewpoint(): Command<Maps | void>;
/**
* Zooms to (without animation) the given viewpoint. Web only.
*
* @webOnly
*/
get goToViewpoint(): Command<ZoomToViewpointArgs | ViewpointLike>;
/**
* Zooms (without animation) the map to a specified, numerical scale. Web
* only.
*
* @webOnly
*/
get goToScale(): Command<ZoomToScaleArgs>;
/**
* Zooms (without animation) the map to its initial viewpoint. If map is
* omitted, all maps will be targeted. Web only.
*
* @webOnly
*/
get goToInitialViewpoint(): Command<Maps | void>;
/**
* Go to (without animation) the full extent of the layer(s). If more than
* one layer is specified, it will zoom to the combined extent of all
* layers. Web only.
*
* @webOnly
*/
get goToLayerExtent(): Command<ZoomToLayerArgs>;
/**
* Hides the extent selector overlay on the map. Mobile only.
*
* @mobileOnly
*/
get hideExtentSelector(): Command<HasMaps>;
/**
* Show the specified markup collection, if hidden. If no collection is
* specified the default markup collection will be shown. Web only.
*
* @webOnly
*/
get hideMarkup(): Command<MarkupArgs | void>;
/**
* Pans (without zooming) to one or many features on the targeted map(s).
*/
get panToFeatures(): Command<ZoomToFeaturesArgs>;
/**
* Pan (without zooming) to one or many geometries on the targeted map(s).
* Web only.
*
* @webOnly
*/
get panToGeometry(): Command<Geometries | HasMapGeometry>;
/**
* Pan (without zooming) to one or many geometries on the targeted map(s).
* Mobile only.
*
* @mobileOnly
*/
get panToGeometries(): Command<HasMapGeometry>;
/**
* Pauses sketching on the map. Stores the current sketch editor and
* geometry for later use. Mobile only.
*
* @mobileOnly
*/
get pauseSketch(): Command<HasMaps>;
/**
* Remove the specified layer(s) from the map(s). Web only.
*
* @webOnly
*/
get removeLayers(): Command<LayersLike | RemoveLayersArgs>;
/**
* Replaces the entire current map in the MapExtension and in the map
* component with a different map. Mobile only.
*
* @mobileOnly
*/
get replace(): Command<ReplaceMapArgs>;
/**
* Replaces the additional layers on top of an mmpk with a new set of
* layers, when using mmpk + WebMap. The mmpk part of the map is retained.
* Mobile only.
*
* @mobileOnly
*/
get replaceAdditionalLayers(): Command<ReplaceMapArgs>;
/**
* Replaces the underlying mmpk part of the map when using mmpk + WebMap.
* The additional layers on top of the mmpk data are retained. Mobile only.
*
* @mobileOnly
*/
get replaceMmpk(): Command<ReplaceMapArgs>;
/**
* Resumes sketching on the map. Uses the sketch editor and geometry stored
* when pausing. Mobile only.
*
* @mobileOnly
*/
get resumeSketch(): Command<HasMaps>;
/**
* Rotates the map by the specified amount.
*/
get rotateBy(): Command<MapRotateArgs>;
/**
* Rotates the map to the specified angle.
*/
get rotateTo(): Command<MapRotateArgs>;
/**
* Refreshes / reloads the map. Mobile only.
*
* @mobileOnly
*/
get refresh(): Command<HasMaps>;
/**
* Changes the view mode of a map to the specified mode, if supported. If no
* maps are specified, all maps will be targeted. Web only.
*
* @webOnly
*/
get setViewMode(): Command<ViewMode | SetViewModeArgs>;
/**
* Show the specified markup collection, if hidden. If no collection is
* specified the default markup collection will be shown. Web only.
*
* @webOnly
*/
get showMarkup(): Command<MarkupArgs | void>;
/**
* Updates a layer in the map. Web only.
*
* @webOnly
*/
get updateLayer(): Command<UpdateLayerArgs>;
/**
* Zooms to one or many features.
*/
get zoomToFeatures(): Command<ZoomToFeaturesArgs>;
/**
* Zooms to one or many geometries. Web only.
*
* @webOnly
*/
get zoomToGeometry(): Command<Geometries | HasMapGeometry>;
/**
* Zooms the map in by one level of detail. Web only.
*
* @webOnly
*/
get zoomIn(): Command<Maps | void>;
/**
* Zooms the map out by one level of detail. Web only.
*
* @webOnly
*/
get zoomOut(): Command<Maps | void>;
/**
* Zooms the map to a specified, numerical scale. Web only.
*
* @webOnly
*/
get zoomToScale(): Command<ZoomToScaleArgs>;
/**
* Zooms the map to its initial viewpoint.
*/
get zoomToInitialViewpoint(): Command<Maps | void>;
/**
* Zooms to the next viewpoint to undo viewpoint changes from zooming to a
* previous viewpoint.
*
* Note that if no map is included as an argument, the command will run for
* all maps, which could result in unexpected behavior. Web only.
*
* @webOnly
*/
get zoomToNextViewpoint(): Command<Maps | void>;
/**
* Zooms to the previous viewpoint.
*
* Note that if no map is included as an argument, the command will run for
* all maps, which could result in unexpected behavior. Web only.
*
* @webOnly
*/
get zoomToPreviousViewpoint(): Command<Maps | void>;
/**
* Go to the given viewpoint.
*/
get zoomToViewpoint(): Command<ZoomToViewpointArgs | ViewpointLike>;
/**
* Go to the full extent of the layer(s). If more than one layer is
* specified, it will zoom to the combined extent of all layers. Web only.
*
* @webOnly
*/
get zoomToLayerExtent(): Command<ZoomToLayerArgs>;
/**
* Go to the closest min/max scale of the layer. The map will not zoom if it
* is currently within the visible scale range. If multiple layers are
* provided, it will attempt to zoom to a scale range that makes all of the
* layers visible. If this is not possible (i.e. some of the layers' scale
* ranges don't overlap), then priority will be given to layers that come
* earlier in the sequence. Web only.
*
* @webOnly
*/
get zoomToLayerVisibleScale(): Command<ZoomToLayerArgs>;
}
export declare class MapEvents extends EventRegistry {
protected readonly _prefix = "map";
/**
* Raised when a map has completed initialization. MapEvent used in Web,
* MapInitializedEvent used in Mobile.
*/
get initialized(): Event<MapEvent | MapInitializedEvent>;
/**
* Raised when a map is about to begin loading during startup. The map can
* be swapped with a different map at this point if you want to circumvent
* the map load process. For example in an app that supported offline, an
* offline map could be swapped in here. Mobile only.
*
* @mobileOnly
*/
get initializing(): Event<MapEvent>;
/**
* Raised when markup is added to the map. Mobile only.
*
* @mobileOnly
*/
get markupAdded(): Event<MarkupAddedEvent>;
/**
* Raised when markup is cleared from the map. Mobile only.
*
* @mobileOnly
*/
get markupCleared(): Event<MapEvent>;
/**
* Raised when the a map navigation (eg. Pan or zoom) is complete. Mobile
* only.
*
* @mobileOnly
*/
get navigationCompleted(): Event<MapEvent>;
/**
* Raised when a map refresh completes. Mobile only.
*
* @mobileOnly
*/
get refreshed(): Event<MapEvent>;
/**
* Raised when a map refresh begins. Mobile only.
*
* @mobileOnly
*/
get refreshing(): Event<MapEvent>;
/**
* Raised when the Rotate operation has completed execution. Mobile only.
*
* @mobileOnly
*/
get rotated(): Event<MapEvent>;
/**
* Raised when the Rotate operation is about to be called. Mobile only.
*
* @mobileOnly
*/
get rotating(): Event<MapEvent>;
/**
* Raised when a map is replaced with a different map. Mobile only.
*
* @mobileOnly
*/
get switched(): Event<MapSwitchedEvent>;
/**
* Raised when a map's {@link ViewMode} is changed. This happens when the map
* view is changed between a WebMap and a WebScene. Web only.
*
* @webOnly
*/
get viewModeChanged(): Event<ViewModeChangedEvent>;
/**
* Raised when the a map extent is changed. This event is raised in
* extremely high frequency - for example, every few pixels the map is
* repositioned during a pan.
*/
get viewpointChanged(): Event<MapEvent>;
/**
* Raised when a map export operation has completed. Mobile only.
*
* @mobileOnly
*/
get imageExported(): Event<ExportMapImageArgs>;
}
export declare class MapOperations extends OperationRegistry {
protected readonly _prefix = "map";
/**
* Prompts the user to enter and return a coordinate. Web only.
*
* @webOnly
*/
get getUserCoordinatesInput(): Operation<GetCoordinateArgs, GetCoordinateResult>;
/**
* If a map extension ID is specified, returns the coordinate transformation
* object for that map. If no map extension ID is specified, returns the
* coordinate transformation object of the first available map. The
* coordinate transformation object contains information about the input and
* output spatial reference, as well as the necessary transformations to
* convert between those coordinate systems. Mobile only.
*
* @mobileOnly
*/
get getCoordinateTransformation(): Operation<Maps | void, CoordinateTransformation[]>;
/**
* Exports the currently rendered map to a png image file on disk, and also
* returns that image. Mobile only.
*
* @mobileOnly
*/
get exportImage(): Operation<ExportMapImageArgs, EnhancedFileData>;
/**
* Exports the current configuration of the selected map component as a web
* map or scene. Web only.
*
* @webOnly
*/
get exportWebMapOrScene(): Operation<HasMaps, PortalItemData>;
/**
* Returns markup from the specified map that are intersected by the
* supplied geometry. Web only.
*
* @webOnly
*/
get getMarkup(): Operation<GetMarkupArgs, GetMarkupResult>;
/**
* Returns the extent from the specified map. Web only.
*
* @webOnly
*/
get getExtent(): Operation<GetExtentArgs, GetExtentResult>;
/**
* Returns the geometry that is contained within the square overlay of the
* extent selector. Mobile only.
*
* @mobileOnly
*/
get getGeometryFromSelector(): Operation<HasMaps, Extent>;
/**
* Returns the initial viewpoint for the active map or scene of the
* specified map. If no map extension is specified, returns the initial
* viewpoint for the first available map. Also returns the map(s) used for
* the operation. Web only.
*
* @webOnly
*/
get getInitialViewpoint(): Operation<Maps | void, GetViewpointResult>;
/**
* Returns the current viewpoint for the active map or scene of the
* specified map. If no map extension is specified, returns the viewpoint
* for the first available map. Also returns the map(s) used for the
* operation. Web only.
*
* @webOnly
*/
get getViewpoint(): Operation<Maps | void, GetViewpointResult>;
/**
* If a map extension ID is specified, returns the spatial reference for
* that map. If no map extension ID is specified, returns the spatial
* reference of the first available map.
*/
get getSpatialReference(): Operation<Maps | void, SpatialReference>;
/**
* Returns the point at the center of the visible map area. Accounts for
* panels displaying overtop of the map. Mobile only.
*
* @mobileOnly
*/
get getVisibleCenter(): Operation<HasMaps, Point>;
/**
* Hides the map. Mobile only.
*
* @mobileOnly
*/
get hide(): Operation<HideMapArgs, boolean>;
/**
* Shows the map if it is hidden. Mobile only.
*
* @mobileOnly
*/
get show(): Operation<HasMaps, boolean>;
/**
* Enables sketching on a map. Mobile only.
*
* @mobileOnly
*/
get startSketch(): Operation<StartSketchArgs, GeometryUnion>;
/**
* Stops sketching on the map. Mobile only.
*
* @mobileOnly
*/
get stopSketch(): Operation<HasMaps, GeometryUnion>;
/**
* Returns the amount of the map that is currently covered by insets such as
* the panel component. Mobile only.
*
* @mobileOnly
*/
get getViewInsets(): Operation<HasMaps, GetViewInsetsArgs>;
}