@yandex/ymaps3-types
Version:
Types for ymaps3 maps library
59 lines (58 loc) • 2.68 kB
TypeScript
import type { LngLat } from "./lng-lat";
interface GenericPolygonGeometry<TCoordinates> {
type: 'Polygon';
/**
* Polygon's rings.
*
* @remarks
* Inner rings may extend beyond outer ring.
* GeoJSON doesn't allow this, but there's a lot of data like this in this JS API.
*/
coordinates: TCoordinates[][];
}
interface GenericMultiPolygonGeometry<TCoordinates> {
type: 'MultiPolygon';
/** Array of polygons. See {@link GenericPolygonGeometry}. */
coordinates: TCoordinates[][][];
}
interface GenericLineStringGeometry<TCoordinates> {
type: 'LineString';
coordinates: TCoordinates[];
}
interface GenericMultiLineStringGeometry<TCoordinates> {
type: 'MultiLineString';
coordinates: TCoordinates[][];
}
interface GenericPointGeometry<TCoordinates> {
type: 'Point';
coordinates: TCoordinates;
}
type GenericGeometry<TCoordinates> = GenericPolygonGeometry<TCoordinates> | GenericMultiPolygonGeometry<TCoordinates> | GenericLineStringGeometry<TCoordinates> | GenericMultiLineStringGeometry<TCoordinates> | GenericPointGeometry<TCoordinates>;
interface GenericFeature<TCoordinates> {
type: 'Feature';
id: string;
geometry: GenericGeometry<TCoordinates>;
properties?: Record<string, unknown>;
}
interface GenericPointFeature<TCoordinates> extends GenericFeature<TCoordinates> {
geometry: GenericPointGeometry<TCoordinates>;
}
interface GenericYandexFeatureCollection<TCoordinates> {
type: 'FeatureCollection';
/**
* Could be collection of features or collection of feature collections.
* This is not defined by GEO JSON spec, but there is such cases in our data.
*/
features: (GenericFeature<TCoordinates> | GenericYandexFeatureCollection<TCoordinates>)[];
properties?: Record<string, unknown>;
}
interface GenericFeatureCollection<TCoordinates> extends GenericYandexFeatureCollection<TCoordinates> {
id: string;
features: GenericFeature<TCoordinates>[];
}
type LineStringGeometry = GenericLineStringGeometry<LngLat>;
type MultiLineStringGeometry = GenericMultiLineStringGeometry<LngLat>;
type MultiPolygonGeometry = GenericMultiPolygonGeometry<LngLat>;
type PointGeometry = GenericPointGeometry<LngLat>;
type PolygonGeometry = GenericPolygonGeometry<LngLat>;
export { GenericPolygonGeometry, GenericMultiPolygonGeometry, GenericLineStringGeometry, GenericMultiLineStringGeometry, GenericPointGeometry, GenericGeometry, GenericFeature, GenericPointFeature, GenericFeatureCollection, GenericYandexFeatureCollection, LineStringGeometry, MultiLineStringGeometry, MultiPolygonGeometry, PointGeometry, PolygonGeometry };