UNPKG

@igo2/geo

Version:
76 lines (75 loc) 2.82 kB
import { UntypedFormGroup } from '@angular/forms'; import { EntityKey, EntityStoreOptions, EntityStoreStrategyOptions } from '@igo2/common/entity'; import OlFeature from 'ol/Feature'; import type { default as OlGeometry } from 'ol/geom/Geometry'; import OlRenderFeature from 'ol/render/Feature'; import { Geometry } from 'geojson'; import { SourceFieldsOptionsParams } from '../../datasource/shared/datasources'; import type { VectorLayer } from '../../layer/shared/layers/vector-layer'; import type { IgoMap } from '../../map/shared/map'; import { FeatureMotion } from './feature.enums'; export interface Feature<P = Record<string, any>> { type: string; projection?: string; geometry?: FeatureGeometry; properties: P; extent?: [number, number, number, number]; meta?: FeatureMeta; ol?: OlFeature<OlGeometry> | OlRenderFeature; sourceId?: string; } export interface FeatureMeta { id: EntityKey; title?: string; mapTitle?: string; sourceTitle?: string; order?: number; icon?: string; style?: Record<string, any>; alias?: Record<string, string>; revision?: number; excludeAttribute?: string[]; excludeAttributeOffline?: string[]; } export type FeatureGeometry = { coordinates: any[]; } & Geometry; export interface FeatureStoreOptions extends EntityStoreOptions { map: IgoMap; layer?: VectorLayer; } export interface FeatureStoreStrategyOptions extends EntityStoreStrategyOptions { viewScale?: [number, number, number, number]; areaRatio?: number; } export interface FeatureStoreLoadingStrategyOptions extends FeatureStoreStrategyOptions { getFeatureId?: (Feature: any) => EntityKey; motion?: FeatureMotion; } export interface FeatureStorePropertyTypeStrategyOptions extends FeatureStoreStrategyOptions { map: IgoMap; } /** @deprecated use FeatureStoreStrategyOptions*/ export type FeatureStoreInMapExtentStrategyOptions = FeatureStoreStrategyOptions; /** @deprecated use FeatureStoreStrategyOptions*/ export type FeatureStoreInMapResolutionStrategyOptions = FeatureStoreStrategyOptions; /** @deprecated use FeatureStoreStrategyOptions*/ export type FeatureStoreLoadingLayerStrategyOptions = FeatureStoreStrategyOptions; export interface FeatureStoreSearchIndexStrategyOptions extends EntityStoreStrategyOptions { sourceFields?: SourceFieldsOptionsParams[]; percentDistinctValueRatio?: number; } export interface FeatureStoreSelectionStrategyOptions extends FeatureStoreStrategyOptions { map: IgoMap; getFeatureId?: (Feature: any) => EntityKey; motion?: FeatureMotion; layer?: VectorLayer; many?: boolean; hitTolerance?: number; dragBox?: boolean; } export interface FeatureFormSubmitEvent { form: UntypedFormGroup; feature: Feature | undefined; data: Feature; }