@geogirafe/lib-geoportal
Version:
GeoGirafe is a flexible application to build online geoportals.
140 lines (139 loc) • 5.57 kB
TypeScript
import { Map, Feature, MapBrowserEvent, MapEvent, Collection, Overlay } from 'ol';
import { ProjectionLike } from 'ol/proj';
import VectorSource from 'ol/source/Vector';
import VectorLayer from 'ol/layer/Vector';
import { DragBox } from 'ol/interaction';
import { DragBoxEvent } from 'ol/interaction/DragBox';
import { Geometry } from 'ol/geom';
import { Coordinate } from 'ol/coordinate';
import { Extent } from 'ol/extent';
import SwipeManager from './tools/swipemanager';
import WmsManager from '../../tools/wms/wmsmanager';
import WmsManager3d from './tools/wmsmanager3d';
import OsmManager from './tools/osmmanager';
import VectorTilesManager from './tools/vectortilesmanager';
import WmtsManager from './tools/wmtsmanager';
import ViewManager from './tools/viewmanager';
import LocalFileManager from './tools/localfilemanager';
import CogManager from './tools/cogmanager';
import GirafeHTMLElement from '../../base/GirafeHTMLElement';
import Basemap from '../../models/basemap';
import Layer from '../../models/layers/layer';
import MapPosition from '../../tools/state/mapposition';
import BaseLayer from '../../models/layers/baselayer';
import { FocusFeature } from './tools/focusfeature';
import XyzManager from './tools/xyzmanager';
import SelectionParam from '../../models/selectionparam';
declare global {
interface Window {
Cesium: unknown;
}
}
export default class MapComponent extends GirafeHTMLElement {
template: () => import("uhtml").Hole;
olMap: Map;
mapTarget: HTMLDivElement;
map3d: any;
map3dTarget: HTMLDivElement;
map3dShadowsTimestamp: number;
loading: boolean;
swiper: HTMLInputElement;
closeSwiperButton: HTMLButtonElement;
swipeManager: SwipeManager;
wmtsManager: WmtsManager;
wmsManager: WmsManager;
wmsManager3d: WmsManager3d | null;
osmManager: OsmManager;
cogManager: CogManager;
xyzManager: XyzManager;
viewManager: ViewManager;
vectorTilesManager: VectorTilesManager;
localFileManager: LocalFileManager;
defaultSrid: ProjectionLike;
crosshairFeature: Feature;
crosshairLayer: VectorLayer<VectorSource>;
tooltipContainer: HTMLElement;
tooltipOverlay: Overlay;
get projection(): import("ol/proj").Projection;
selectedFeaturesCollection: Collection<Feature<Geometry>>;
highlightedFeaturesCollection: Collection<Feature<Geometry>>;
selectionLayer: VectorLayer<VectorSource>;
highlightLayer: VectorLayer<VectorSource>;
pixelTolerance: number;
dragbox: DragBox;
focusFeature: FocusFeature;
private readonly initialPositionFromUrl;
constructor();
resetAllSwipedLayers(layers: BaseLayer[]): void;
registerEvents(): void;
activateSharedLayers(layers: BaseLayer[]): void;
render(): void;
/**
* Add a click handler to hide the popup.
*/
closePopup(): void;
listenOpenLayersEvents(): void;
onLoadStart(_e: MapEvent): void;
onLoadEnd(_e: MapEvent): void;
onPointerMove(e: MapBrowserEvent<PointerEvent>): void;
onMoveEnd(_e: MapEvent): void;
onClick(e: MapBrowserEvent<PointerEvent>): void;
onDragSelection(_e: DragBoxEvent): void;
select(extent: number[]): void;
onSelectFeatures(selectionParams: SelectionParam[]): Promise<void>;
connectedCallback(): void;
onCustomGirafeEvent(details: {
action: string;
layer: Layer;
extent: Extent;
}): void;
onChangeSwiped(layer: Layer): void;
/**
* updates icon position when swipe is moved
*/
updateCloseSwiperPosition(): void;
private setSelectLayerStyle;
private setHighlightLayerStyle;
private setCrosshairStyle;
create3dMap(): Promise<void>;
addAllActiveLayers3dMap(layer: BaseLayer): void;
onGlobeToggled(): Promise<void>;
onShadowsToggled(shadows: boolean): void;
onShadowsTimestampChanged(shadowsTimestamp: number): void;
onFeaturesSelected(features: Feature[]): void;
onFeatureHighlighted(features: Feature[]): void;
onPositionChanged(position: MapPosition): void;
onChangeScale(scale: number): void;
zoomToResolution(resolution: number): void;
zoomToZoom(zoom: number): void;
zoomToExtent(extent: Extent): void;
panToCoordinate(coordinate: Coordinate): void;
onChangeProjection(_oldSrid: string, newSrid: string): void;
onChangeDarkMode(): void;
onLayerToggled(layer: Layer): void;
onAddLayers(layerInfos: Layer[]): void;
onRemoveLayers(layerInfos: Layer[]): void;
onChangeOrder: () => void;
private reorderLayers;
onChangeOpacity(layerInfos: Layer): void;
onChangeFilter(layerInfos: Layer): void;
onChangeTime(layer: BaseLayer): void;
onChangeBasemap(basemap: Basemap): void;
/**
* Add the current map position and zoom level to the URL. The coordinates are provided in
* the default reference system or in WGS84.
*/
private updateUrlWithMapPosition;
/**
* Reads the map position data from the URL and applies it to the map,
* making sure map initialization and loading of the shared state have finished beforehand.
*/
private setMapPositionFromUrlAfterInit;
/**
* Updates the map position based on a provided position from the URL. Ensures the position is transformed
* to the correct map reference system and applies it to the map view if valid.
* @param {MapPosition} position - The map position object, including center coordinates in the default reference
* system or WGS84, and zoom level.
*/
private applyMapPositionFromUrl;
}