@nextgis/ngw-map 1.15.0 → 1.16.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/index.d.ts +2 -1
- package/lib/ngw-map.cjs.js +68 -74
- package/lib/ngw-map.cjs.js.map +1 -1
- package/lib/ngw-map.cjs.prod.js +1 -1
- package/lib/ngw-map.cjs.prod.js.map +1 -1
- package/lib/ngw-map.esm-browser.js +137 -109
- package/lib/ngw-map.esm-browser.js.map +1 -1
- package/lib/ngw-map.esm-browser.prod.js +1 -1
- package/lib/ngw-map.esm-browser.prod.js.map +1 -1
- package/lib/ngw-map.esm-bundler.js +69 -75
- package/lib/ngw-map.esm-bundler.js.map +1 -1
- package/lib/ngw-map.esm-bundler.prod.js +1 -1
- package/lib/ngw-map.esm-bundler.prod.js.map +1 -1
- package/lib/ngw-map.global.js +137 -109
- package/lib/ngw-map.global.js.map +1 -1
- package/lib/ngw-map.global.prod.js +1 -1
- package/lib/ngw-map.global.prod.js.map +1 -1
- package/package.json +9 -9
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ngw-map.cjs.prod.js","sources":["../src/utils/appendNgwResources.ts","../src/utils/prepareWebMapOptions.ts","../src/NgwMap.ts","../src/utils/getIentifyRadius.ts","../src/index.ts"],"sourcesContent":["import type { NgwLayerOptions } from '@nextgis/ngw-kit';\nimport type { NgwResourceDefinition } from '../interfaces';\n\nexport function appendNgwResources(\n options: NgwLayerOptions[],\n resource?: NgwResourceDefinition,\n defOptions?: Partial<NgwLayerOptions>,\n overwriteOptions?: Partial<NgwLayerOptions>,\n): void {\n if (typeof resource === 'number' || typeof resource === 'string') {\n resource = Number(resource);\n options.push({\n ...defOptions,\n resource,\n });\n } else if (Array.isArray(resource)) {\n const [resourceId, id] = resource;\n options.push({\n ...defOptions,\n resource: resourceId,\n id,\n ...overwriteOptions,\n });\n } else if (typeof resource === 'object') {\n options.push({ ...defOptions, ...resource, ...overwriteOptions });\n }\n}\n","import { deepmerge } from '@nextgis/utils';\nimport { StarterKit, MapOptions } from '@nextgis/webmap';\nimport NgwConnector from '@nextgis/ngw-connector';\nimport { QmsKit } from '@nextgis/qms-kit';\nimport { NgwKit } from '@nextgis/ngw-kit';\n\nimport { NgwMapOptions } from '../interfaces';\n\nexport const OPTIONS: NgwMapOptions = {\n target: 'map',\n baseUrl: '',\n whitlabel: false,\n controls: ['ZOOM', 'ATTRIBUTION'],\n controlsOptions: {\n ZOOM: { position: 'top-left' },\n ATTRIBUTION: {\n position: 'bottom-right',\n customAttribution: [\n '<a href=\"https://nextgis.com\" target=\"_blank\">©NextGIS</a>',\n ],\n },\n },\n pixelRadius: 10,\n};\n\nexport function prepareWebMapOptions(options: NgwMapOptions): MapOptions {\n const kits: StarterKit[] = [new QmsKit()];\n if (options.starterKits) {\n options.starterKits.forEach((x) => {\n kits.push(x);\n });\n }\n\n if (!options.connector) {\n options.connector = new NgwConnector({\n baseUrl: options.baseUrl || '',\n auth: options.auth,\n });\n } else if (options.connector) {\n options.baseUrl = options.connector.options.baseUrl;\n }\n options = deepmerge(OPTIONS, options);\n\n if (!options.center && !options.bounds) {\n options.bounds = [-179, -90, 180, 90];\n // options.maxBounds = options.bounds;\n }\n\n if (options.connector) {\n kits.push(\n new NgwKit({\n connector: options.connector,\n auth: options.auth,\n }),\n );\n }\n options = {\n ...options,\n starterKits: kits,\n create: false,\n };\n return options;\n}\n","import StrictEventEmitter from 'strict-event-emitter-types';\nimport { EventEmitter } from 'events';\nimport CancelablePromise from '@nextgis/cancelable-promise';\nimport { defined, isObject } from '@nextgis/utils';\nimport { AdapterOptions, WebMap } from '@nextgis/webmap';\nimport NgwConnector from '@nextgis/ngw-connector';\n\nimport {\n fetchNgwLayerFeatureCollection,\n fetchNgwResourceExtent,\n createNgwLayerAdapter,\n fetchNgwLayerFeature,\n fetchIdentifyGeoJson,\n sendIdentifyRequest,\n createIdentifyItem,\n fetchNgwLayerItems,\n fetchIdentifyItem,\n fetchNgwLayerItem,\n getIdentifyItems,\n getCompanyLogo,\n} from '@nextgis/ngw-kit';\nimport { deprecatedWarn } from '@nextgis/utils';\nimport { getIcon } from '@nextgis/icons';\n\nimport { appendNgwResources } from './utils/appendNgwResources';\nimport { prepareWebMapOptions } from './utils/prepareWebMapOptions';\n\nimport type { JsonMap, FeatureProperties } from '@nextgis/utils';\nimport type {\n FeatureItem,\n LayerFeature,\n ResourceItem,\n FeatureLayersIdentify,\n FeatureLayersIdentifyItems,\n} from '@nextgis/ngw-connector';\nimport type {\n OnLayerMouseOptions,\n ControlPosition,\n MapClickEvent,\n LayerAdapter,\n WebMapEvents,\n MapControls,\n FitOptions,\n LayerDef,\n} from '@nextgis/webmap';\nimport type {\n NgwIdentify,\n NgwWebmapItem,\n ResourceAdapter,\n FetchNgwItemsOptions,\n NgwFeatureItemResponse,\n NgwFeatureRequestOptions,\n} from '@nextgis/ngw-kit';\nimport type { Geometry, Feature, FeatureCollection } from 'geojson';\nimport type { QmsAdapterOptions } from '@nextgis/qms-kit';\nimport type { NgwLayerOptions } from '@nextgis/ngw-kit';\nimport type {\n NgwIdentifyEvent,\n NgwMapOptions,\n NgwMapEvents,\n NgwLayers,\n} from './interfaces';\nimport type { FetchNgwItemOptions } from '@nextgis/ngw-kit';\nimport { getIdentifyRadius } from './utils/getIentifyRadius';\n\ntype PromiseGroup = 'select' | 'identify';\n\n/**\n * Base class containing the logic of interaction WebMap with NextGIS services.\n *\n * @example\n * ```javascript\n * import { NgwMap } from '@nextgis/ngw-map';\n * import MapAdapter from '@nextgis/leaflet-map-adapter';\n * // styles are not included in the leaflet-map-adapter\n * import 'leaflet/dist/leaflet.css';\n *\n * const ngwMap = new NgwMap({\n * mapAdapter: new MapAdapter(),\n * target: 'map',\n * qmsId: 448,\n * baseUrl: 'https://demo.nextgis.com',\n * webmapId: 3985\n * });\n * ```\n */\nexport class NgwMap<\n M = unknown,\n L = unknown,\n C = unknown,\n O extends NgwMapOptions<M, C> = NgwMapOptions<M, C>,\n> extends WebMap<M, L, C, NgwMapEvents, O> {\n static getIcon = getIcon;\n\n readonly emitter: StrictEventEmitter<EventEmitter, NgwMapEvents> =\n new EventEmitter();\n connector!: NgwConnector;\n\n protected _ngwLayers: NgwLayers = {};\n private $$selectFromNgwRaster?: (ev: MapClickEvent) => void;\n private $$selectFromNgwVector?: (ev: OnLayerMouseOptions) => void;\n private _promises: Record<PromiseGroup, CancelablePromise[]> = {\n select: [],\n identify: [],\n };\n\n constructor(options: O) {\n super(prepareWebMapOptions(options) as O);\n if (options.connector) {\n this.connector = options.connector;\n }\n this._createWebMap().then(() => {\n const container = this.getContainer();\n if (container) {\n container.classList.add('ngw-map-container');\n }\n if (this.options.whitlabel) {\n this._whiteLabel();\n }\n });\n }\n\n /**\n * Organized addition to the map design and controls elements,\n * calling `control.onAdd(this.webMap.mapAdapter)`\n * @param control - object with onAdd and onRemove methods\n * or a string value indicating the name of the control installed in the map adapter\n * @param position - position relative to the map angles\n * @param options - initialization parameters if the control is set as a string value\n *\n * @example\n * ```javascript\n * ngwMap.addControl(new CustomControl(), 'bottom-left');\n * ngwMap.addControl('ZOOM', 'top-right')\n * ```\n */\n async addControl<K extends keyof MapControls>(\n controlDef: K | C,\n position: ControlPosition,\n options?: MapControls[K],\n ): Promise<any> {\n await this.onLoad('controls:create');\n return super.addControl(controlDef, position, options);\n }\n\n /**\n * Add any (style, vector, webmap) NGW layer by resource definition.\n * @param options - set layer identification parameters and render method.\n *\n * @example\n * ```javascript\n * // Add raster layer resourceId is the style of 4004 layer\n * ngwMap.addNgwLayer({ resource: 4005 });\n * // Add vector data from layer GEOJSON source\n * ngwMap.addNgwLayer({\n * resource: 4038,\n * adapter: 'GEOJSON',\n * adapterOptions: { paint: { color: 'red' } }\n * });\n * ```\n */\n async addNgwLayer(\n options: NgwLayerOptions,\n ): Promise<ResourceAdapter | undefined> {\n await this.onMapLoad();\n // @ts-ignore for backward compatibility\n const { keyname, resourceId } = options;\n\n if (keyname || resourceId !== undefined) {\n deprecatedWarn(\n 'set `resource` options instead of `keyname` or `resourceId`',\n );\n }\n\n const resource = options.resource;\n if (!keyname && !resourceId && !resource) {\n throw new Error(\n 'resource, resourceId or keyname is required parameter to add NGW layer',\n );\n }\n if (defined(this.options.baseUrl)) {\n try {\n if (defined(this.options.setViewDelay)) {\n options.adapterOptions = options.adapterOptions || {};\n if (!defined(options.adapterOptions.setViewDelay)) {\n options.adapterOptions.setViewDelay = this.options.setViewDelay;\n }\n }\n const adapter = createNgwLayerAdapter(options, this, this.connector);\n const adapterOpts = {\n visibility: true,\n // TODO: do not merge options, use only `adapterOptions`\n ...options,\n ...options.adapterOptions,\n } as AdapterOptions;\n const layer = (await this.addLayer(\n adapter,\n adapterOpts,\n )) as ResourceAdapter<M, L, AdapterOptions>;\n const id = layer && this.getLayerId(layer);\n if (layer && id) {\n this._ngwLayers[id] = { layer, resourceId: layer.resourceId };\n layer.options.name =\n layer.options.name ||\n (layer.item && layer.item.resource.display_name);\n if (layer.options.baselayer) {\n const visibleLayerBaseLayer = this.getActiveBaseLayer();\n if (visibleLayerBaseLayer) {\n return layer;\n }\n }\n }\n return layer;\n } catch (er) {\n const resId =\n isObject(resource) && 'id' in resource\n ? resource.id\n : keyname || resourceId || resource;\n console.error(`Can't add NGW layer ${resId}.`, er);\n }\n }\n }\n\n /**\n * Pans and zooms the map to the initial position specified in the options\n */\n fit(): void {\n const { center, zoom, bounds } = this.options;\n if (center) {\n this.setCenter(center);\n if (zoom) {\n this.setZoom(zoom);\n }\n } else if (bounds) {\n this.fitBounds(bounds);\n }\n }\n\n fetchNgwLayerItem<\n G extends Geometry = Geometry,\n P extends FeatureProperties = FeatureProperties,\n >(\n options: Omit<FetchNgwItemOptions<P>, 'connector'>,\n ): CancelablePromise<FeatureItem> {\n return fetchNgwLayerItem<G, P>({\n connector: this.connector,\n ...options,\n });\n }\n\n fetchNgwLayerItems<\n F extends FeatureProperties = FeatureProperties,\n G extends Geometry = Geometry,\n >(\n options: Omit<FetchNgwItemsOptions<F>, 'connector'>,\n ): CancelablePromise<FeatureItem<F, G>[]> {\n return fetchNgwLayerItems<G, F>({\n connector: this.connector,\n ...options,\n });\n }\n\n fetchNgwLayerFeature<\n G extends Geometry = Geometry,\n P extends FeatureProperties = FeatureProperties,\n >(\n options: Omit<FetchNgwItemOptions<P>, 'connector'>,\n ): CancelablePromise<Feature<G, P>> {\n return fetchNgwLayerFeature<G, P>({\n connector: this.connector,\n ...options,\n });\n }\n\n fetchNgwLayerFeatures<\n G extends Geometry | null = Geometry,\n P extends FeatureProperties = FeatureProperties,\n >(\n options: Omit<FetchNgwItemsOptions<P>, 'connector'>,\n ): CancelablePromise<FeatureCollection<G, P>> {\n return fetchNgwLayerFeatureCollection({\n connector: this.connector,\n ...options,\n });\n }\n\n fetchIdentifyItem<\n G extends Geometry = Geometry,\n P extends FeatureProperties = FeatureProperties,\n >(\n identify: NgwIdentify,\n requestOptions?: NgwFeatureRequestOptions,\n // multiple = false\n ): CancelablePromise<NgwFeatureItemResponse<P, G> | undefined> {\n const promise = fetchIdentifyItem<G, P>({\n identify,\n connector: this.connector,\n requestOptions,\n // multiple,\n });\n\n this._addPromise('identify', promise);\n return promise;\n }\n\n fetchIdentifyGeoJson(\n identify: NgwIdentify,\n multiple = false,\n ): CancelablePromise<Feature | undefined> {\n const promise = fetchIdentifyGeoJson({\n identify,\n connector: this.connector,\n multiple,\n });\n if (promise && 'then' in promise) {\n this._addPromise('identify', promise);\n return promise;\n } else {\n return CancelablePromise.resolve(promise);\n }\n }\n\n /**\n * @deprecated use {@link fetchIdentifyGeoJson} instead\n */\n getIdentifyGeoJson(\n identify: NgwIdentify,\n multiple = false,\n ): CancelablePromise<Feature | undefined> {\n return this.fetchIdentifyGeoJson(identify, multiple);\n }\n\n async getNgwLayers(): Promise<NgwLayers> {\n await this.onLoad();\n return this._ngwLayers;\n }\n\n async getNgwLayerByResourceId(id: number): Promise<LayerAdapter | undefined> {\n for (const n in this._ngwLayers) {\n const mem = this._ngwLayers[n];\n if (mem.resourceId === id) {\n return mem && mem.layer;\n } else if (mem.layer.getIdentificationIds) {\n const ids = await mem.layer.getIdentificationIds();\n if (ids && ids.some((x) => x === id)) {\n return mem.layer;\n }\n }\n if (mem.layer.getDependLayers) {\n const dependLayers = mem.layer.getDependLayers() as NgwWebmapItem[];\n const dependFit = dependLayers.find((x) => {\n return x.item && x.item.parentId === id;\n });\n if (dependFit) {\n return dependFit.layer;\n }\n }\n }\n }\n\n /**\n * Move map to layer. If the layer is NGW resource, extent will be received from the server\n *\n * @example\n * ```javascript\n * const ngwLayer = ngwMap.addNgwLayer({ id: 'ngw_layer_name', resource: 4005 });\n * ngwMap.fitLayer(ngwLayer);\n * ngwMap.fitLayer('ngw_layer_name');\n * ```\n */\n async fitLayer(layerDef: LayerDef, options?: FitOptions): Promise<void> {\n let id: string | undefined;\n if (typeof layerDef === 'string' || typeof layerDef === 'number') {\n id = String(id);\n } else {\n id = layerDef.id;\n }\n const ngwLayer = id && this._ngwLayers[id];\n if (ngwLayer) {\n if (ngwLayer.layer.getBounds) {\n const bounds = await ngwLayer.layer.getBounds();\n if (bounds) {\n this.fitBounds(bounds, options);\n }\n } else {\n let item: ResourceItem | undefined;\n if (ngwLayer.layer.item) {\n item = ngwLayer.layer.item;\n } else {\n const resourceId = ngwLayer.resourceId;\n item = await this.connector.getResource(resourceId);\n }\n if (item) {\n fetchNgwResourceExtent(item, this.connector).then((extent) => {\n if (extent) {\n this.fitBounds(extent, options);\n }\n });\n }\n }\n } else {\n super.fitLayer(layerDef, options);\n }\n }\n\n /** @deprecated use {@link NgwMap.fitLayer} instead */\n async zoomToLayer(layerDef: string | ResourceAdapter): Promise<void> {\n return this.fitLayer(layerDef);\n }\n\n onLoad(event: keyof NgwMapEvents = 'ngw-map:create'): Promise<this> {\n return super.onLoad(event as keyof WebMapEvents);\n }\n\n removeLayer(layerDef: LayerDef): void {\n const layer = this.getLayer(layerDef);\n if (layer) {\n const layerId = this.getLayerId(layer);\n if (layerId) {\n delete this._ngwLayers[layerId];\n }\n super.removeLayer(layer);\n }\n }\n\n enableSelection(): void {\n if (!this.$$selectFromNgwRaster) {\n this.$$selectFromNgwRaster = (ev: MapClickEvent) => {\n const count = this._getSelectListenersCount();\n if (count) {\n this._selectFromNgwRaster(ev);\n }\n };\n this.$$selectFromNgwVector = (ev: OnLayerMouseOptions) => {\n const count = this._getSelectListenersCount();\n if (count) {\n this._selectFromNgwVector(ev);\n }\n };\n this.emitter.on('click', this.$$selectFromNgwRaster);\n this.emitter.on('layer:click', this.$$selectFromNgwVector);\n }\n }\n\n disableSelection(): void {\n if (this.$$selectFromNgwRaster) {\n this.emitter.removeListener('click', this.$$selectFromNgwRaster);\n this.$$selectFromNgwRaster = undefined;\n }\n if (this.$$selectFromNgwVector) {\n this.emitter.removeListener('layer:click', this.$$selectFromNgwVector);\n\n this.$$selectFromNgwVector = undefined;\n }\n }\n\n /**\n * @deprecated use {@link NgwMap.fetchNgwLayerItem} instead\n */\n getNgwLayerItem<\n G extends Geometry = Geometry,\n P extends FeatureProperties = FeatureProperties,\n >(\n options: Omit<FetchNgwItemOptions<P>, 'connector'>,\n ): CancelablePromise<FeatureItem> {\n return this.fetchNgwLayerItem<G, P>(options);\n }\n\n /**\n * @deprecated use {@link NgwMap.fetchNgwLayerItems} instead\n */\n getNgwLayerItems<\n F extends FeatureProperties = FeatureProperties,\n G extends Geometry = Geometry,\n >(\n options: Omit<FetchNgwItemsOptions<F>, 'connector'>,\n ): CancelablePromise<FeatureItem<F, G>[]> {\n return this.fetchNgwLayerItems<F, G>(options);\n }\n\n /**\n * @deprecated use {@link NgwMap.fetchNgwLayerFeature} instead\n */\n getNgwLayerFeature<\n G extends Geometry = Geometry,\n P extends FeatureProperties = FeatureProperties,\n >(\n options: Omit<FetchNgwItemOptions<P>, 'connector'>,\n ): CancelablePromise<Feature<G, P>> {\n return this.fetchNgwLayerFeature<G, P>(options);\n }\n\n /**\n * @deprecated use {@link NgwMap.fetchNgwLayerFeatures} instead\n */\n getNgwLayerFeatures<\n G extends Geometry | null = Geometry,\n P extends JsonMap = JsonMap,\n >(\n options: FetchNgwItemsOptions<P>,\n ): CancelablePromise<FeatureCollection<G, P>> {\n return this.fetchNgwLayerFeatures(options);\n }\n\n /** @deprecated use {@link NgwMap.cancelPromises} instead */\n cancelPromise(...args: PromiseGroup[]): void {\n this.cancelPromises(...args);\n }\n\n cancelPromises(...args: PromiseGroup[]): void {\n if (!args.length) {\n args = Object.keys(this._promises) as PromiseGroup[];\n }\n args.forEach((name) => {\n const group = this._promises[name];\n if (group) {\n group.forEach((x) => x.cancel());\n this._promises[name] = [];\n }\n });\n }\n\n private _addPromise(groupName: PromiseGroup, promise: CancelablePromise) {\n const group = this._promises[groupName];\n if (group && group.indexOf(promise) === -1) {\n const removeFromGroup = () => {\n const index = group.indexOf(promise);\n if (index !== -1) {\n group.splice(index, 1);\n }\n };\n promise.then(removeFromGroup);\n promise.catch(removeFromGroup);\n group.push(promise);\n }\n }\n\n private _isFitFromResource() {\n const params = this._initMapState;\n if (params.zoom && params.center) {\n return false;\n }\n return true;\n }\n\n private async _createWebMap() {\n await this.create();\n if (this.options.qmsId) {\n this._addQmsBaseLayer();\n }\n if (this.options.osm) {\n this._addOsmBaseLayer();\n }\n\n const resources: NgwLayerOptions[] = [];\n const layerFitAllowed = this._isFitFromResource();\n if (this.options.webmapId) {\n appendNgwResources(resources, this.options.webmapId, {\n fit: layerFitAllowed,\n });\n }\n if (this.options.resources && Array.isArray(this.options.resources)) {\n for (const x of this.options.resources) {\n const overwriteOptions: Partial<NgwLayerOptions> = {};\n if (!layerFitAllowed) {\n overwriteOptions.fit = false;\n }\n appendNgwResources(resources, x, {}, overwriteOptions);\n }\n }\n for (const r of resources) {\n try {\n await this.addNgwLayer(r);\n } catch (er) {\n console.warn(er);\n }\n }\n this._emitStatusEvent('ngw-map:create', this);\n this.enableSelection();\n }\n\n private _addOsmBaseLayer() {\n this.addBaseLayer('OSM');\n }\n\n private _addQmsBaseLayer() {\n let qmsId: number;\n let qmsLayerName: string | undefined;\n if (Array.isArray(this.options.qmsId)) {\n qmsId = this.options.qmsId[0];\n qmsLayerName = this.options.qmsId[1];\n } else {\n qmsId = Number(this.options.qmsId);\n }\n const qmsLayerOptions: Partial<QmsAdapterOptions> = {\n qmsId,\n };\n if (qmsLayerName) {\n qmsLayerOptions.id = qmsLayerName;\n }\n\n this.addBaseLayer('QMS', qmsLayerOptions);\n }\n\n private _selectFromNgwVector(\n ev: OnLayerMouseOptions,\n ): FeatureLayersIdentify | undefined {\n const layer: ResourceAdapter = ev.layer as ResourceAdapter;\n const selectable = layer.options.selectable && this.isLayerVisible(layer);\n if (!selectable) {\n return undefined;\n }\n // Item property means layer is NgwResource\n const id = layer.item && layer.item.resource.id;\n const feature = ev.feature;\n\n if (id !== undefined && feature) {\n const featureId = feature.id;\n if (featureId) {\n const identifyFeature: LayerFeature = {\n id: Number(featureId),\n fields: feature.properties || {},\n label: `#${id}`,\n layerId: Number(id),\n parent: '',\n geom: feature.geometry,\n };\n const items: FeatureLayersIdentifyItems = {\n featureCount: 1,\n features: [identifyFeature],\n };\n const identify: FeatureLayersIdentify = {\n featureCount: 1,\n [id]: items,\n };\n this._emitStatusEvent(\n 'ngw:select',\n this._prepareToIdentify({\n ...identify,\n resources: [id],\n sourceType: 'vector',\n } as NgwIdentify),\n );\n return identify;\n }\n }\n }\n\n private async _selectFromNgwRaster(ev: MapClickEvent) {\n this._emitStatusEvent('ngw:preselect');\n\n const promises: Promise<number[] | undefined>[] = [];\n const layers = Object.values(this._ngwLayers);\n layers.sort((a, b) => {\n if (a.layer.order && b.layer.order) {\n return b.layer.order - a.layer.order;\n }\n return 1;\n });\n for (const l of layers) {\n const layer = l.layer;\n const identFunc =\n typeof layer.getIdentificationIds === 'function'\n ? layer.getIdentificationIds\n : false;\n if (identFunc && layer.options.selectable && this.isLayerVisible(layer)) {\n promises.push(identFunc.call(layer));\n }\n }\n const getIdsPromise = Promise.all(promises);\n const getIds = await getIdsPromise;\n const ids: number[] = [];\n for (const x of getIds) {\n if (x) {\n ids.push(...x);\n }\n }\n\n if (!ids.length) {\n this._emitStatusEvent('ngw:select', null);\n return;\n }\n\n const pixelRadius = this.options.pixelRadius || 10;\n const center = this.getCenter();\n let zoom = this.getZoom();\n zoom = zoom !== undefined ? zoom : 20;\n if (!center || !zoom) {\n this._emitStatusEvent('ngw:select', null);\n return;\n }\n const radius = getIdentifyRadius(center, zoom, pixelRadius);\n\n const selectPromise = sendIdentifyRequest(ev, {\n layers: ids,\n connector: this.connector,\n radius,\n }).then((resp) => {\n this._emitStatusEvent(\n 'ngw:select',\n this._prepareToIdentify({\n ...resp,\n resources: ids,\n sourceType: 'raster',\n event: ev,\n }),\n );\n return resp;\n });\n this._addPromise('select', selectPromise);\n return selectPromise;\n }\n\n private _prepareToIdentify<\n F = FeatureProperties,\n G extends Geometry = Geometry,\n >(identify: NgwIdentify): NgwIdentifyEvent {\n const getIdentifyItems_ = () => {\n return getIdentifyItems(identify, true).map((x) => {\n return createIdentifyItem<F, G>({\n feature: x.feature,\n connector: this.connector,\n });\n });\n };\n return {\n ...identify,\n getIdentifyItems: getIdentifyItems_,\n };\n }\n\n private _getSelectListenersCount() {\n return this.emitter.listenerCount('ngw:select');\n }\n\n private async _whiteLabel() {\n const container = this.getContainer();\n if (container) {\n const logo = await getCompanyLogo(\n this.connector,\n this.options.companyLogoOptions,\n );\n if (logo) {\n container.appendChild(logo);\n }\n }\n }\n}\n","import { LngLatArray } from '@nextgis/utils';\n\nexport function getIdentifyRadius(\n center: LngLatArray,\n zoom: number,\n pixelRadius: number,\n): number {\n pixelRadius = pixelRadius ?? 10;\n const metresPerPixel =\n (40075016.686 * Math.abs(Math.cos((center[1] * 180) / Math.PI))) /\n Math.pow(2, zoom + 8);\n const radius = pixelRadius * metresPerPixel * 0.0005;\n return radius;\n}\n","/**\n * @module ngw-map\n */\n\nimport { NgwMap } from './NgwMap';\nimport type { NgwMapOptions } from './interfaces';\n\nexport * from '@nextgis/webmap';\n\nexport * from './interfaces';\n\nexport { NgwMap };\n\nexport async function createNgwMap(options: NgwMapOptions): Promise<NgwMap> {\n const ngwMap = new NgwMap(options);\n return ngwMap.onLoad();\n}\n"],"names":["appendNgwResources","options","resource","defOptions","overwriteOptions","Number","push","__assign","Array","isArray","resourceId","id","OPTIONS","target","baseUrl","whitlabel","controls","controlsOptions","ZOOM","position","ATTRIBUTION","customAttribution","pixelRadius","NgwMap","_super","_this","kits","QmsKit","starterKits","forEach","x","connector","NgwConnector","auth","deepmerge","center","bounds","NgwKit","create","prepareWebMapOptions","this","emitter","EventEmitter","_ngwLayers","_promises","select","identify","_createWebMap","then","container","getContainer","classList","add","_whiteLabel","__extends","prototype","addControl","controlDef","onLoad","_a","sent","call","addNgwLayer","onMapLoad","keyname","undefined","deprecatedWarn","Error","defined","setViewDelay","adapterOptions","adapter","createNgwLayerAdapter","adapterOpts","visibility","addLayer","layer","getLayerId","name","item","display_name","baselayer","getActiveBaseLayer","resId","isObject","console","error","concat","er_1","fit","zoom","setCenter","setZoom","fitBounds","fetchNgwLayerItem","fetchNgwLayerItems","fetchNgwLayerFeature","fetchNgwLayerFeatures","fetchNgwLayerFeatureCollection","fetchIdentifyItem","requestOptions","promise","_addPromise","fetchIdentifyGeoJson","multiple","CancelablePromise","resolve","getIdentifyGeoJson","getNgwLayers","getNgwLayerByResourceId","_b","mem","getIdentificationIds","ids","_c","some","getDependLayers","dependLayers","dependFit","find","parentId","fitLayer","layerDef","String","ngwLayer","getBounds","getResource","fetchNgwResourceExtent","extent","zoomToLayer","event","removeLayer","getLayer","layerId","enableSelection","$$selectFromNgwRaster","ev","_getSelectListenersCount","_selectFromNgwRaster","$$selectFromNgwVector","_selectFromNgwVector","on","disableSelection","removeListener","getNgwLayerItem","getNgwLayerItems","getNgwLayerFeature","getNgwLayerFeatures","cancelPromise","args","_i","arguments","length","cancelPromises","apply","Object","keys","group","cancel","groupName","indexOf","removeFromGroup","index","splice","catch","_isFitFromResource","params","_initMapState","qmsId","_addQmsBaseLayer","osm","_addOsmBaseLayer","resources","layerFitAllowed","webmapId","resources_1","r","warn","er_2","_emitStatusEvent","addBaseLayer","qmsLayerName","qmsLayerOptions","selectable","isLayerVisible","feature","featureId","identifyFeature","fields","properties","label","parent","geom","geometry","featureCount","features","_prepareToIdentify","sourceType","promises","layers","values","sort","a","b","order","layers_1","identFunc","Promise","all","getIds","getIds_1","getCenter","getZoom","radius","Math","abs","cos","PI","pow","getIdentifyRadius","selectPromise","sendIdentifyRequest","resp","getIdentifyItems","map","createIdentifyItem","listenerCount","getCompanyLogo","companyLogoOptions","logo","appendChild","getIcon","WebMap"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"ngw-map.cjs.prod.js","sources":["../src/utils/appendNgwResources.ts","../src/utils/prepareWebMapOptions.ts","../src/NgwMap.ts","../src/index.ts"],"sourcesContent":["import type { NgwLayerOptions } from '@nextgis/ngw-kit';\nimport type { NgwResourceDefinition } from '../interfaces';\n\nexport function appendNgwResources(\n options: NgwLayerOptions[],\n resource?: NgwResourceDefinition,\n defOptions?: Partial<NgwLayerOptions>,\n overwriteOptions?: Partial<NgwLayerOptions>,\n): void {\n if (typeof resource === 'number' || typeof resource === 'string') {\n resource = Number(resource);\n options.push({\n ...defOptions,\n resource,\n });\n } else if (Array.isArray(resource)) {\n const [resourceId, id] = resource;\n options.push({\n ...defOptions,\n resource: resourceId,\n id,\n ...overwriteOptions,\n });\n } else if (typeof resource === 'object') {\n options.push({ ...defOptions, ...resource, ...overwriteOptions });\n }\n}\n","import { deepmerge } from '@nextgis/utils';\nimport { StarterKit, MapOptions } from '@nextgis/webmap';\nimport NgwConnector from '@nextgis/ngw-connector';\nimport { QmsKit } from '@nextgis/qms-kit';\nimport { NgwKit } from '@nextgis/ngw-kit';\n\nimport { NgwMapOptions } from '../interfaces';\n\nexport const OPTIONS: NgwMapOptions = {\n target: 'map',\n baseUrl: '',\n whitlabel: false,\n controls: ['ZOOM', 'ATTRIBUTION'],\n controlsOptions: {\n ZOOM: { position: 'top-left' },\n ATTRIBUTION: {\n position: 'bottom-right',\n customAttribution: [\n '<a href=\"https://nextgis.com\" target=\"_blank\">©NextGIS</a>',\n ],\n },\n },\n pixelRadius: 10,\n};\n\nexport function prepareWebMapOptions(options: NgwMapOptions): MapOptions {\n const kits: StarterKit[] = [new QmsKit()];\n if (options.starterKits) {\n options.starterKits.forEach((x) => {\n kits.push(x);\n });\n }\n\n if (!options.connector) {\n options.connector = new NgwConnector({\n baseUrl: options.baseUrl || '',\n auth: options.auth,\n });\n } else if (options.connector) {\n options.baseUrl = options.connector.options.baseUrl;\n }\n options = deepmerge(OPTIONS, options);\n\n if (!options.center && !options.bounds) {\n options.bounds = [-179, -90, 180, 90];\n // options.maxBounds = options.bounds;\n }\n\n if (options.connector) {\n kits.push(\n new NgwKit({\n connector: options.connector,\n auth: options.auth,\n }),\n );\n }\n options = {\n ...options,\n starterKits: kits,\n create: false,\n };\n return options;\n}\n","import StrictEventEmitter from 'strict-event-emitter-types';\nimport { EventEmitter } from 'events';\nimport CancelablePromise from '@nextgis/cancelable-promise';\nimport { defined, isObject, getIdentifyRadius } from '@nextgis/utils';\nimport { AdapterOptions, WebMap } from '@nextgis/webmap';\nimport NgwConnector from '@nextgis/ngw-connector';\n\nimport {\n fetchNgwLayerFeatureCollection,\n fetchNgwResourceExtent,\n createNgwLayerAdapter,\n fetchNgwLayerFeature,\n fetchIdentifyGeoJson,\n sendIdentifyRequest,\n createIdentifyItem,\n fetchNgwLayerItems,\n fetchIdentifyItem,\n fetchNgwLayerItem,\n getIdentifyItems,\n getCompanyLogo,\n} from '@nextgis/ngw-kit';\nimport { deprecatedWarn } from '@nextgis/utils';\nimport { getIcon } from '@nextgis/icons';\n\nimport { appendNgwResources } from './utils/appendNgwResources';\nimport { prepareWebMapOptions } from './utils/prepareWebMapOptions';\n\nimport type { JsonMap, FeatureProperties } from '@nextgis/utils';\nimport type {\n FeatureItem,\n LayerFeature,\n ResourceItem,\n FeatureLayersIdentify,\n FeatureLayersIdentifyItems,\n} from '@nextgis/ngw-connector';\nimport type {\n OnLayerMouseOptions,\n ControlPosition,\n MapClickEvent,\n LayerAdapter,\n WebMapEvents,\n MapControls,\n FitOptions,\n LayerDef,\n} from '@nextgis/webmap';\nimport type {\n NgwIdentify,\n NgwWebmapItem,\n ResourceAdapter,\n FetchNgwItemsOptions,\n NgwFeatureItemResponse,\n NgwFeatureRequestOptions,\n} from '@nextgis/ngw-kit';\nimport type { Geometry, Feature, FeatureCollection } from 'geojson';\nimport type { QmsAdapterOptions } from '@nextgis/qms-kit';\nimport type { NgwLayerOptions } from '@nextgis/ngw-kit';\nimport type {\n NgwIdentifyEvent,\n NgwMapOptions,\n NgwMapEvents,\n NgwLayers,\n} from './interfaces';\nimport type { FetchNgwItemOptions } from '@nextgis/ngw-kit';\n\ntype PromiseGroup = 'select' | 'identify';\n\n/**\n * Base class containing the logic of interaction WebMap with NextGIS services.\n *\n * @example\n * ```javascript\n * import { NgwMap } from '@nextgis/ngw-map';\n * import MapAdapter from '@nextgis/leaflet-map-adapter';\n * // styles are not included in the leaflet-map-adapter\n * import 'leaflet/dist/leaflet.css';\n *\n * const ngwMap = new NgwMap({\n * mapAdapter: new MapAdapter(),\n * target: 'map',\n * qmsId: 448,\n * baseUrl: 'https://demo.nextgis.com',\n * webmapId: 3985\n * });\n * ```\n */\nexport class NgwMap<\n M = unknown,\n L = unknown,\n C = unknown,\n O extends NgwMapOptions<M, C> = NgwMapOptions<M, C>,\n> extends WebMap<M, L, C, NgwMapEvents, O> {\n static getIcon = getIcon;\n\n readonly emitter: StrictEventEmitter<EventEmitter, NgwMapEvents> =\n new EventEmitter();\n connector!: NgwConnector;\n\n protected _ngwLayers: NgwLayers = {};\n private $$selectFromNgwRaster?: (ev: MapClickEvent) => void;\n private $$selectFromNgwVector?: (ev: OnLayerMouseOptions) => void;\n private _promises: Record<PromiseGroup, CancelablePromise[]> = {\n select: [],\n identify: [],\n };\n\n constructor(options: O) {\n super(prepareWebMapOptions(options) as O);\n if (options.connector) {\n this.connector = options.connector;\n }\n this._createWebMap().then(() => {\n const container = this.getContainer();\n if (container) {\n container.classList.add('ngw-map-container');\n }\n if (this.options.whitlabel) {\n this._whiteLabel();\n }\n });\n }\n\n /**\n * Organized addition to the map design and controls elements,\n * calling `control.onAdd(this.webMap.mapAdapter)`\n * @param control - object with onAdd and onRemove methods\n * or a string value indicating the name of the control installed in the map adapter\n * @param position - position relative to the map angles\n * @param options - initialization parameters if the control is set as a string value\n *\n * @example\n * ```javascript\n * ngwMap.addControl(new CustomControl(), 'bottom-left');\n * ngwMap.addControl('ZOOM', 'top-right')\n * ```\n */\n async addControl<K extends keyof MapControls>(\n controlDef: K | C,\n position: ControlPosition,\n options?: MapControls[K],\n ): Promise<any> {\n await this.onLoad('controls:create');\n return super.addControl(controlDef, position, options);\n }\n\n /**\n * Add any (style, vector, webmap) NGW layer by resource definition.\n * @param options - set layer identification parameters and render method.\n *\n * @example\n * ```javascript\n * // Add raster layer resourceId is the style of 4004 layer\n * ngwMap.addNgwLayer({ resource: 4005 });\n * // Add vector data from layer GEOJSON source\n * ngwMap.addNgwLayer({\n * resource: 4038,\n * adapter: 'GEOJSON',\n * adapterOptions: { paint: { color: 'red' } }\n * });\n * ```\n */\n async addNgwLayer(\n options: NgwLayerOptions,\n ): Promise<ResourceAdapter | undefined> {\n await this.onMapLoad();\n // @ts-ignore for backward compatibility\n const { keyname, resourceId } = options;\n\n if (keyname || resourceId !== undefined) {\n deprecatedWarn(\n 'set `resource` options instead of `keyname` or `resourceId`',\n );\n }\n\n const resource = options.resource;\n if (!keyname && !resourceId && !resource) {\n throw new Error(\n 'resource, resourceId or keyname is required parameter to add NGW layer',\n );\n }\n if (defined(this.options.baseUrl)) {\n try {\n if (defined(this.options.setViewDelay)) {\n options.adapterOptions = options.adapterOptions || {};\n if (!defined(options.adapterOptions.setViewDelay)) {\n options.adapterOptions.setViewDelay = this.options.setViewDelay;\n }\n }\n const adapter = createNgwLayerAdapter(options, this, this.connector);\n const adapterOpts = {\n visibility: true,\n // TODO: do not merge options, use only `adapterOptions`\n ...options,\n ...options.adapterOptions,\n } as AdapterOptions;\n const layer = (await this.addLayer(\n adapter,\n adapterOpts,\n )) as ResourceAdapter<M, L, AdapterOptions>;\n const id = layer && this.getLayerId(layer);\n if (layer && id) {\n this._ngwLayers[id] = { layer, resourceId: layer.resourceId };\n layer.options.name =\n layer.options.name ||\n (layer.item && layer.item.resource.display_name);\n if (layer.options.baselayer) {\n const visibleLayerBaseLayer = this.getActiveBaseLayer();\n if (visibleLayerBaseLayer) {\n return layer;\n }\n }\n }\n return layer;\n } catch (er) {\n const resId =\n isObject(resource) && 'id' in resource\n ? resource.id\n : keyname || resourceId || resource;\n console.error(`Can't add NGW layer ${resId}.`, er);\n }\n }\n }\n\n /**\n * Pans and zooms the map to the initial position specified in the options\n */\n fit(): void {\n const { center, zoom, bounds } = this.options;\n if (center) {\n this.setCenter(center);\n if (zoom) {\n this.setZoom(zoom);\n }\n } else if (bounds) {\n this.fitBounds(bounds);\n }\n }\n\n fetchNgwLayerItem<\n G extends Geometry = Geometry,\n P extends FeatureProperties = FeatureProperties,\n >(\n options: Omit<FetchNgwItemOptions<P>, 'connector'>,\n ): CancelablePromise<FeatureItem> {\n return fetchNgwLayerItem<G, P>({\n connector: this.connector,\n ...options,\n });\n }\n\n fetchNgwLayerItems<\n F extends FeatureProperties = FeatureProperties,\n G extends Geometry = Geometry,\n >(\n options: Omit<FetchNgwItemsOptions<F>, 'connector'>,\n ): CancelablePromise<FeatureItem<F, G>[]> {\n return fetchNgwLayerItems<G, F>({\n connector: this.connector,\n ...options,\n });\n }\n\n fetchNgwLayerFeature<\n G extends Geometry = Geometry,\n P extends FeatureProperties = FeatureProperties,\n >(\n options: Omit<FetchNgwItemOptions<P>, 'connector'>,\n ): CancelablePromise<Feature<G, P>> {\n return fetchNgwLayerFeature<G, P>({\n connector: this.connector,\n ...options,\n });\n }\n\n fetchNgwLayerFeatures<\n G extends Geometry | null = Geometry,\n P extends FeatureProperties = FeatureProperties,\n >(\n options: Omit<FetchNgwItemsOptions<P>, 'connector'>,\n ): CancelablePromise<FeatureCollection<G, P>> {\n return fetchNgwLayerFeatureCollection({\n connector: this.connector,\n ...options,\n });\n }\n\n fetchIdentifyItem<\n G extends Geometry = Geometry,\n P extends FeatureProperties = FeatureProperties,\n >(\n identify: NgwIdentify,\n requestOptions?: NgwFeatureRequestOptions,\n // multiple = false\n ): CancelablePromise<NgwFeatureItemResponse<P, G> | undefined> {\n const promise = fetchIdentifyItem<G, P>({\n identify,\n connector: this.connector,\n requestOptions,\n // multiple,\n });\n\n this._addPromise('identify', promise);\n return promise;\n }\n\n fetchIdentifyGeoJson(\n identify: NgwIdentify,\n multiple = false,\n ): CancelablePromise<Feature | undefined> {\n const promise = fetchIdentifyGeoJson({\n identify,\n connector: this.connector,\n multiple,\n });\n if (promise && 'then' in promise) {\n this._addPromise('identify', promise);\n return promise;\n } else {\n return CancelablePromise.resolve(promise);\n }\n }\n\n /**\n * @deprecated use {@link fetchIdentifyGeoJson} instead\n */\n getIdentifyGeoJson(\n identify: NgwIdentify,\n multiple = false,\n ): CancelablePromise<Feature | undefined> {\n return this.fetchIdentifyGeoJson(identify, multiple);\n }\n\n async getNgwLayers(): Promise<NgwLayers> {\n await this.onLoad();\n return this._ngwLayers;\n }\n\n async getNgwLayerByResourceId(id: number): Promise<LayerAdapter | undefined> {\n for (const n in this._ngwLayers) {\n const mem = this._ngwLayers[n];\n if (mem.resourceId === id) {\n return mem && mem.layer;\n } else if (mem.layer.getIdentificationIds) {\n const ids = await mem.layer.getIdentificationIds();\n if (ids && ids.some((x) => x === id)) {\n return mem.layer;\n }\n }\n if (mem.layer.getDependLayers) {\n const dependLayers = mem.layer.getDependLayers() as NgwWebmapItem[];\n const dependFit = dependLayers.find((x) => {\n return x.item && x.item.parentId === id;\n });\n if (dependFit) {\n return dependFit.layer;\n }\n }\n }\n }\n\n /**\n * Move map to layer. If the layer is NGW resource, extent will be received from the server\n *\n * @example\n * ```javascript\n * const ngwLayer = ngwMap.addNgwLayer({ id: 'ngw_layer_name', resource: 4005 });\n * ngwMap.fitLayer(ngwLayer);\n * ngwMap.fitLayer('ngw_layer_name');\n * ```\n */\n async fitLayer(layerDef: LayerDef, options?: FitOptions): Promise<void> {\n let id: string | undefined;\n if (typeof layerDef === 'string' || typeof layerDef === 'number') {\n id = String(id);\n } else {\n id = layerDef.id;\n }\n const ngwLayer = id && this._ngwLayers[id];\n if (ngwLayer) {\n if (ngwLayer.layer.getBounds) {\n const bounds = await ngwLayer.layer.getBounds();\n if (bounds) {\n this.fitBounds(bounds, options);\n }\n } else {\n let item: ResourceItem | undefined;\n if (ngwLayer.layer.item) {\n item = ngwLayer.layer.item;\n } else {\n const resourceId = ngwLayer.resourceId;\n item = await this.connector.getResource(resourceId);\n }\n if (item) {\n fetchNgwResourceExtent(item, this.connector).then((extent) => {\n if (extent) {\n this.fitBounds(extent, options);\n }\n });\n }\n }\n } else {\n super.fitLayer(layerDef, options);\n }\n }\n\n /** @deprecated use {@link NgwMap.fitLayer} instead */\n async zoomToLayer(layerDef: string | ResourceAdapter): Promise<void> {\n return this.fitLayer(layerDef);\n }\n\n onLoad(event: keyof NgwMapEvents = 'ngw-map:create'): Promise<this> {\n return super.onLoad(event as keyof WebMapEvents);\n }\n\n removeLayer(layerDef: LayerDef): void {\n const layer = this.getLayer(layerDef);\n if (layer) {\n const layerId = this.getLayerId(layer);\n if (layerId) {\n delete this._ngwLayers[layerId];\n }\n super.removeLayer(layer);\n }\n }\n\n enableSelection(): void {\n if (!this.$$selectFromNgwRaster) {\n this.$$selectFromNgwRaster = (ev: MapClickEvent) => {\n const count = this._getSelectListenersCount();\n if (count) {\n this.selectFromNgwRaster(ev);\n }\n };\n this.$$selectFromNgwVector = (ev: OnLayerMouseOptions) => {\n const count = this._getSelectListenersCount();\n if (count) {\n this._selectFromNgwVector(ev);\n }\n };\n this.emitter.on('click', this.$$selectFromNgwRaster);\n this.emitter.on('layer:click', this.$$selectFromNgwVector);\n }\n }\n\n disableSelection(): void {\n if (this.$$selectFromNgwRaster) {\n this.emitter.removeListener('click', this.$$selectFromNgwRaster);\n this.$$selectFromNgwRaster = undefined;\n }\n if (this.$$selectFromNgwVector) {\n this.emitter.removeListener('layer:click', this.$$selectFromNgwVector);\n\n this.$$selectFromNgwVector = undefined;\n }\n }\n\n /**\n * @deprecated use {@link NgwMap.fetchNgwLayerItem} instead\n */\n getNgwLayerItem<\n G extends Geometry = Geometry,\n P extends FeatureProperties = FeatureProperties,\n >(\n options: Omit<FetchNgwItemOptions<P>, 'connector'>,\n ): CancelablePromise<FeatureItem> {\n return this.fetchNgwLayerItem<G, P>(options);\n }\n\n /**\n * @deprecated use {@link NgwMap.fetchNgwLayerItems} instead\n */\n getNgwLayerItems<\n F extends FeatureProperties = FeatureProperties,\n G extends Geometry = Geometry,\n >(\n options: Omit<FetchNgwItemsOptions<F>, 'connector'>,\n ): CancelablePromise<FeatureItem<F, G>[]> {\n return this.fetchNgwLayerItems<F, G>(options);\n }\n\n /**\n * @deprecated use {@link NgwMap.fetchNgwLayerFeature} instead\n */\n getNgwLayerFeature<\n G extends Geometry = Geometry,\n P extends FeatureProperties = FeatureProperties,\n >(\n options: Omit<FetchNgwItemOptions<P>, 'connector'>,\n ): CancelablePromise<Feature<G, P>> {\n return this.fetchNgwLayerFeature<G, P>(options);\n }\n\n /**\n * @deprecated use {@link NgwMap.fetchNgwLayerFeatures} instead\n */\n getNgwLayerFeatures<\n G extends Geometry | null = Geometry,\n P extends JsonMap = JsonMap,\n >(\n options: FetchNgwItemsOptions<P>,\n ): CancelablePromise<FeatureCollection<G, P>> {\n return this.fetchNgwLayerFeatures(options);\n }\n\n /** @deprecated use {@link NgwMap.cancelPromises} instead */\n cancelPromise(...args: PromiseGroup[]): void {\n this.cancelPromises(...args);\n }\n\n cancelPromises(...args: PromiseGroup[]): void {\n if (!args.length) {\n args = Object.keys(this._promises) as PromiseGroup[];\n }\n args.forEach((name) => {\n const group = this._promises[name];\n if (group) {\n group.forEach((x) => x.cancel());\n this._promises[name] = [];\n }\n });\n }\n\n async selectFromNgwRaster(\n ev: MapClickEvent,\n ): Promise<NgwIdentifyEvent | undefined> {\n this._emitStatusEvent('ngw:preselect');\n\n const promises: Promise<number[] | undefined>[] = [];\n const layers = Object.values(this._ngwLayers);\n layers.sort((a, b) => {\n if (a.layer.order && b.layer.order) {\n return b.layer.order - a.layer.order;\n }\n return 1;\n });\n for (const l of layers) {\n const layer = l.layer;\n const identFunc =\n typeof layer.getIdentificationIds === 'function'\n ? layer.getIdentificationIds\n : false;\n if (identFunc && layer.options.selectable && this.isLayerVisible(layer)) {\n promises.push(identFunc.call(layer));\n }\n }\n const getIdsPromise = Promise.all(promises);\n const getIds = await getIdsPromise;\n const ids: number[] = [];\n for (const x of getIds) {\n if (x) {\n ids.push(...x);\n }\n }\n\n if (!ids.length) {\n this._emitStatusEvent('ngw:select', null);\n return;\n }\n\n const pixelRadius = this.options.pixelRadius || 10;\n const center = this.getCenter();\n let zoom = this.getZoom();\n zoom = zoom !== undefined ? zoom : 20;\n if (!center || !zoom) {\n this._emitStatusEvent('ngw:select', null);\n return;\n }\n const radius = getIdentifyRadius(center, zoom, pixelRadius);\n\n const selectPromise = sendIdentifyRequest(ev, {\n layers: ids,\n connector: this.connector,\n radius,\n }).then((resp) => {\n const identify: NgwIdentify = {\n ...resp,\n resources: ids,\n sourceType: 'raster',\n event: ev,\n };\n const identifyEvent: NgwIdentifyEvent = this._prepareToIdentify(identify);\n this._emitStatusEvent('ngw:select', identify);\n return identifyEvent;\n });\n this._addPromise('select', selectPromise);\n return selectPromise;\n }\n\n private _addPromise(groupName: PromiseGroup, promise: CancelablePromise) {\n const group = this._promises[groupName];\n if (group && group.indexOf(promise) === -1) {\n const removeFromGroup = () => {\n const index = group.indexOf(promise);\n if (index !== -1) {\n group.splice(index, 1);\n }\n };\n promise.then(removeFromGroup);\n promise.catch(removeFromGroup);\n group.push(promise);\n }\n }\n\n private _isFitFromResource() {\n const params = this._initMapState;\n if (params.zoom && params.center) {\n return false;\n }\n return true;\n }\n\n private async _createWebMap() {\n await this.create();\n if (this.options.qmsId) {\n this._addQmsBaseLayer();\n }\n if (this.options.osm) {\n this._addOsmBaseLayer();\n }\n\n const resources: NgwLayerOptions[] = [];\n const layerFitAllowed = this._isFitFromResource();\n if (this.options.webmapId) {\n appendNgwResources(resources, this.options.webmapId, {\n fit: layerFitAllowed,\n });\n }\n if (this.options.resources && Array.isArray(this.options.resources)) {\n for (const x of this.options.resources) {\n const overwriteOptions: Partial<NgwLayerOptions> = {};\n if (!layerFitAllowed) {\n overwriteOptions.fit = false;\n }\n appendNgwResources(resources, x, {}, overwriteOptions);\n }\n }\n for (const r of resources) {\n try {\n await this.addNgwLayer(r);\n } catch (er) {\n console.warn(er);\n }\n }\n this._emitStatusEvent('ngw-map:create', this);\n this.enableSelection();\n }\n\n private _addOsmBaseLayer() {\n this.addBaseLayer('OSM');\n }\n\n private _addQmsBaseLayer() {\n let qmsId: number;\n let qmsLayerName: string | undefined;\n if (Array.isArray(this.options.qmsId)) {\n qmsId = this.options.qmsId[0];\n qmsLayerName = this.options.qmsId[1];\n } else {\n qmsId = Number(this.options.qmsId);\n }\n const qmsLayerOptions: Partial<QmsAdapterOptions> = {\n qmsId,\n };\n if (qmsLayerName) {\n qmsLayerOptions.id = qmsLayerName;\n }\n\n this.addBaseLayer('QMS', qmsLayerOptions);\n }\n\n private _selectFromNgwVector(\n ev: OnLayerMouseOptions,\n ): FeatureLayersIdentify | undefined {\n const layer: ResourceAdapter = ev.layer as ResourceAdapter;\n const selectable = layer.options.selectable && this.isLayerVisible(layer);\n if (!selectable) {\n return undefined;\n }\n // Item property means layer is NgwResource\n const id = layer.item && layer.item.resource.id;\n const feature = ev.feature;\n\n if (id !== undefined && feature) {\n const featureId = feature.id;\n if (featureId) {\n const identifyFeature: LayerFeature = {\n id: Number(featureId),\n fields: feature.properties || {},\n label: `#${id}`,\n layerId: Number(id),\n parent: '',\n geom: feature.geometry,\n };\n const items: FeatureLayersIdentifyItems = {\n featureCount: 1,\n features: [identifyFeature],\n };\n const identify: FeatureLayersIdentify = {\n featureCount: 1,\n [id]: items,\n };\n this._emitStatusEvent(\n 'ngw:select',\n this._prepareToIdentify({\n ...identify,\n resources: [id],\n sourceType: 'vector',\n } as NgwIdentify),\n );\n return identify;\n }\n }\n }\n\n private _prepareToIdentify<\n F = FeatureProperties,\n G extends Geometry = Geometry,\n >(identify: NgwIdentify): NgwIdentifyEvent {\n const getIdentifyItems_ = () => {\n return getIdentifyItems(identify, true).map((x) => {\n return createIdentifyItem<F, G>({\n feature: x.feature,\n connector: this.connector,\n });\n });\n };\n return {\n ...identify,\n getIdentifyItems: getIdentifyItems_,\n };\n }\n\n private _getSelectListenersCount() {\n return this.emitter.listenerCount('ngw:select');\n }\n\n private async _whiteLabel() {\n const container = this.getContainer();\n if (container) {\n const logo = await getCompanyLogo(\n this.connector,\n this.options.companyLogoOptions,\n );\n if (logo) {\n container.appendChild(logo);\n }\n }\n }\n}\n","/**\n * @module ngw-map\n */\n\nimport { NgwMap } from './NgwMap';\nimport type { NgwMapOptions } from './interfaces';\n\nexport * from '@nextgis/webmap';\n\nexport * from './interfaces';\n\nexport { NgwMap };\n\nexport async function createNgwMap(options: NgwMapOptions): Promise<NgwMap> {\n const ngwMap = new NgwMap(options);\n return ngwMap.onLoad();\n}\n"],"names":["appendNgwResources","options","resource","defOptions","overwriteOptions","Number","push","__assign","Array","isArray","resourceId","id","OPTIONS","target","baseUrl","whitlabel","controls","controlsOptions","ZOOM","position","ATTRIBUTION","customAttribution","pixelRadius","NgwMap","_super","_this","kits","QmsKit","starterKits","forEach","x","connector","NgwConnector","auth","deepmerge","center","bounds","NgwKit","create","prepareWebMapOptions","this","emitter","EventEmitter","_ngwLayers","_promises","select","identify","_createWebMap","then","container","getContainer","classList","add","_whiteLabel","__extends","prototype","addControl","controlDef","onLoad","_a","sent","call","addNgwLayer","onMapLoad","keyname","undefined","deprecatedWarn","Error","defined","setViewDelay","adapterOptions","adapter","createNgwLayerAdapter","adapterOpts","visibility","addLayer","layer","getLayerId","name","item","display_name","baselayer","getActiveBaseLayer","resId","isObject","console","error","concat","er_1","fit","zoom","setCenter","setZoom","fitBounds","fetchNgwLayerItem","fetchNgwLayerItems","fetchNgwLayerFeature","fetchNgwLayerFeatures","fetchNgwLayerFeatureCollection","fetchIdentifyItem","requestOptions","promise","_addPromise","fetchIdentifyGeoJson","multiple","CancelablePromise","resolve","getIdentifyGeoJson","getNgwLayers","getNgwLayerByResourceId","_b","mem","getIdentificationIds","ids","_c","some","getDependLayers","dependLayers","dependFit","find","parentId","fitLayer","layerDef","String","ngwLayer","getBounds","getResource","fetchNgwResourceExtent","extent","zoomToLayer","event","removeLayer","getLayer","layerId","enableSelection","$$selectFromNgwRaster","ev","_getSelectListenersCount","selectFromNgwRaster","$$selectFromNgwVector","_selectFromNgwVector","on","disableSelection","removeListener","getNgwLayerItem","getNgwLayerItems","getNgwLayerFeature","getNgwLayerFeatures","cancelPromise","args","_i","arguments","length","cancelPromises","apply","Object","keys","group","cancel","_emitStatusEvent","promises","layers","values","sort","a","b","order","layers_1","identFunc","selectable","isLayerVisible","Promise","all","getIds","getIds_1","getCenter","getZoom","radius","getIdentifyRadius","selectPromise","sendIdentifyRequest","resp","resources","sourceType","identifyEvent","_prepareToIdentify","groupName","indexOf","removeFromGroup","index","splice","catch","_isFitFromResource","params","_initMapState","qmsId","_addQmsBaseLayer","osm","_addOsmBaseLayer","layerFitAllowed","webmapId","resources_1","r","warn","er_2","addBaseLayer","qmsLayerName","qmsLayerOptions","feature","featureId","identifyFeature","fields","properties","label","parent","geom","geometry","featureCount","features","getIdentifyItems","map","createIdentifyItem","listenerCount","getCompanyLogo","companyLogoOptions","logo","appendChild","getIcon","WebMap"],"mappings":"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"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/** Bundle of @nextgis/ngw-map; version: 1.
|
|
1
|
+
/** Bundle of @nextgis/ngw-map; version: 1.16.1; author: NextGIS */
|
|
2
2
|
/******************************************************************************
|
|
3
3
|
Copyright (c) Microsoft Corporation.
|
|
4
4
|
|
|
@@ -1172,7 +1172,9 @@ function getBoundsFeature(b) {
|
|
|
1172
1172
|
|
|
1173
1173
|
var d2r = Math.PI / 180; // degrees to radians
|
|
1174
1174
|
var r2d = 180 / Math.PI; // radians to degrees
|
|
1175
|
-
function getCirclePolygonCoordinates(lng, lat,
|
|
1175
|
+
function getCirclePolygonCoordinates(lng, lat,
|
|
1176
|
+
/** In kilometers */
|
|
1177
|
+
radius, points) {
|
|
1176
1178
|
if (radius === void 0) { radius = 10; }
|
|
1177
1179
|
if (points === void 0) { points = 6; }
|
|
1178
1180
|
// find the radius in lat/lon
|
|
@@ -1222,6 +1224,14 @@ function isLngLatBoundsArray(array) {
|
|
|
1222
1224
|
array.every(function (x) { return typeof x === 'number'; }));
|
|
1223
1225
|
}
|
|
1224
1226
|
|
|
1227
|
+
function getIdentifyRadius(center, zoom, pixelRadius) {
|
|
1228
|
+
pixelRadius = pixelRadius !== null && pixelRadius !== void 0 ? pixelRadius : 10;
|
|
1229
|
+
var metresPerPixel = (40075016.686 * Math.abs(Math.cos((center[1] * 180) / Math.PI))) /
|
|
1230
|
+
Math.pow(2, zoom + 8);
|
|
1231
|
+
var radius = pixelRadius * metresPerPixel * 0.0005;
|
|
1232
|
+
return radius;
|
|
1233
|
+
}
|
|
1234
|
+
|
|
1225
1235
|
/**
|
|
1226
1236
|
* Copy the values of all of the enumerable own properties from one or more source objects to a
|
|
1227
1237
|
* target object. Returns the target object.
|
|
@@ -1522,6 +1532,24 @@ function createPropertiesPaint(propertiesPaint) {
|
|
|
1522
1532
|
return mask;
|
|
1523
1533
|
};
|
|
1524
1534
|
}
|
|
1535
|
+
function expressionCallback(paint, defaultPaint, getPaintFunctions) {
|
|
1536
|
+
var expressionCallback = createExpressionCallback(paint);
|
|
1537
|
+
if (expressionCallback) {
|
|
1538
|
+
var expressionPaintCb = function (feature) {
|
|
1539
|
+
return preparePaint(expressionCallback(feature), defaultPaint, getPaintFunctions);
|
|
1540
|
+
};
|
|
1541
|
+
expressionPaintCb.paint = paint;
|
|
1542
|
+
return expressionPaintCb;
|
|
1543
|
+
}
|
|
1544
|
+
var newPaint = __assign({}, defaultPaint);
|
|
1545
|
+
newPaint = __assign(__assign({}, newPaint), paint);
|
|
1546
|
+
newPaint.fill = newPaint.fill !== undefined ? newPaint.fill : true;
|
|
1547
|
+
newPaint.stroke =
|
|
1548
|
+
newPaint.stroke !== undefined
|
|
1549
|
+
? newPaint.stroke
|
|
1550
|
+
: !newPaint.fill || !!(newPaint.strokeColor || newPaint.strokeOpacity);
|
|
1551
|
+
return newPaint;
|
|
1552
|
+
}
|
|
1525
1553
|
function preparePaint(paint, defaultPaint, getPaintFunctions) {
|
|
1526
1554
|
if (!paint) {
|
|
1527
1555
|
throw new Error('paint is empty');
|
|
@@ -1551,20 +1579,7 @@ function preparePaint(paint, defaultPaint, getPaintFunctions) {
|
|
|
1551
1579
|
return paint;
|
|
1552
1580
|
}
|
|
1553
1581
|
else {
|
|
1554
|
-
|
|
1555
|
-
if (expressionCallback_1) {
|
|
1556
|
-
var expressionPaintCb = function (feature) {
|
|
1557
|
-
return preparePaint(expressionCallback_1(feature), defaultPaint, getPaintFunctions);
|
|
1558
|
-
};
|
|
1559
|
-
expressionPaintCb.paint = paint;
|
|
1560
|
-
return expressionPaintCb;
|
|
1561
|
-
}
|
|
1562
|
-
newPaint = __assign(__assign({}, newPaint), paint);
|
|
1563
|
-
newPaint.fill = newPaint.fill !== undefined ? newPaint.fill : true;
|
|
1564
|
-
newPaint.stroke =
|
|
1565
|
-
newPaint.stroke !== undefined
|
|
1566
|
-
? newPaint.stroke
|
|
1567
|
-
: !newPaint.fill || !!(newPaint.strokeColor || newPaint.strokeOpacity);
|
|
1582
|
+
newPaint = expressionCallback(paint, defaultPaint, getPaintFunctions);
|
|
1568
1583
|
}
|
|
1569
1584
|
if (isPaintCallback(newPaint)) {
|
|
1570
1585
|
return newPaint;
|
|
@@ -4644,6 +4659,9 @@ var NgwConnector$1 = /** @class */ (function () {
|
|
|
4644
4659
|
if (this.options.route) {
|
|
4645
4660
|
this.routeStr = this.options.route;
|
|
4646
4661
|
}
|
|
4662
|
+
if (this.options.requestTransform) {
|
|
4663
|
+
this.requestTransform = this.options.requestTransform;
|
|
4664
|
+
}
|
|
4647
4665
|
this.resources = new ResourcesControl(this);
|
|
4648
4666
|
addConnector(this);
|
|
4649
4667
|
}
|
|
@@ -4651,6 +4669,9 @@ var NgwConnector$1 = /** @class */ (function () {
|
|
|
4651
4669
|
NgwConnector.create = function (options) {
|
|
4652
4670
|
return new this(options);
|
|
4653
4671
|
};
|
|
4672
|
+
NgwConnector.prototype.setRequestTransform = function (requestTransform) {
|
|
4673
|
+
this.requestTransform = requestTransform;
|
|
4674
|
+
};
|
|
4654
4675
|
/**
|
|
4655
4676
|
* Fast way to specify the connection address to NextGIS Web.
|
|
4656
4677
|
* The current connection will be severed.
|
|
@@ -4910,9 +4931,8 @@ var NgwConnector$1 = /** @class */ (function () {
|
|
|
4910
4931
|
if (params) {
|
|
4911
4932
|
url = template(url, params);
|
|
4912
4933
|
}
|
|
4913
|
-
|
|
4914
|
-
|
|
4915
|
-
return this._loadData(encodeURI(url), options);
|
|
4934
|
+
url = encodeURI(fixUrlStr(url));
|
|
4935
|
+
return this._loadData(url, options);
|
|
4916
4936
|
}
|
|
4917
4937
|
else {
|
|
4918
4938
|
throw new Error('Empty `url` not allowed');
|
|
@@ -5005,6 +5025,11 @@ var NgwConnector$1 = /** @class */ (function () {
|
|
|
5005
5025
|
// options.withCredentials = true;
|
|
5006
5026
|
options.headers = __assign(__assign({}, _this.getAuthorizationHeaders()), options.headers);
|
|
5007
5027
|
}
|
|
5028
|
+
if (_this.requestTransform) {
|
|
5029
|
+
var _a = _this.requestTransform(url, options), transUrl = _a[0], transOptions = _a[1];
|
|
5030
|
+
url = transUrl;
|
|
5031
|
+
options = transOptions;
|
|
5032
|
+
}
|
|
5008
5033
|
loadData(url, resolve, options, reject, onCancel);
|
|
5009
5034
|
})
|
|
5010
5035
|
.then(function (resp) {
|
|
@@ -5029,6 +5054,7 @@ var NgwConnector$1 = /** @class */ (function () {
|
|
|
5029
5054
|
typeof options.signal.addEventListener === 'function') {
|
|
5030
5055
|
options.signal.addEventListener('abort', function () {
|
|
5031
5056
|
request.cancel();
|
|
5057
|
+
_this._cleanActiveRequests(request);
|
|
5032
5058
|
});
|
|
5033
5059
|
}
|
|
5034
5060
|
this.activeRequests.push(request);
|
|
@@ -6631,10 +6657,12 @@ var NgwWebmapItem = /** @class */ (function (_super) {
|
|
|
6631
6657
|
};
|
|
6632
6658
|
if (item.item_type === 'group' || item.item_type === 'root') {
|
|
6633
6659
|
if (item.children && item.children.length) {
|
|
6634
|
-
this.getChildren(item)
|
|
6635
|
-
|
|
6636
|
-
|
|
6637
|
-
|
|
6660
|
+
var children = this.getChildren(item);
|
|
6661
|
+
for (var _i = 0, children_1 = children; _i < children_1.length; _i++) {
|
|
6662
|
+
var x = children_1[_i];
|
|
6663
|
+
var children_2 = new this.constructor(this.webMap, x, this.options, this.connector, this);
|
|
6664
|
+
this.tree.addChild(children_2);
|
|
6665
|
+
}
|
|
6638
6666
|
}
|
|
6639
6667
|
return Promise.resolve();
|
|
6640
6668
|
}
|
|
@@ -6675,7 +6703,7 @@ var NgwWebmapItem = /** @class */ (function (_super) {
|
|
|
6675
6703
|
headers: this.options.headers,
|
|
6676
6704
|
crossOrigin: this.options.crossOrigin,
|
|
6677
6705
|
setViewDelay: this.options.setViewDelay,
|
|
6678
|
-
params: { resource: this.item.resourceId },
|
|
6706
|
+
params: { resource: this.item.resourceId, item: this.item },
|
|
6679
6707
|
};
|
|
6680
6708
|
if (this.options.order) {
|
|
6681
6709
|
var subOrder = this.options.drawOrderEnabled && 'draw_order_position' in item
|
|
@@ -6686,6 +6714,9 @@ var NgwWebmapItem = /** @class */ (function (_super) {
|
|
|
6686
6714
|
var subLevel = String(subOrder).padStart(4, '0');
|
|
6687
6715
|
options.order = Number((this.options.order | 0) + '.' + subLevel);
|
|
6688
6716
|
}
|
|
6717
|
+
if (this.options.popupOptions) {
|
|
6718
|
+
options.popupOptions = this.options.popupOptions;
|
|
6719
|
+
}
|
|
6689
6720
|
if (item.item_type === 'layer') {
|
|
6690
6721
|
var _a = this._getZoomRange(item), maxZoom = _a.maxZoom, minZoom = _a.minZoom;
|
|
6691
6722
|
objectAssign(options, {
|
|
@@ -6733,8 +6764,8 @@ var NgwWebmapItem = /** @class */ (function (_super) {
|
|
|
6733
6764
|
};
|
|
6734
6765
|
NgwWebmapItem.prototype._sumUp = function (children, totalValue) {
|
|
6735
6766
|
if (totalValue === void 0) { totalValue = 0; }
|
|
6736
|
-
for (var _i = 0,
|
|
6737
|
-
var child =
|
|
6767
|
+
for (var _i = 0, children_3 = children; _i < children_3.length; _i++) {
|
|
6768
|
+
var child = children_3[_i];
|
|
6738
6769
|
if (child.item_type === 'layer') {
|
|
6739
6770
|
totalValue += 1;
|
|
6740
6771
|
child.draw_order_position = child.draw_order_position || totalValue;
|
|
@@ -7041,8 +7072,6 @@ var NgwWebmapLayerAdapter = /** @class */ (function () {
|
|
|
7041
7072
|
this._extent &&
|
|
7042
7073
|
extentConstrained) {
|
|
7043
7074
|
this.options.webMap.setView({ maxBounds: this._extent });
|
|
7044
|
-
// @ts-ignore
|
|
7045
|
-
window.webmap = this.options.webMap;
|
|
7046
7075
|
}
|
|
7047
7076
|
return [2 /*return*/, this.layer];
|
|
7048
7077
|
}
|
|
@@ -7215,6 +7244,7 @@ var NgwWebmapLayerAdapter = /** @class */ (function () {
|
|
|
7215
7244
|
options.minZoom = _this.options.minZoom;
|
|
7216
7245
|
options.maxZoom = _this.options.maxZoom;
|
|
7217
7246
|
options.drawOrderEnabled = webmap_1.draw_order_enabled;
|
|
7247
|
+
options.popupOptions = _this.options.popupOptions;
|
|
7218
7248
|
var layer = new _this.NgwWebmapItem(_this.options.webMap, webmap_1.root_item, options, _this.options.connector);
|
|
7219
7249
|
layer.emitter.on('init', function () { return resolve(layer); });
|
|
7220
7250
|
})];
|
|
@@ -7345,30 +7375,34 @@ var NgwWebmapLayerAdapter = /** @class */ (function () {
|
|
|
7345
7375
|
};
|
|
7346
7376
|
NgwWebmapLayerAdapter.prototype._getWebMapIds = function () {
|
|
7347
7377
|
return __awaiter(this, void 0, void 0, function () {
|
|
7348
|
-
var webMapItem, layers,
|
|
7349
|
-
var _this = this;
|
|
7378
|
+
var webMapItem, layers, promises, _loop_2, this_2, _i, layers_1, x, ids;
|
|
7350
7379
|
return __generator(this, function (_a) {
|
|
7351
7380
|
switch (_a.label) {
|
|
7352
7381
|
case 0:
|
|
7353
7382
|
webMapItem = this.layer;
|
|
7354
7383
|
if (!(webMapItem && webMapItem.item.item_type === 'root')) return [3 /*break*/, 2];
|
|
7355
7384
|
layers = webMapItem.tree.getDescendants();
|
|
7356
|
-
|
|
7357
|
-
|
|
7385
|
+
promises = [];
|
|
7386
|
+
_loop_2 = function (x) {
|
|
7358
7387
|
var item = x.item;
|
|
7359
7388
|
if (item.item_type === 'layer') {
|
|
7360
7389
|
var id = item.layer_style_id;
|
|
7361
|
-
var promise =
|
|
7390
|
+
var promise = this_2.options.connector.getResource(id).then(function (y) {
|
|
7362
7391
|
if (y) {
|
|
7363
7392
|
var parentId = Number(y.resource.parent.id);
|
|
7364
7393
|
item.parentId = parentId;
|
|
7365
7394
|
return parentId;
|
|
7366
7395
|
}
|
|
7367
7396
|
});
|
|
7368
|
-
|
|
7397
|
+
promises.push(promise);
|
|
7369
7398
|
}
|
|
7370
|
-
}
|
|
7371
|
-
|
|
7399
|
+
};
|
|
7400
|
+
this_2 = this;
|
|
7401
|
+
for (_i = 0, layers_1 = layers; _i < layers_1.length; _i++) {
|
|
7402
|
+
x = layers_1[_i];
|
|
7403
|
+
_loop_2(x);
|
|
7404
|
+
}
|
|
7405
|
+
return [4 /*yield*/, Promise.all(promises)];
|
|
7372
7406
|
case 1:
|
|
7373
7407
|
ids = _a.sent();
|
|
7374
7408
|
return [2 /*return*/, ids.filter(function (x) { return x !== undefined; })];
|
|
@@ -8295,14 +8329,6 @@ function prepareWebMapOptions(options) {
|
|
|
8295
8329
|
return options;
|
|
8296
8330
|
}
|
|
8297
8331
|
|
|
8298
|
-
function getIdentifyRadius(center, zoom, pixelRadius) {
|
|
8299
|
-
pixelRadius = pixelRadius !== null && pixelRadius !== void 0 ? pixelRadius : 10;
|
|
8300
|
-
var metresPerPixel = (40075016.686 * Math.abs(Math.cos((center[1] * 180) / Math.PI))) /
|
|
8301
|
-
Math.pow(2, zoom + 8);
|
|
8302
|
-
var radius = pixelRadius * metresPerPixel * 0.0005;
|
|
8303
|
-
return radius;
|
|
8304
|
-
}
|
|
8305
|
-
|
|
8306
8332
|
/**
|
|
8307
8333
|
* Base class containing the logic of interaction WebMap with NextGIS services.
|
|
8308
8334
|
*
|
|
@@ -8651,7 +8677,7 @@ var NgwMap = /** @class */ (function (_super) {
|
|
|
8651
8677
|
this.$$selectFromNgwRaster = function (ev) {
|
|
8652
8678
|
var count = _this._getSelectListenersCount();
|
|
8653
8679
|
if (count) {
|
|
8654
|
-
_this.
|
|
8680
|
+
_this.selectFromNgwRaster(ev);
|
|
8655
8681
|
}
|
|
8656
8682
|
};
|
|
8657
8683
|
this.$$selectFromNgwVector = function (ev) {
|
|
@@ -8723,6 +8749,72 @@ var NgwMap = /** @class */ (function (_super) {
|
|
|
8723
8749
|
}
|
|
8724
8750
|
});
|
|
8725
8751
|
};
|
|
8752
|
+
NgwMap.prototype.selectFromNgwRaster = function (ev) {
|
|
8753
|
+
return __awaiter(this, void 0, void 0, function () {
|
|
8754
|
+
var promises, layers, _i, layers_1, l, layer, identFunc, getIdsPromise, getIds, ids, _a, getIds_1, x, pixelRadius, center, zoom, radius, selectPromise;
|
|
8755
|
+
var _this = this;
|
|
8756
|
+
return __generator(this, function (_b) {
|
|
8757
|
+
switch (_b.label) {
|
|
8758
|
+
case 0:
|
|
8759
|
+
this._emitStatusEvent('ngw:preselect');
|
|
8760
|
+
promises = [];
|
|
8761
|
+
layers = Object.values(this._ngwLayers);
|
|
8762
|
+
layers.sort(function (a, b) {
|
|
8763
|
+
if (a.layer.order && b.layer.order) {
|
|
8764
|
+
return b.layer.order - a.layer.order;
|
|
8765
|
+
}
|
|
8766
|
+
return 1;
|
|
8767
|
+
});
|
|
8768
|
+
for (_i = 0, layers_1 = layers; _i < layers_1.length; _i++) {
|
|
8769
|
+
l = layers_1[_i];
|
|
8770
|
+
layer = l.layer;
|
|
8771
|
+
identFunc = typeof layer.getIdentificationIds === 'function'
|
|
8772
|
+
? layer.getIdentificationIds
|
|
8773
|
+
: false;
|
|
8774
|
+
if (identFunc && layer.options.selectable && this.isLayerVisible(layer)) {
|
|
8775
|
+
promises.push(identFunc.call(layer));
|
|
8776
|
+
}
|
|
8777
|
+
}
|
|
8778
|
+
getIdsPromise = Promise.all(promises);
|
|
8779
|
+
return [4 /*yield*/, getIdsPromise];
|
|
8780
|
+
case 1:
|
|
8781
|
+
getIds = _b.sent();
|
|
8782
|
+
ids = [];
|
|
8783
|
+
for (_a = 0, getIds_1 = getIds; _a < getIds_1.length; _a++) {
|
|
8784
|
+
x = getIds_1[_a];
|
|
8785
|
+
if (x) {
|
|
8786
|
+
ids.push.apply(ids, x);
|
|
8787
|
+
}
|
|
8788
|
+
}
|
|
8789
|
+
if (!ids.length) {
|
|
8790
|
+
this._emitStatusEvent('ngw:select', null);
|
|
8791
|
+
return [2 /*return*/];
|
|
8792
|
+
}
|
|
8793
|
+
pixelRadius = this.options.pixelRadius || 10;
|
|
8794
|
+
center = this.getCenter();
|
|
8795
|
+
zoom = this.getZoom();
|
|
8796
|
+
zoom = zoom !== undefined ? zoom : 20;
|
|
8797
|
+
if (!center || !zoom) {
|
|
8798
|
+
this._emitStatusEvent('ngw:select', null);
|
|
8799
|
+
return [2 /*return*/];
|
|
8800
|
+
}
|
|
8801
|
+
radius = getIdentifyRadius(center, zoom, pixelRadius);
|
|
8802
|
+
selectPromise = sendIdentifyRequest(ev, {
|
|
8803
|
+
layers: ids,
|
|
8804
|
+
connector: this.connector,
|
|
8805
|
+
radius: radius,
|
|
8806
|
+
}).then(function (resp) {
|
|
8807
|
+
var identify = __assign(__assign({}, resp), { resources: ids, sourceType: 'raster', event: ev });
|
|
8808
|
+
var identifyEvent = _this._prepareToIdentify(identify);
|
|
8809
|
+
_this._emitStatusEvent('ngw:select', identify);
|
|
8810
|
+
return identifyEvent;
|
|
8811
|
+
});
|
|
8812
|
+
this._addPromise('select', selectPromise);
|
|
8813
|
+
return [2 /*return*/, selectPromise];
|
|
8814
|
+
}
|
|
8815
|
+
});
|
|
8816
|
+
});
|
|
8817
|
+
};
|
|
8726
8818
|
NgwMap.prototype._addPromise = function (groupName, promise) {
|
|
8727
8819
|
var group = this._promises[groupName];
|
|
8728
8820
|
if (group && group.indexOf(promise) === -1) {
|
|
@@ -8858,70 +8950,6 @@ var NgwMap = /** @class */ (function (_super) {
|
|
|
8858
8950
|
}
|
|
8859
8951
|
}
|
|
8860
8952
|
};
|
|
8861
|
-
NgwMap.prototype._selectFromNgwRaster = function (ev) {
|
|
8862
|
-
return __awaiter(this, void 0, void 0, function () {
|
|
8863
|
-
var promises, layers, _i, layers_1, l, layer, identFunc, getIdsPromise, getIds, ids, _a, getIds_1, x, pixelRadius, center, zoom, radius, selectPromise;
|
|
8864
|
-
var _this = this;
|
|
8865
|
-
return __generator(this, function (_b) {
|
|
8866
|
-
switch (_b.label) {
|
|
8867
|
-
case 0:
|
|
8868
|
-
this._emitStatusEvent('ngw:preselect');
|
|
8869
|
-
promises = [];
|
|
8870
|
-
layers = Object.values(this._ngwLayers);
|
|
8871
|
-
layers.sort(function (a, b) {
|
|
8872
|
-
if (a.layer.order && b.layer.order) {
|
|
8873
|
-
return b.layer.order - a.layer.order;
|
|
8874
|
-
}
|
|
8875
|
-
return 1;
|
|
8876
|
-
});
|
|
8877
|
-
for (_i = 0, layers_1 = layers; _i < layers_1.length; _i++) {
|
|
8878
|
-
l = layers_1[_i];
|
|
8879
|
-
layer = l.layer;
|
|
8880
|
-
identFunc = typeof layer.getIdentificationIds === 'function'
|
|
8881
|
-
? layer.getIdentificationIds
|
|
8882
|
-
: false;
|
|
8883
|
-
if (identFunc && layer.options.selectable && this.isLayerVisible(layer)) {
|
|
8884
|
-
promises.push(identFunc.call(layer));
|
|
8885
|
-
}
|
|
8886
|
-
}
|
|
8887
|
-
getIdsPromise = Promise.all(promises);
|
|
8888
|
-
return [4 /*yield*/, getIdsPromise];
|
|
8889
|
-
case 1:
|
|
8890
|
-
getIds = _b.sent();
|
|
8891
|
-
ids = [];
|
|
8892
|
-
for (_a = 0, getIds_1 = getIds; _a < getIds_1.length; _a++) {
|
|
8893
|
-
x = getIds_1[_a];
|
|
8894
|
-
if (x) {
|
|
8895
|
-
ids.push.apply(ids, x);
|
|
8896
|
-
}
|
|
8897
|
-
}
|
|
8898
|
-
if (!ids.length) {
|
|
8899
|
-
this._emitStatusEvent('ngw:select', null);
|
|
8900
|
-
return [2 /*return*/];
|
|
8901
|
-
}
|
|
8902
|
-
pixelRadius = this.options.pixelRadius || 10;
|
|
8903
|
-
center = this.getCenter();
|
|
8904
|
-
zoom = this.getZoom();
|
|
8905
|
-
zoom = zoom !== undefined ? zoom : 20;
|
|
8906
|
-
if (!center || !zoom) {
|
|
8907
|
-
this._emitStatusEvent('ngw:select', null);
|
|
8908
|
-
return [2 /*return*/];
|
|
8909
|
-
}
|
|
8910
|
-
radius = getIdentifyRadius(center, zoom, pixelRadius);
|
|
8911
|
-
selectPromise = sendIdentifyRequest(ev, {
|
|
8912
|
-
layers: ids,
|
|
8913
|
-
connector: this.connector,
|
|
8914
|
-
radius: radius,
|
|
8915
|
-
}).then(function (resp) {
|
|
8916
|
-
_this._emitStatusEvent('ngw:select', _this._prepareToIdentify(__assign(__assign({}, resp), { resources: ids, sourceType: 'raster', event: ev })));
|
|
8917
|
-
return resp;
|
|
8918
|
-
});
|
|
8919
|
-
this._addPromise('select', selectPromise);
|
|
8920
|
-
return [2 /*return*/, selectPromise];
|
|
8921
|
-
}
|
|
8922
|
-
});
|
|
8923
|
-
});
|
|
8924
|
-
};
|
|
8925
8953
|
NgwMap.prototype._prepareToIdentify = function (identify) {
|
|
8926
8954
|
var _this = this;
|
|
8927
8955
|
var getIdentifyItems_ = function () {
|