@progress/kendo-charts
Version:
Kendo UI platform-independent Charts library
886 lines (764 loc) • 19.8 kB
TypeScript
import { Element, geometry, Group, ShapeOptions, Surface } from '@progress/kendo-drawing';
/**
* @hidden
*/
export class Map {
options: MapOptions;
layers: any;
element: HTMLElement;
center(center?: Location | [number, number] | number[]): Location;
extent(extent?: Extent): Extent;
zoom(level?: number): number;
viewSize(): any;
constructor(element: any, options: MapOptions, theme: any, context: any);
destroy(): void;
eventOffset(e: any): geometry.Point;
eventToLayer(e: any): geometry.Point;
eventToLocation(e: any): geometry.Point;
eventToView(e: any): geometry.Point;
layerToLocation(point: geometry.Point | [number, number] | number[], zoom: number): Location;
locationToLayer(location: Location | [number, number] | number[], zoom: number): geometry.Point;
locationToView(location: Location | [number, number] | number[]): geometry.Point;
resize(force?: boolean): void;
setOptions(options: any): void;
viewToLocation(point: geometry.Point | [number, number] | number[], zoom: number): Location;
hideTooltip(): void;
}
/**
* Represents a geographic location.
*/
export class Location {
/**
* The location latitude in decimal degrees.
*/
lat: number;
/**
* The location longitude in decimal degrees.
*/
lng: number;
/**
* Creates a new Location.
*
* @param lat The location latitude in decimal degrees.
* @param lng The location longitude in decimal degrees.
*/
constructor(lat: number, lng: number);
/**
* Creates a Location instance from an [longitude, latitude] array.
*
* @param lnglat The [longitude, latitude] array.
* @returns The Location instance.
*/
static fromLngLat(lnglat: [number, number] | number[]): Location;
/**
* Creates a Location instance from an [latitude, longitude] array.
*
* @param latlng The [latitude, longitude] array.
* @returns The Location instance.
*/
static fromLatLng(latlng: [number, number] | number[]): Location;
/**
* Creates a new instance with the same coordinates.
*
* @returns The new Location instance.
*/
clone(): Location;
/**
* Finds a destination at the given distance and bearing from this location.
*
* @param distance The distance to the destination in meters.
* @param bearing The initial bearing to the destination in decimal degrees.
* @returns The destination at the given distance and bearing.
*/
destination(distance: number, bearing: number): Location;
/**
* Calculates the [great-circle distance](https://en.wikipedia.org/wiki/Great-circle_distance) to the given destination in meters.
*
* @param destination The destination location.
* @returns The distance to the specified location in meters.
*/
distanceTo(destination: Location): number;
/**
* Compares this location with another instance.
*
* @param location The location to compare with.
* @returns true if the location coordinates match; false otherwise.
*/
equals(location: Location): boolean;
/**
* Rounds the location coordinates to the specified number of fractional digits.
*
* @param digits Number of fractional digits.
* @returns The current Location instance.
*/
round(digits: number): Location;
/**
* Returns the location coordinates as an [lat, lng] array.
*
* @returns An array representation of the location.
*/
toArray(): [number, number];
/**
* Returns the location coordinates formatted as '{lat},{lng}'.
*
* @returns A string representation of the location.
*/
toString(): string;
/**
* Wraps the latitude and longitude to fit into the [0, 90] and [0, 180] range.
*
* @returns The current Location instance.
*/
wrap(): Location;
}
/**
* Represents a geographic region defined by two extreme locations (North West and South East).
*/
export class Extent {
/**
* The North West extreme location.
*/
nw: Location;
/**
* The South East extreme location.
*/
se: Location;
/**
* Creates a new Extent.
*
* @param nw The North West extreme location.
* @param se The South East extreme location.
*/
constructor(
nw: Location | [number, number] | number[],
se: Location | [number, number] | number[]
);
/**
* Tests if a location is contained within the extent.
*
* @param location The location to test for.
* @returns true if the extent contains the location, false otherwise.
*/
contains(location: Location): boolean;
/**
* Tests if any of the locations is contained within the extent.
*
* @param locations An array of locations to test for.
* @returns true if the extent contains any of the locations, false otherwise.
*/
containsAny(locations: Location[]): boolean;
/**
* Returns the center of the extent.
*
* @returns The extent center location.
*/
center(): Location;
/**
* Grows the extent, if required, to contain the specified location.
*
* @param location The location to include in the extent.
*/
include(location: Location): void;
/**
* Grows the extent, if required, to contain all specified locations.
*
* @param locations The locations to include in the extent.
*/
includeAll(locations: any): void;
/**
* Returns the four extreme locations of the extent.
*
* @returns An object with nw, ne, se and sw locations.
*/
edges(): { nw: Location, ne: Location, se: Location, sw: Location};
/**
* Returns the four extreme locations of the extent as an array.
*
* @returns An array with [NW, NE, SE, SW] locations.
*/
toArray(): [Location, Location, Location, Location];
/**
* Tests if the given extent overlaps with this instance.
*
* @param extent The extent to test with.
* @returns true if the extents overlap, false otherwise.
*/
overlaps(extent: Extent): boolean;
}
/**
* @hidden
*/
interface MapOptions {
/**
* The map center. Coordinates are listed as `[Latitude, Longitude]`.
*/
center?: Location | [number, number] | number[];
/**
* The configuration of built-in map controls.
*/
controls?: MapControls;
/**
* The minimum zoom level. Typical web maps use zoom levels from 0 (whole world) to 19 (sub-meter features).
*
* @default 1
*/
minZoom?: number;
/**
* The maximum zoom level. Typical web maps use zoom levels from 0 (whole world) to 19 (sub-meter features).
*
* @default 19
*/
maxZoom?: number;
/**
* The size of the map in pixels at zoom level 0.
*
* @default 256
*/
minSize?: number;
/**
* Controls whether the user can pan the map.
*
* @default true
*/
pannable?: boolean;
/**
* Specifies whether the map should wrap around the east-west edges.
*
* @default true
*/
wraparound?: boolean;
/**
* The initial zoom level.
*
* Typical web maps use zoom levels from 0 (whole world) to 19 (sub-meter features).
* The map size is derived from the zoom level and minScale options: size = (2 ^ zoom) * minSize
*
* > Map zoom rounds floating point numbers. This is done so as the majority of web maps use the whole [zoom levels](https://wiki.openstreetmap.org/wiki/Zoom_levels) 0 through to 19.
*
* @default 3
*/
zoom?: number;
/**
* Controls whether the map zoom level can be changed by the user.
*
* @default true
*/
zoomable?: boolean;
}
/**
* @hidden
*/
export type MapLayerType = 'tile' | 'marker' | 'shape' | 'bubble';
/**
* Map layer configuration options.
* @hidden
*/
export interface MapLayerOptions {
/**
* The attribution for the layer. Accepts HTML.
*/
attribution?: string;
/**
* Specifies the extent of the region covered by this layer.
* The layer will be hidden when the specified area is out of view. If not specified, the layer is always visible.
*
* Accepts an `Extent` or an array that specifies the extent covered by this layer:
* `[[NW lat, NW long], [SE lat, SE long]]`.
*/
extent?: Extent | [[number, number], [number, number]];
/**
* The minimum zoom level at which to show this layer.
*/
maxZoom?: number;
/**
* The minimum zoom level at which to show this layer.
*/
minZoom?: number;
/**
* The the opacity for the layer.
*
* The value must be in the range from 0 (fully transparent) to 1 (fully opaque).
*/
opacity?: number;
/**
* The zIndex for this layer.
*
* Layers are normally stacked in declaration order (last one is on top).
*/
zIndex?: number;
}
/**
* The arguments to the `symbol` function on bubble layers.
*/
export interface BubbleLayerSymbolArgs {
/**
* The symbol center on the current layer.
*/
center: geometry.Point;
/**
* The symbol size.
*/
size: number;
/**
* The symbol style.
*/
style: ShapeOptions;
/**
* The dataItem used to create the symbol.
*/
dataItem: any;
/**
* The location of the data point.
*/
location: Location;
}
/**
* Bubble layer symbol type.
*/
export type BubbleLayerSymbol = 'circle' | 'square' | ((args: BubbleLayerSymbolArgs) => Element);
/**
* Configuration options for the map Bubble layer.
*/
export interface BubbleLayerOptions extends MapLayerOptions {
/**
* The array of data items for this layer.
*/
data?: any[];
/**
* The data item field which contains the symbol location.
*
* The field should be an array with two numbers - latitude and longitude in decimal degrees.
*/
locationField?: string;
/**
* The value field for the symbols used to determine their relative size.
* The data item field should be a number.
*/
valueField?: string;
/**
* The symbol to use for bubble layers.
*/
symbol?: BubbleLayerSymbol;
/**
* The default style for symbols.
*/
style?: ShapeOptions;
/**
* The maximum symbol size for bubble layer symbols.
*
* @default 100
*/
maxSize?: number;
/**
* The minimum symbol size for bubble layer symbols.
*
* > Setting non-zero value will distort symbol area to value ratio.
*
* @default 0
*/
minSize?: number;
}
/**
* Configuration options for the map Marker layer.
*/
export interface MarkerLayerOptions extends MapLayerOptions {
/**
* The array of data items for this layer.
*/
data?: any[];
/**
* The data item field which contains the marker location.
*
* The field should be an array with two numbers - latitude and longitude in decimal degrees.
*/
locationField?: string;
/**
* The data item field which contains the marker title.
*/
titleField?: string;
/**
* The default marker shape for data-bound markers.
*
* The following pre-defined marker shapes are available:
* * "pinTarget"
* * "pin"
*
* Marker shapes are implemented as CSS classes on the marker element (span.k-marker). For example "pinTarget" is rendered as "k-marker-pin-target".
*/
shape?: string | 'pinTarget' | 'pin';
}
/**
* Configuration options for the map Shape layer.
*/
export interface ShapeLayerOptions extends MapLayerOptions {
/**
* The array of data items for this layer.
*/
data?: any[];
/**
* The default style for shapes.
*/
style?: ShapeOptions;
}
/**
* The arguments to the `urlTemplate` function on tile layers.
*/
export interface TileUrlTemplateArgs {
/**
* X coordinate of the tile.
*/
x: number;
/**
* Y coordinate of the tile.
*/
y: number;
/**
* The zoom level.
*/
zoom: number;
/**
* Subdomain for this tile.
*/
subdomain: string;
}
/**
* Configuration options for the map Tile layer.
*/
export interface TileLayerOptions extends MapLayerOptions {
/**
* The size of the image tile in pixels.
*
* @default 256
*/
tileSize?: number;
/**
* A list of subdomains to use for loading tiles.
*
* Alternating between different subdomains allows more requests to be executed in parallel.
*/
subdomains?: string[];
/**
* A function that returns an image URL for each tile position.
*
* @return the URL for the tile.
*/
urlTemplate: (args: TileUrlTemplateArgs) => string;
}
/**
* Possible positions of map controls
*/
export type MapControlsPosition = 'topLeft' | 'topRight' | 'bottomRight' | 'bottomLeft';
/**
* The configuration of built-in map controls.
*/
export interface MapControls {
/**
* Configures or disables the built-in attribution control.
*
* @default true
*/
attribution?: boolean | { position?: MapControlsPosition };
/**
* Configures or disables the built-in navigator control (directional pad).
*
* @default true
*/
navigator?: boolean | { position?: MapControlsPosition };
/**
* Configures or disables the built-in zoom control (+/- button).
*
* @default true
*/
zoom?: boolean | { position?: MapControlsPosition };
}
/**
* An instance of a Map layer
*/
export interface MapLayer {
/**
* The layer configuration settings.
*/
options: MapLayerOptions;
/**
* The drawing surface for Shape layers.
*/
surface?: Surface;
/**
* The marker items for Marker layers.
*/
items?: MapMarker[];
/**
* Shows the layer, if not visible.
*/
show(): void;
/**
* Hides the layer, if visible.
*/
hide(): void;
}
/**
* Represents a Map marker with title and location.
*/
export interface MapMarker {
/**
* Gets or sets the Marker location.
*
* @param value The marker location on the map. Coordinates are listed as `[Latitude, Longitude]`.
* @return The marker location.
*/
location(value?: number[] | Location): Location;
/**
* The data item used to create the marker.
*/
dataItem: any;
/**
* The marker shape.
*/
shape: string;
/**
* The marker title. Displayed as browser tooltip.
*/
title: string;
}
/**
* Fired immediately before the map is reset. This event is typically used for cleanup by layer implementers.
* @hidden
*/
export interface MapBeforeResetEvent {
}
/**
* Fired when the user clicks on the map.
* @hidden
*/
export interface MapClickEvent {
/**
* The location of the clicked point.
*/
location: Location;
/**
* The source DOM event instance
*/
originalEvent: any;
}
/**
* Fired when a marker has been displayed and has a DOM element assigned.
* @hidden
*/
export interface MapMarkerActivateEvent {
/**
* The marker instance.
*/
marker: MapMarker;
/**
* The marker layer instance.
*/
layer: MapLayer;
}
/**
* Fired when a marker has been created and is about to be displayed.
*
* Cancelling the event will prevent the marker from being shown.
* @hidden
*/
export interface MapMarkerCreatedEvent {
/**
* The marker instance.
*/
marker: MapMarker;
/**
* The marker layer instance.
*/
layer: MapLayer;
/**
* Prevents the default action for a specified event.
*/
preventDefault(): void;
}
/**
* Fired when a marker has been clicked or tapped.
* @hidden
*/
export interface MapMarkerClickEvent {
/**
* The marker instance.
*/
marker: MapMarker;
/**
* The marker layer instance.
*/
layer: MapLayer;
}
/**
* Fired while the map viewport is being moved.
* @hidden
*/
export interface MapPanEvent {
/**
* The map origin (top left or NW corner).
*/
origin: Location;
/**
* The current map center.
*/
center: Location;
/**
* The source DOM event instance
*/
originalEvent: any;
}
/**
* Fires after the map viewport has been moved.
* @hidden
*/
export interface MapPanEndEvent {
/**
* The map origin (top left or NW corner).
*/
origin: Location;
/**
* The current map center.
*/
center: Location;
/**
* The source DOM event instance
*/
originalEvent: any;
}
/**
* Fired when the map is reset.
*
* This typically occurs on initial load and after a zoom/center change.
* @hidden
*/
export interface MapResetEvent {
}
/**
* Fired when a shape is clicked or tapped.
* @hidden
*/
export interface MapShapeClickEvent {
/**
* The shape layer instance.
*/
layer: MapLayer;
/**
* The shape instance.
*/
shape: Element;
/**
* The source DOM event instance
*/
originalEvent: any;
}
/**
* Fired when a shape is created, but is not rendered yet.
* @hidden
*/
export interface MapShapeCreatedEvent {
/**
* The shape layer instance.
*/
layer: MapLayer;
/**
* The shape instance.
*/
shape: Element;
/**
* The original data item for this Shape.
*/
dataItem: any;
/**
* The shape location
*/
location: Location;
}
/**
* Fired when a [GeoJSON Feature](https://geojson.org/geojson-spec.html#feature-objects) is created on a shape layer.
* @hidden
*/
export interface MapShapeFeatureCreatedEvent {
/**
* The original data item for this Feature. Members include `geometries` and `properties`.
*/
dataItem: any;
/**
* The shape layer instance.
*/
layer: MapLayer;
/**
* The group containing feature shape instances.
*/
group: Group;
/**
* A reference to the `dataItem.properties` object.
*/
properties: any;
}
/**
* Fired when the mouse enters a shape.
*
* > This event will fire reliably only for shapes that have set fill color.
* > The opacity can still be set to 0 so the shapes appear to have no fill.
* @hidden
*/
export interface MapShapeMouseEnterEvent {
/**
* The shape layer instance.
*/
layer: MapLayer;
/**
* The shape instance.
*/
shape: Element;
/**
* The source DOM event instance
*/
originalEvent: any;
}
/**
* Fired when the mouse leaves a shape.
*
* > This event will fire reliably only for shapes that have set fill color.
* > The opacity can still be set to 0 so the shapes appear to have no fill.
* @hidden
*/
export interface MapShapeMouseLeaveEvent {
/**
* The shape layer instance.
*/
layer: MapLayer;
/**
* The shape instance.
*/
shape: Element;
/**
* The source DOM event instance
*/
originalEvent: any;
}
/**
* Fired when the map zoom level is about to change.
*
* Cancelling the event will prevent the user action.
* @hidden
*/
export interface MapZoomStartEvent {
/**
* The source DOM event instance
*/
originalEvent: any;
/**
* Prevents the default action for a specified event.
*/
preventDefault(): void;
}
/**
* Fired when the map zoom level has changed.
* @hidden
*/
export interface MapZoomEndEvent {
/**
* The source DOM event instance
*/
originalEvent: any;
}