@2gis/mapgl-terra-draw
Version:
TerraDraw adapter for MapGL JS API
91 lines (90 loc) • 3.7 kB
TypeScript
import { TerraDrawChanges, SetCursor, TerraDrawStylingFunction, TerraDrawExtend } from 'terra-draw';
import type * as mapgl from '@2gis/mapgl/types';
import { Style } from './styles';
export declare class TerraDrawMapGlAdapter extends TerraDrawExtend.TerraDrawBaseAdapter {
private _map;
private _mapgl;
private _container;
private _dynamicObjects;
private _style;
private _drawingStyle;
private featureStyles;
constructor(config: {
map: mapgl.Map;
mapgl: typeof mapgl;
style?: Style;
drawingStyle?: Style;
} & TerraDrawExtend.BaseAdapterConfig);
/**
* Returns the longitude and latitude coordinates from a given PointerEvent on the map.
* @param event The PointerEvent or MouseEvent containing the screen coordinates of the pointer.
* @returns An object with 'lng' and 'lat' properties representing the longitude and latitude, or null if the conversion is not possible.
*/
getLngLatFromEvent(event: PointerEvent | MouseEvent): {
lng: number;
lat: number;
};
/**
*Retrieves the HTML element of the Mapbox element that handles interaction events
* @returns The HTMLElement representing the map container.
*/
getMapEventElement(): HTMLCanvasElement;
/**
* Enables or disables the draggable functionality of the map.
* @param enabled Set to true to enable map dragging, or false to disable it.
*/
setDraggability(enabled: boolean): void;
/**
* Converts longitude and latitude coordinates to pixel coordinates in the map container.
* @param lng The longitude coordinate to project.
* @param lat The latitude coordinate to project.
* @returns An object with 'x' and 'y' properties representing the pixel coordinates within the map container.
*/
project(lng: number, lat: number): {
x: number;
y: number;
};
/**
* Converts pixel coordinates in the map container to longitude and latitude coordinates.
* @param x The x-coordinate in the map container to unproject.
* @param y The y-coordinate in the map container to unproject.
* @returns An object with 'lng' and 'lat' properties representing the longitude and latitude coordinates.
*/
unproject(x: number, y: number): {
lng: number;
lat: number;
};
/**
* Sets the cursor style for the map container.
* @param cursor The CSS cursor style to apply, or 'unset' to remove any previously applied cursor style.
*/
setCursor(cursor: Parameters<SetCursor>[0]): void;
/**
* Enables or disables the double-click to zoom functionality on the map.
* @param enabled Set to true to enable double-click to zoom, or false to disable it.
*/
setDoubleClickToZoom(enabled: boolean): void;
/**
* Updates the current style settings
*/
updateStyle(style: Partial<Style>): void;
/**
* Updates the current drawing style settings
*/
updateDrawingStyle(style: Partial<Style>): void;
private updateFeature;
/**
* Renders GeoJSON features on the map using the provided styling configuration.
* @param changes An object containing arrays of created, updated, and unchanged features to render.
* @param styling An object mapping draw modes to feature styling functions
*/
render(changes: TerraDrawChanges, _styling: TerraDrawStylingFunction): void;
/**
* Clears the map and store of all rendered data layers
* @returns void
* */
clear(): void;
getCoordinatePrecision(): number;
unregister(): void;
register(callbacks: TerraDrawExtend.TerraDrawCallbacks): void;
}