@igo2/geo
Version:
76 lines (75 loc) • 2.82 kB
TypeScript
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;
}