@artstesh/maps 6.1.16 → 8.0.0
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/dist/fesm2022/maps-components-src-map.mjs +433 -484
- package/dist/fesm2022/maps-components-src-map.mjs.map +1 -1
- package/dist/fesm2022/maps-components.mjs +433 -484
- package/dist/fesm2022/maps-components.mjs.map +1 -1
- package/dist/map/common/destructible.component.d.ts +1 -1
- package/dist/map/helpers/text-style.helper.d.ts +1 -1
- package/dist/map/map-plate/controls/map-control-zoom/map-control-zoom.component.d.ts +1 -1
- package/dist/map/map-plate/features/markers/markers.component.d.ts +1 -1
- package/dist/map/map-plate/features/polygons/polygons.component.d.ts +1 -1
- package/dist/map/map-plate/layers/cluster-layer/cluster-layer.component.d.ts +1 -1
- package/dist/map/map-plate/layers/feature-layer/feature-layer.component.d.ts +1 -1
- package/dist/map/map-plate/layers/image-layer/image-layer.component.d.ts +1 -1
- package/dist/map/map-plate/layers/osm-tile-layer/osm-tile-layer.component.d.ts +1 -1
- package/dist/map/map-plate/layers/raster-tile/raster-tile-layer.component.d.ts +1 -1
- package/dist/map/map-plate/layers/tile-layer/tile-layer.component.d.ts +1 -1
- package/dist/map/map-plate/map-plate.component.d.ts +3 -2
- package/dist/map/map-plate/tooltips/tooltip/tooltip.component.d.ts +3 -2
- package/dist/map/messages/executors/generate-zoom-control.executor.d.ts +2 -2
- package/dist/map/models/map-settings.d.ts +1 -1
- package/dist/map/public-api.d.ts +0 -1
- package/dist/map/services/map-click.service.d.ts +1 -1
- package/dist/src/map/common/destructible.component.d.ts +1 -1
- package/dist/src/map/helpers/text-style.helper.d.ts +1 -1
- package/dist/src/map/map-plate/controls/map-control-zoom/map-control-zoom.component.d.ts +1 -1
- package/dist/src/map/map-plate/features/markers/markers.component.d.ts +1 -1
- package/dist/src/map/map-plate/features/polygons/polygons.component.d.ts +1 -1
- package/dist/src/map/map-plate/layers/cluster-layer/cluster-layer.component.d.ts +1 -1
- package/dist/src/map/map-plate/layers/feature-layer/feature-layer.component.d.ts +1 -1
- package/dist/src/map/map-plate/layers/image-layer/image-layer.component.d.ts +1 -1
- package/dist/src/map/map-plate/layers/osm-tile-layer/osm-tile-layer.component.d.ts +1 -1
- package/dist/src/map/map-plate/layers/raster-tile/raster-tile-layer.component.d.ts +1 -1
- package/dist/src/map/map-plate/layers/tile-layer/tile-layer.component.d.ts +1 -1
- package/dist/src/map/map-plate/map-plate.component.d.ts +3 -2
- package/dist/src/map/map-plate/tooltips/tooltip/tooltip.component.d.ts +3 -2
- package/dist/src/map/messages/executors/generate-zoom-control.executor.d.ts +2 -2
- package/dist/src/map/models/map-settings.d.ts +1 -1
- package/dist/src/map/public-api.d.ts +0 -1
- package/dist/src/map/services/map-click.service.d.ts +1 -1
- package/package.json +26 -26
- package/dist/esm2022/map/common/destructible.component.mjs +0 -18
- package/dist/esm2022/map/common/id.generator.mjs +0 -14
- package/dist/esm2022/map/helpers/index.mjs +0 -5
- package/dist/esm2022/map/helpers/marker-style.helper.mjs +0 -55
- package/dist/esm2022/map/helpers/polygon-style.helper.mjs +0 -54
- package/dist/esm2022/map/helpers/stringify-feature.helper.mjs +0 -61
- package/dist/esm2022/map/helpers/text-style.helper.mjs +0 -33
- package/dist/esm2022/map/map-plate/controls/index.mjs +0 -3
- package/dist/esm2022/map/map-plate/controls/map-control-zoom/map-control-zoom.component.mjs +0 -69
- package/dist/esm2022/map/map-plate/controls/map-control-zoom/zoom-control.factory.mjs +0 -13
- package/dist/esm2022/map/map-plate/controls/map-control-zoom/zoom-control.settings.mjs +0 -116
- package/dist/esm2022/map/map-plate/features/index.mjs +0 -3
- package/dist/esm2022/map/map-plate/features/markers/markers.component.mjs +0 -52
- package/dist/esm2022/map/map-plate/features/polygons/polygons.component.mjs +0 -56
- package/dist/esm2022/map/map-plate/layers/cluster-layer/cluster-layer-factory.service.mjs +0 -59
- package/dist/esm2022/map/map-plate/layers/cluster-layer/cluster-layer.component.mjs +0 -60
- package/dist/esm2022/map/map-plate/layers/cluster-layer/cluster-layer.manager.mjs +0 -38
- package/dist/esm2022/map/map-plate/layers/cluster-layer/cluster-layer.settings.mjs +0 -145
- package/dist/esm2022/map/map-plate/layers/feature-layer/feature-layer.component.mjs +0 -52
- package/dist/esm2022/map/map-plate/layers/feature-layer/feature-layer.factory.mjs +0 -28
- package/dist/esm2022/map/map-plate/layers/feature-layer/feature-layer.settings.mjs +0 -139
- package/dist/esm2022/map/map-plate/layers/image-layer/image-layer-factory.mjs +0 -26
- package/dist/esm2022/map/map-plate/layers/image-layer/image-layer.component.mjs +0 -52
- package/dist/esm2022/map/map-plate/layers/image-layer/image-layer.settings.mjs +0 -134
- package/dist/esm2022/map/map-plate/layers/index.mjs +0 -12
- package/dist/esm2022/map/map-plate/layers/osm-tile-layer/osm-tile-layer.component.mjs +0 -67
- package/dist/esm2022/map/map-plate/layers/raster-tile/raster-tile-layer.component.mjs +0 -52
- package/dist/esm2022/map/map-plate/layers/raster-tile/raster-tile-layer.factory.mjs +0 -74
- package/dist/esm2022/map/map-plate/layers/raster-tile/raster-tile-layer.settings.mjs +0 -165
- package/dist/esm2022/map/map-plate/layers/tile-layer/tile-layer.component.mjs +0 -52
- package/dist/esm2022/map/map-plate/layers/tile-layer/tile-layer.factory.mjs +0 -68
- package/dist/esm2022/map/map-plate/layers/tile-layer/tile-layer.settings.mjs +0 -139
- package/dist/esm2022/map/map-plate/map-plate.component.mjs +0 -121
- package/dist/esm2022/map/map-plate/map-plate.factory.service.mjs +0 -29
- package/dist/esm2022/map/map-plate/tooltips/index.mjs +0 -3
- package/dist/esm2022/map/map-plate/tooltips/tooltip/tooltip.component.mjs +0 -81
- package/dist/esm2022/map/map-plate/tooltips/tooltip/tooltip.settings.mjs +0 -31
- package/dist/esm2022/map/map.module.mjs +0 -73
- package/dist/esm2022/map/messages/commands/add-control.command.mjs +0 -18
- package/dist/esm2022/map/messages/commands/add-image-layer.command.mjs +0 -10
- package/dist/esm2022/map/messages/commands/add-layer.command.mjs +0 -10
- package/dist/esm2022/map/messages/commands/add-raster-tile-command.mjs +0 -10
- package/dist/esm2022/map/messages/commands/add-tile.command.mjs +0 -10
- package/dist/esm2022/map/messages/commands/cancel-drawing.command.mjs +0 -8
- package/dist/esm2022/map/messages/commands/cancel-feature-modification.command.mjs +0 -8
- package/dist/esm2022/map/messages/commands/close-tooltip.command.mjs +0 -18
- package/dist/esm2022/map/messages/commands/draw-selection-area.command.mjs +0 -26
- package/dist/esm2022/map/messages/commands/fit-to-features.command.mjs +0 -12
- package/dist/esm2022/map/messages/commands/fit-to-polygons.command.mjs +0 -22
- package/dist/esm2022/map/messages/commands/modify-feature.command.mjs +0 -31
- package/dist/esm2022/map/messages/commands/place-layer-features.command.mjs +0 -12
- package/dist/esm2022/map/messages/commands/remove-control.command.mjs +0 -23
- package/dist/esm2022/map/messages/commands/remove-image-layer.command.mjs +0 -10
- package/dist/esm2022/map/messages/commands/remove-layer.command.mjs +0 -10
- package/dist/esm2022/map/messages/commands/remove-raster-tile.command.mjs +0 -10
- package/dist/esm2022/map/messages/commands/remove-tile.command.mjs +0 -10
- package/dist/esm2022/map/messages/commands/set-map-center.command.mjs +0 -23
- package/dist/esm2022/map/messages/commands/start-drawing.command.mjs +0 -25
- package/dist/esm2022/map/messages/events/drawing-finished.event.mjs +0 -5
- package/dist/esm2022/map/messages/events/map-click.event.mjs +0 -27
- package/dist/esm2022/map/messages/events/map-feature-hovered.event.mjs +0 -23
- package/dist/esm2022/map/messages/events/map-move-end.event.mjs +0 -16
- package/dist/esm2022/map/messages/events/map-pointer-move.event.mjs +0 -21
- package/dist/esm2022/map/messages/events/map-rendered.event.mjs +0 -18
- package/dist/esm2022/map/messages/executors/calculate-area.executor.mjs +0 -17
- package/dist/esm2022/map/messages/executors/filter-features-in-area.executor.mjs +0 -20
- package/dist/esm2022/map/messages/executors/filter-features-in-point.executor.mjs +0 -28
- package/dist/esm2022/map/messages/executors/generate-draw.executor.mjs +0 -14
- package/dist/esm2022/map/messages/executors/generate-zoom-control.executor.mjs +0 -10
- package/dist/esm2022/map/messages/executors/get-geometry-length.executor.mjs +0 -18
- package/dist/esm2022/map/messages/executors/get-map-position.executor.mjs +0 -13
- package/dist/esm2022/map/messages/executors/polygon-self-intersection.executor.mjs +0 -10
- package/dist/esm2022/map/messages/index.mjs +0 -25
- package/dist/esm2022/map/messages/queries/get-features-in-area.query.mjs +0 -22
- package/dist/esm2022/map/messages/queries/get-features-in-point.query.mjs +0 -25
- package/dist/esm2022/map/messages/queries/get-layer.query.mjs +0 -10
- package/dist/esm2022/map/models/drawing-type.enum.mjs +0 -22
- package/dist/esm2022/map/models/feature-format.enum.mjs +0 -15
- package/dist/esm2022/map/models/i-identified.mjs +0 -2
- package/dist/esm2022/map/models/index.mjs +0 -10
- package/dist/esm2022/map/models/map-control.mjs +0 -15
- package/dist/esm2022/map/models/map-lyrs.enum.mjs +0 -19
- package/dist/esm2022/map/models/map-position.model.mjs +0 -2
- package/dist/esm2022/map/models/map-settings.mjs +0 -124
- package/dist/esm2022/map/models/map.constants.mjs +0 -6
- package/dist/esm2022/map/models/marker-model.mjs +0 -29
- package/dist/esm2022/map/models/polygon.model.mjs +0 -40
- package/dist/esm2022/map/ol-proxy.mjs +0 -6
- package/dist/esm2022/map/public-api.mjs +0 -17
- package/dist/esm2022/map/services/controls/controls.service.mjs +0 -37
- package/dist/esm2022/map/services/drawing/drawing-generation.service.mjs +0 -25
- package/dist/esm2022/map/services/drawing/drawing.service.mjs +0 -99
- package/dist/esm2022/map/services/drawing/feature-modification.service.mjs +0 -105
- package/dist/esm2022/map/services/feature.service.mjs +0 -77
- package/dist/esm2022/map/services/map-click.service.mjs +0 -55
- package/dist/esm2022/map/services/map-feature.service.mjs +0 -75
- package/dist/esm2022/map/services/map-management.service.mjs +0 -143
- package/dist/esm2022/map/services/map-postboy.service.mjs +0 -14
- package/dist/esm2022/map/services/map-state.service.mjs +0 -48
- package/dist/esm2022/map/services/message-registrator.service.mjs +0 -105
- package/dist/esm2022/maps-components.mjs +0 -5
- package/dist/esm2022/public-api.mjs +0 -5
- package/dist/esm2022/src/map/common/destructible.component.mjs +0 -18
- package/dist/esm2022/src/map/common/id.generator.mjs +0 -14
- package/dist/esm2022/src/map/helpers/index.mjs +0 -5
- package/dist/esm2022/src/map/helpers/marker-style.helper.mjs +0 -55
- package/dist/esm2022/src/map/helpers/polygon-style.helper.mjs +0 -54
- package/dist/esm2022/src/map/helpers/stringify-feature.helper.mjs +0 -61
- package/dist/esm2022/src/map/helpers/text-style.helper.mjs +0 -33
- package/dist/esm2022/src/map/map-plate/controls/index.mjs +0 -3
- package/dist/esm2022/src/map/map-plate/controls/map-control-zoom/map-control-zoom.component.mjs +0 -69
- package/dist/esm2022/src/map/map-plate/controls/map-control-zoom/zoom-control.factory.mjs +0 -13
- package/dist/esm2022/src/map/map-plate/controls/map-control-zoom/zoom-control.settings.mjs +0 -116
- package/dist/esm2022/src/map/map-plate/features/index.mjs +0 -3
- package/dist/esm2022/src/map/map-plate/features/markers/markers.component.mjs +0 -52
- package/dist/esm2022/src/map/map-plate/features/polygons/polygons.component.mjs +0 -56
- package/dist/esm2022/src/map/map-plate/layers/cluster-layer/cluster-layer-factory.service.mjs +0 -59
- package/dist/esm2022/src/map/map-plate/layers/cluster-layer/cluster-layer.component.mjs +0 -60
- package/dist/esm2022/src/map/map-plate/layers/cluster-layer/cluster-layer.manager.mjs +0 -38
- package/dist/esm2022/src/map/map-plate/layers/cluster-layer/cluster-layer.settings.mjs +0 -145
- package/dist/esm2022/src/map/map-plate/layers/feature-layer/feature-layer.component.mjs +0 -52
- package/dist/esm2022/src/map/map-plate/layers/feature-layer/feature-layer.factory.mjs +0 -28
- package/dist/esm2022/src/map/map-plate/layers/feature-layer/feature-layer.settings.mjs +0 -139
- package/dist/esm2022/src/map/map-plate/layers/image-layer/image-layer-factory.mjs +0 -26
- package/dist/esm2022/src/map/map-plate/layers/image-layer/image-layer.component.mjs +0 -52
- package/dist/esm2022/src/map/map-plate/layers/image-layer/image-layer.settings.mjs +0 -134
- package/dist/esm2022/src/map/map-plate/layers/index.mjs +0 -12
- package/dist/esm2022/src/map/map-plate/layers/osm-tile-layer/osm-tile-layer.component.mjs +0 -67
- package/dist/esm2022/src/map/map-plate/layers/raster-tile/raster-tile-layer.component.mjs +0 -52
- package/dist/esm2022/src/map/map-plate/layers/raster-tile/raster-tile-layer.factory.mjs +0 -74
- package/dist/esm2022/src/map/map-plate/layers/raster-tile/raster-tile-layer.settings.mjs +0 -165
- package/dist/esm2022/src/map/map-plate/layers/tile-layer/tile-layer.component.mjs +0 -52
- package/dist/esm2022/src/map/map-plate/layers/tile-layer/tile-layer.factory.mjs +0 -68
- package/dist/esm2022/src/map/map-plate/layers/tile-layer/tile-layer.settings.mjs +0 -139
- package/dist/esm2022/src/map/map-plate/map-plate.component.mjs +0 -121
- package/dist/esm2022/src/map/map-plate/map-plate.factory.service.mjs +0 -29
- package/dist/esm2022/src/map/map-plate/tooltips/index.mjs +0 -3
- package/dist/esm2022/src/map/map-plate/tooltips/tooltip/tooltip.component.mjs +0 -81
- package/dist/esm2022/src/map/map-plate/tooltips/tooltip/tooltip.settings.mjs +0 -31
- package/dist/esm2022/src/map/map.module.mjs +0 -73
- package/dist/esm2022/src/map/maps-components-src-map.mjs +0 -5
- package/dist/esm2022/src/map/messages/commands/add-control.command.mjs +0 -18
- package/dist/esm2022/src/map/messages/commands/add-image-layer.command.mjs +0 -10
- package/dist/esm2022/src/map/messages/commands/add-layer.command.mjs +0 -10
- package/dist/esm2022/src/map/messages/commands/add-raster-tile-command.mjs +0 -10
- package/dist/esm2022/src/map/messages/commands/add-tile.command.mjs +0 -10
- package/dist/esm2022/src/map/messages/commands/cancel-drawing.command.mjs +0 -8
- package/dist/esm2022/src/map/messages/commands/cancel-feature-modification.command.mjs +0 -8
- package/dist/esm2022/src/map/messages/commands/close-tooltip.command.mjs +0 -18
- package/dist/esm2022/src/map/messages/commands/draw-selection-area.command.mjs +0 -26
- package/dist/esm2022/src/map/messages/commands/fit-to-features.command.mjs +0 -12
- package/dist/esm2022/src/map/messages/commands/fit-to-polygons.command.mjs +0 -22
- package/dist/esm2022/src/map/messages/commands/modify-feature.command.mjs +0 -31
- package/dist/esm2022/src/map/messages/commands/place-layer-features.command.mjs +0 -12
- package/dist/esm2022/src/map/messages/commands/remove-control.command.mjs +0 -23
- package/dist/esm2022/src/map/messages/commands/remove-image-layer.command.mjs +0 -10
- package/dist/esm2022/src/map/messages/commands/remove-layer.command.mjs +0 -10
- package/dist/esm2022/src/map/messages/commands/remove-raster-tile.command.mjs +0 -10
- package/dist/esm2022/src/map/messages/commands/remove-tile.command.mjs +0 -10
- package/dist/esm2022/src/map/messages/commands/set-map-center.command.mjs +0 -23
- package/dist/esm2022/src/map/messages/commands/start-drawing.command.mjs +0 -25
- package/dist/esm2022/src/map/messages/events/drawing-finished.event.mjs +0 -5
- package/dist/esm2022/src/map/messages/events/map-click.event.mjs +0 -27
- package/dist/esm2022/src/map/messages/events/map-feature-hovered.event.mjs +0 -23
- package/dist/esm2022/src/map/messages/events/map-move-end.event.mjs +0 -16
- package/dist/esm2022/src/map/messages/events/map-pointer-move.event.mjs +0 -21
- package/dist/esm2022/src/map/messages/events/map-rendered.event.mjs +0 -18
- package/dist/esm2022/src/map/messages/executors/calculate-area.executor.mjs +0 -17
- package/dist/esm2022/src/map/messages/executors/filter-features-in-area.executor.mjs +0 -20
- package/dist/esm2022/src/map/messages/executors/filter-features-in-point.executor.mjs +0 -28
- package/dist/esm2022/src/map/messages/executors/generate-draw.executor.mjs +0 -14
- package/dist/esm2022/src/map/messages/executors/generate-zoom-control.executor.mjs +0 -10
- package/dist/esm2022/src/map/messages/executors/get-geometry-length.executor.mjs +0 -18
- package/dist/esm2022/src/map/messages/executors/get-map-position.executor.mjs +0 -13
- package/dist/esm2022/src/map/messages/executors/polygon-self-intersection.executor.mjs +0 -10
- package/dist/esm2022/src/map/messages/index.mjs +0 -25
- package/dist/esm2022/src/map/messages/queries/get-features-in-area.query.mjs +0 -22
- package/dist/esm2022/src/map/messages/queries/get-features-in-point.query.mjs +0 -25
- package/dist/esm2022/src/map/messages/queries/get-layer.query.mjs +0 -10
- package/dist/esm2022/src/map/models/drawing-type.enum.mjs +0 -22
- package/dist/esm2022/src/map/models/feature-format.enum.mjs +0 -15
- package/dist/esm2022/src/map/models/i-identified.mjs +0 -2
- package/dist/esm2022/src/map/models/index.mjs +0 -10
- package/dist/esm2022/src/map/models/map-control.mjs +0 -15
- package/dist/esm2022/src/map/models/map-lyrs.enum.mjs +0 -19
- package/dist/esm2022/src/map/models/map-position.model.mjs +0 -2
- package/dist/esm2022/src/map/models/map-settings.mjs +0 -124
- package/dist/esm2022/src/map/models/map.constants.mjs +0 -6
- package/dist/esm2022/src/map/models/marker-model.mjs +0 -29
- package/dist/esm2022/src/map/models/polygon.model.mjs +0 -40
- package/dist/esm2022/src/map/ol-proxy.mjs +0 -6
- package/dist/esm2022/src/map/public-api.mjs +0 -17
- package/dist/esm2022/src/map/services/controls/controls.service.mjs +0 -37
- package/dist/esm2022/src/map/services/drawing/drawing-generation.service.mjs +0 -25
- package/dist/esm2022/src/map/services/drawing/drawing.service.mjs +0 -99
- package/dist/esm2022/src/map/services/drawing/feature-modification.service.mjs +0 -105
- package/dist/esm2022/src/map/services/feature.service.mjs +0 -77
- package/dist/esm2022/src/map/services/map-click.service.mjs +0 -55
- package/dist/esm2022/src/map/services/map-feature.service.mjs +0 -75
- package/dist/esm2022/src/map/services/map-management.service.mjs +0 -143
- package/dist/esm2022/src/map/services/map-postboy.service.mjs +0 -14
- package/dist/esm2022/src/map/services/map-state.service.mjs +0 -48
- package/dist/esm2022/src/map/services/message-registrator.service.mjs +0 -105
- package/dist/map/map.module.d.ts +0 -19
- package/dist/src/map/map.module.d.ts +0 -19
|
@@ -1,99 +0,0 @@
|
|
|
1
|
-
import { Injectable } from '@angular/core';
|
|
2
|
-
import { StartDrawingCommand } from '../../messages/commands/start-drawing.command';
|
|
3
|
-
import { CancelDrawingCommand } from '../../messages/commands/cancel-drawing.command';
|
|
4
|
-
import { first } from 'rxjs/operators';
|
|
5
|
-
import { DrawingFinishedEvent } from '../../messages/events/drawing-finished.event';
|
|
6
|
-
import { MapClickEvent, MapRenderedEvent } from '../../messages';
|
|
7
|
-
import { GetLayerQuery } from '../../messages/queries/get-layer.query';
|
|
8
|
-
import { MapConstants } from '../../models/map.constants';
|
|
9
|
-
import { Vector as Source } from 'ol/source';
|
|
10
|
-
import { FeatureOutputFormat, PolygonModel } from '../../models';
|
|
11
|
-
import { GeoJSON, WKT } from 'ol/format';
|
|
12
|
-
import { DrawSelectionAreaCommand } from '../../messages/commands/draw-selection-area.command';
|
|
13
|
-
import { GetFeaturesInAreaQuery } from '../../messages/queries/get-features-in-area.query';
|
|
14
|
-
import { GenerateDrawExecutor } from '../../messages/executors/generate-draw.executor';
|
|
15
|
-
import { Dictionary } from '@artstesh/collections';
|
|
16
|
-
import * as i0 from "@angular/core";
|
|
17
|
-
import * as i1 from "../map-postboy.service";
|
|
18
|
-
export class DrawingService {
|
|
19
|
-
postboy;
|
|
20
|
-
drawInteraction;
|
|
21
|
-
map;
|
|
22
|
-
constructor(postboy) {
|
|
23
|
-
this.postboy = postboy;
|
|
24
|
-
}
|
|
25
|
-
up() {
|
|
26
|
-
this.observeDrawing();
|
|
27
|
-
this.observeSelectArea();
|
|
28
|
-
this.observeMapRender();
|
|
29
|
-
}
|
|
30
|
-
observeSelectArea() {
|
|
31
|
-
this.postboy.sub(DrawSelectionAreaCommand).subscribe((ev) => {
|
|
32
|
-
this.postboy.lock(MapClickEvent);
|
|
33
|
-
this.postboy.fireCallback(new StartDrawingCommand(ev.type, ev.style), (r) => {
|
|
34
|
-
if (!r) {
|
|
35
|
-
ev.finish(new Dictionary());
|
|
36
|
-
return;
|
|
37
|
-
}
|
|
38
|
-
const area = PolygonModel.fromGeoJson(1, r).feature.getGeometry();
|
|
39
|
-
this.postboy.fireCallback(new GetFeaturesInAreaQuery(area, ev.ignore), (result) => ev.finish(result));
|
|
40
|
-
});
|
|
41
|
-
});
|
|
42
|
-
}
|
|
43
|
-
observeDrawing() {
|
|
44
|
-
this.postboy.sub(StartDrawingCommand).subscribe((ev) => {
|
|
45
|
-
this.draw((l) => {
|
|
46
|
-
if (!l || !this.map) {
|
|
47
|
-
this.clearInteraction(l);
|
|
48
|
-
return;
|
|
49
|
-
}
|
|
50
|
-
const cancelSub = this.observeCancelation(ev, l);
|
|
51
|
-
this.drawInteraction = this.postboy.exec(new GenerateDrawExecutor(l, ev.style, ev.type));
|
|
52
|
-
this.map?.addInteraction(this.drawInteraction);
|
|
53
|
-
this.drawInteraction.on('drawend', (evt) => {
|
|
54
|
-
cancelSub.unsubscribe();
|
|
55
|
-
this.onEnd(evt, ev, l);
|
|
56
|
-
});
|
|
57
|
-
});
|
|
58
|
-
});
|
|
59
|
-
}
|
|
60
|
-
onEnd(evt, command, layer) {
|
|
61
|
-
command.finish(command.format === FeatureOutputFormat.GeoJson
|
|
62
|
-
? new GeoJSON().writeFeature(evt.feature)
|
|
63
|
-
: command.format === FeatureOutputFormat.WKT
|
|
64
|
-
? new WKT().writeFeature(evt.feature)
|
|
65
|
-
: new GeoJSON().writeGeometry(evt.feature.getGeometry()));
|
|
66
|
-
this.clearInteraction(layer);
|
|
67
|
-
}
|
|
68
|
-
observeMapRender() {
|
|
69
|
-
this.postboy.sub(MapRenderedEvent).subscribe((m) => {
|
|
70
|
-
this.map = m.map;
|
|
71
|
-
});
|
|
72
|
-
}
|
|
73
|
-
draw(action) {
|
|
74
|
-
this.postboy.fireCallback(new GetLayerQuery(MapConstants.DrawingLayerId), (l) => action(l));
|
|
75
|
-
}
|
|
76
|
-
observeCancelation(ev, layer) {
|
|
77
|
-
return this.postboy
|
|
78
|
-
.sub(CancelDrawingCommand)
|
|
79
|
-
.pipe(first())
|
|
80
|
-
.subscribe(() => {
|
|
81
|
-
ev.finish(null);
|
|
82
|
-
this.clearInteraction(layer);
|
|
83
|
-
});
|
|
84
|
-
}
|
|
85
|
-
clearInteraction(layer) {
|
|
86
|
-
if (!!this.drawInteraction) {
|
|
87
|
-
this.map?.removeInteraction(this.drawInteraction);
|
|
88
|
-
layer?.setSource(new Source({}));
|
|
89
|
-
}
|
|
90
|
-
this.postboy.unlock(MapClickEvent);
|
|
91
|
-
setTimeout(() => this.postboy.fire(new DrawingFinishedEvent()), 300);
|
|
92
|
-
}
|
|
93
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.7", ngImport: i0, type: DrawingService, deps: [{ token: i1.MapPostboyService }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
94
|
-
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.3.7", ngImport: i0, type: DrawingService });
|
|
95
|
-
}
|
|
96
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.7", ngImport: i0, type: DrawingService, decorators: [{
|
|
97
|
-
type: Injectable
|
|
98
|
-
}], ctorParameters: () => [{ type: i1.MapPostboyService }] });
|
|
99
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHJhd2luZy5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbWFwcy1jb21wb25lbnRzL3NyYy9tYXAvc2VydmljZXMvZHJhd2luZy9kcmF3aW5nLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUczQyxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSwrQ0FBK0MsQ0FBQztBQUNwRixPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxnREFBZ0QsQ0FBQztBQUN0RixPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDdkMsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sOENBQThDLENBQUM7QUFFcEYsT0FBTyxFQUFFLGFBQWEsRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ2pFLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSx3Q0FBd0MsQ0FBQztBQUN2RSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFHMUQsT0FBTyxFQUFFLE1BQU0sSUFBSSxNQUFNLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFFN0MsT0FBTyxFQUFFLG1CQUFtQixFQUFFLFlBQVksRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUlqRSxPQUFPLEVBQUUsT0FBTyxFQUFFLEdBQUcsRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUN6QyxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSxxREFBcUQsQ0FBQztBQUMvRixPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxtREFBbUQsQ0FBQztBQUUzRixPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxpREFBaUQsQ0FBQztBQUN2RixPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sdUJBQXVCLENBQUM7OztBQUduRCxNQUFNLE9BQU8sY0FBYztJQUlM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Q0FBQyxJQUFJLENBQUMsZUFBZSxFQUFFLENBQUM7WUFDM0IsSUFBSSxDQUFDLEdBQUcsRUFBRSxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLENBQUM7WUFDbEQsS0FBSyxFQUFFLFNBQVMsQ0FBQyxJQUFJLE1BQU0sQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBQ25DLENBQUM7UUFDRCxJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxhQUFhLENBQUMsQ0FBQztRQUNuQyxVQUFVLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxvQkFBb0IsRUFBRSxDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUM7SUFDdkUsQ0FBQzt1R0FsRlUsY0FBYzsyR0FBZCxjQUFjOzsyRkFBZCxjQUFjO2tCQUQxQixVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgSVBvc3Rib3lEZXBlbmRpbmdTZXJ2aWNlIH0gZnJvbSAnQGFydHN0ZXNoL3Bvc3Rib3knO1xuaW1wb3J0IHsgTWFwUG9zdGJveVNlcnZpY2UgfSBmcm9tICcuLi9tYXAtcG9zdGJveS5zZXJ2aWNlJztcbmltcG9ydCB7IFN0YXJ0RHJhd2luZ0NvbW1hbmQgfSBmcm9tICcuLi8uLi9tZXNzYWdlcy9jb21tYW5kcy9zdGFydC1kcmF3aW5nLmNvbW1hbmQnO1xuaW1wb3J0IHsgQ2FuY2VsRHJhd2luZ0NvbW1hbmQgfSBmcm9tICcuLi8uLi9tZXNzYWdlcy9jb21tYW5kcy9jYW5jZWwtZHJhd2luZy5jb21tYW5kJztcbmltcG9ydCB7IGZpcnN0IH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgRHJhd2luZ0ZpbmlzaGVkRXZlbnQgfSBmcm9tICcuLi8uLi9tZXNzYWdlcy9ldmVudHMvZHJhd2luZy1maW5pc2hlZC5ldmVudCc7XG5pbXBvcnQgeyBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IE1hcENsaWNrRXZlbnQsIE1hcFJlbmRlcmVkRXZlbnQgfSBmcm9tICcuLi8uLi9tZXNzYWdlcyc7XG5pbXBvcnQgeyBHZXRMYXllclF1ZXJ5IH0gZnJvbSAnLi4vLi4vbWVzc2FnZXMvcXVlcmllcy9nZXQtbGF5ZXIucXVlcnknO1xuaW1wb3J0IHsgTWFwQ29uc3RhbnRzIH0gZnJvbSAnLi4vLi4vbW9kZWxzL21hcC5jb25zdGFudHMnO1xuaW1wb3J0IHsgVmVjdG9yIGFzIExheWVyIH0gZnJvbSAnb2wvbGF5ZXInO1xuaW1wb3J0IFZlY3RvclNvdXJjZSBmcm9tICdvbC9zb3VyY2UvVmVjdG9yJztcbmltcG9ydCB7IFZlY3RvciBhcyBTb3VyY2UgfSBmcm9tICdvbC9zb3VyY2UnO1xuaW1wb3J0IHsgRHJhdyB9IGZyb20gJ29sL2ludGVyYWN0aW9uJztcbmltcG9ydCB7IEZlYXR1cmVPdXRwdXRGb3JtYXQsIFBvbHlnb25Nb2RlbCB9IGZyb20gJy4uLy4uL21vZGVscyc7XG5pbXBvcnQgeyBNYXAgfSBmcm9tICdvbCc7XG5pbXBvcnQgeyBEcmF3RXZlbnQgfSBmcm9tICdvbC9pbnRlcmFjdGlvbi9EcmF3JztcbmltcG9ydCB7IEdlb21ldHJ5IH0gZnJvbSAnb2wvZ2VvbSc7XG5pbXBvcnQgeyBHZW9KU09OLCBXS1QgfSBmcm9tICdvbC9mb3JtYXQnO1xuaW1wb3J0IHsgRHJhd1NlbGVjdGlvbkFyZWFDb21tYW5kIH0gZnJvbSAnLi4vLi4vbWVzc2FnZXMvY29tbWFuZHMvZHJhdy1zZWxlY3Rpb24tYXJlYS5jb21tYW5kJztcbmltcG9ydCB7IEdldEZlYXR1cmVzSW5BcmVhUXVlcnkgfSBmcm9tICcuLi8uLi9tZXNzYWdlcy9xdWVyaWVzL2dldC1mZWF0dXJlcy1pbi1hcmVhLnF1ZXJ5JztcbmltcG9ydCB7IElJZGVudGlmaWVkIH0gZnJvbSAnLi4vLi4vbW9kZWxzL2ktaWRlbnRpZmllZCc7XG5pbXBvcnQgeyBHZW5lcmF0ZURyYXdFeGVjdXRvciB9IGZyb20gJy4uLy4uL21lc3NhZ2VzL2V4ZWN1dG9ycy9nZW5lcmF0ZS1kcmF3LmV4ZWN1dG9yJztcbmltcG9ydCB7IERpY3Rpb25hcnkgfSBmcm9tICdAYXJ0c3Rlc2gvY29sbGVjdGlvbnMnO1xuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgRHJhd2luZ1NlcnZpY2UgaW1wbGVtZW50cyBJUG9zdGJveURlcGVuZGluZ1NlcnZpY2Uge1xuICBwcml2YXRlIGRyYXdJbnRlcmFjdGlvbj86IERyYXc7XG4gIHByaXZhdGUgbWFwPzogTWFwO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgcG9zdGJveTogTWFwUG9zdGJveVNlcnZpY2UpIHt9XG5cbiAgdXAoKTogdm9pZCB7XG4gICAgdGhpcy5vYnNlcnZlRHJhd2luZygpO1xuICAgIHRoaXMub2JzZXJ2ZVNlbGVjdEFyZWEoKTtcbiAgICB0aGlzLm9ic2VydmVNYXBSZW5kZXIoKTtcbiAgfVxuXG4gIHByaXZhdGUgb2JzZXJ2ZVNlbGVjdEFyZWEoKSB7XG4gICAgdGhpcy5wb3N0Ym95LnN1YihEcmF3U2VsZWN0aW9uQXJlYUNvbW1hbmQpLnN1YnNjcmliZSgoZXYpID0+IHtcbiAgICAgIHRoaXMucG9zdGJveS5sb2NrKE1hcENsaWNrRXZlbnQpO1xuICAgICAgdGhpcy5wb3N0Ym95LmZpcmVDYWxsYmFjayhuZXcgU3RhcnREcmF3aW5nQ29tbWFuZChldi50eXBlLCBldi5zdHlsZSksIChyKSA9PiB7XG4gICAgICAgIGlmICghcikge1xuICAgICAgICAgIGV2LmZpbmlzaChuZXcgRGljdGlvbmFyeTxJSWRlbnRpZmllZFtdPigpKTtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgYXJlYSA9IFBvbHlnb25Nb2RlbC5mcm9tR2VvSnNvbigxLCByKS5mZWF0dXJlLmdldEdlb21ldHJ5KCkhO1xuICAgICAgICB0aGlzLnBvc3Rib3kuZmlyZUNhbGxiYWNrKG5ldyBHZXRGZWF0dXJlc0luQXJlYVF1ZXJ5KGFyZWEsIGV2Lmlnbm9yZSksIChyZXN1bHQpID0+IGV2LmZpbmlzaChyZXN1bHQpKTtcbiAgICAgIH0pO1xuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBvYnNlcnZlRHJhd2luZygpIHtcbiAgICB0aGlzLnBvc3Rib3kuc3ViKFN0YXJ0RHJhd2luZ0NvbW1hbmQpLnN1YnNjcmliZSgoZXYpID0+IHtcbiAgICAgIHRoaXMuZHJhdygobCkgPT4ge1xuICAgICAgICBpZiAoIWwgfHwgIXRoaXMubWFwKSB7XG4gICAgICAgICAgdGhpcy5jbGVhckludGVyYWN0aW9uKGwpO1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBjYW5jZWxTdWIgPSB0aGlzLm9ic2VydmVDYW5jZWxhdGlvbihldiwgbCk7XG4gICAgICAgIHRoaXMuZHJhd0ludGVyYWN0aW9uID0gdGhpcy5wb3N0Ym95LmV4ZWMobmV3IEdlbmVyYXRlRHJhd0V4ZWN1dG9yKGwsIGV2LnN0eWxlLCBldi50eXBlKSkhO1xuICAgICAgICB0aGlzLm1hcD8uYWRkSW50ZXJhY3Rpb24odGhpcy5kcmF3SW50ZXJhY3Rpb24pO1xuICAgICAgICB0aGlzLmRyYXdJbnRlcmFjdGlvbi5vbignZHJhd2VuZCcsIChldnQ6IERyYXdFdmVudCkgPT4ge1xuICAgICAgICAgIGNhbmNlbFN1Yi51bnN1YnNjcmliZSgpO1xuICAgICAgICAgIHRoaXMub25FbmQoZXZ0LCBldiwgbCk7XG4gICAgICAgIH0pO1xuICAgICAgfSk7XG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIG9uRW5kKGV2dDogRHJhd0V2ZW50LCBjb21tYW5kOiBTdGFydERyYXdpbmdDb21tYW5kLCBsYXllcjogTGF5ZXI8VmVjdG9yU291cmNlPEdlb21ldHJ5Pj4pOiB2b2lkIHtcbiAgICBjb21tYW5kLmZpbmlzaChcbiAgICAgIGNvbW1hbmQuZm9ybWF0ID09PSBGZWF0dXJlT3V0cHV0Rm9ybWF0Lkdlb0pzb25cbiAgICAgICAgPyBuZXcgR2VvSlNPTigpLndyaXRlRmVhdHVyZShldnQuZmVhdHVyZSlcbiAgICAgICAgOiBjb21tYW5kLmZvcm1hdCA9PT0gRmVhdHVyZU91dHB1dEZvcm1hdC5XS1RcbiAgICAgICAgPyBuZXcgV0tUKCkud3JpdGVGZWF0dXJlKGV2dC5mZWF0dXJlKVxuICAgICAgICA6IG5ldyBHZW9KU09OKCkud3JpdGVHZW9tZXRyeShldnQuZmVhdHVyZS5nZXRHZW9tZXRyeSgpISksXG4gICAgKTtcbiAgICB0aGlzLmNsZWFySW50ZXJhY3Rpb24obGF5ZXIpO1xuICB9XG5cbiAgcHJpdmF0ZSBvYnNlcnZlTWFwUmVuZGVyKCkge1xuICAgIHRoaXMucG9zdGJveS5zdWIoTWFwUmVuZGVyZWRFdmVudCkuc3Vic2NyaWJlKChtKSA9PiB7XG4gICAgICB0aGlzLm1hcCA9IG0ubWFwO1xuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBkcmF3KGFjdGlvbjogKGxheWVyOiBMYXllcjxWZWN0b3JTb3VyY2U8YW55Pj4gfCBudWxsKSA9PiB2b2lkKTogdm9pZCB7XG4gICAgdGhpcy5wb3N0Ym95LmZpcmVDYWxsYmFjayhuZXcgR2V0TGF5ZXJRdWVyeShNYXBDb25zdGFudHMuRHJhd2luZ0xheWVySWQpLCAobCkgPT4gYWN0aW9uKGwpKTtcbiAgfVxuXG4gIHByaXZhdGUgb2JzZXJ2ZUNhbmNlbGF0aW9uKGV2OiBTdGFydERyYXdpbmdDb21tYW5kLCBsYXllcjogTGF5ZXI8VmVjdG9yU291cmNlPGFueT4+IHwgbnVsbCk6IFN1YnNjcmlwdGlvbiB7XG4gICAgcmV0dXJuIHRoaXMucG9zdGJveVxuICAgICAgLnN1YihDYW5jZWxEcmF3aW5nQ29tbWFuZClcbiAgICAgIC5waXBlKGZpcnN0KCkpXG4gICAgICAuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgZXYuZmluaXNoKG51bGwpO1xuICAgICAgICB0aGlzLmNsZWFySW50ZXJhY3Rpb24obGF5ZXIpO1xuICAgICAgfSk7XG4gIH1cblxuICBwcml2YXRlIGNsZWFySW50ZXJhY3Rpb24obGF5ZXI6IExheWVyPFNvdXJjZTxHZW9tZXRyeT4+IHwgbnVsbCk6IHZvaWQge1xuICAgIGlmICghIXRoaXMuZHJhd0ludGVyYWN0aW9uKSB7XG4gICAgICB0aGlzLm1hcD8ucmVtb3ZlSW50ZXJhY3Rpb24odGhpcy5kcmF3SW50ZXJhY3Rpb24pO1xuICAgICAgbGF5ZXI/LnNldFNvdXJjZShuZXcgU291cmNlKHt9KSk7XG4gICAgfVxuICAgIHRoaXMucG9zdGJveS51bmxvY2soTWFwQ2xpY2tFdmVudCk7XG4gICAgc2V0VGltZW91dCgoKSA9PiB0aGlzLnBvc3Rib3kuZmlyZShuZXcgRHJhd2luZ0ZpbmlzaGVkRXZlbnQoKSksIDMwMCk7XG4gIH1cbn1cbiJdfQ==
|
|
@@ -1,105 +0,0 @@
|
|
|
1
|
-
import { Injectable } from '@angular/core';
|
|
2
|
-
import { Modify, Translate } from 'ol/interaction';
|
|
3
|
-
import { Collection } from 'ol';
|
|
4
|
-
import { MapRenderedEvent } from '../../messages';
|
|
5
|
-
import { FeatureOutputFormat } from '../../models';
|
|
6
|
-
import { GeoJSON, WKT } from 'ol/format';
|
|
7
|
-
import { GetLayerQuery } from '../../messages/queries/get-layer.query';
|
|
8
|
-
import { MapConstants } from '../../models/map.constants';
|
|
9
|
-
import { first } from 'rxjs/operators';
|
|
10
|
-
import { CancelFeatureModificationCommand } from '../../messages/commands/cancel-feature-modification.command';
|
|
11
|
-
import { ModifyFeatureCommand } from '../../messages/commands/modify-feature.command';
|
|
12
|
-
import * as i0 from "@angular/core";
|
|
13
|
-
import * as i1 from "../map-postboy.service";
|
|
14
|
-
export class FeatureModificationService {
|
|
15
|
-
postboy;
|
|
16
|
-
modify;
|
|
17
|
-
translate;
|
|
18
|
-
map;
|
|
19
|
-
constructor(postboy) {
|
|
20
|
-
this.postboy = postboy;
|
|
21
|
-
}
|
|
22
|
-
up() {
|
|
23
|
-
this.observeModification();
|
|
24
|
-
this.observeMapRender();
|
|
25
|
-
}
|
|
26
|
-
observeModification() {
|
|
27
|
-
this.postboy.sub(ModifyFeatureCommand).subscribe((ev) => {
|
|
28
|
-
this.defineLayer((l) => {
|
|
29
|
-
if (!l || !this.map) {
|
|
30
|
-
this.clearInteraction(l);
|
|
31
|
-
return;
|
|
32
|
-
}
|
|
33
|
-
this.observeCancelation(ev, l);
|
|
34
|
-
this.initFeature(l, ev.model.feature);
|
|
35
|
-
this.addModify(ev);
|
|
36
|
-
if (ev.draggable)
|
|
37
|
-
this.addDragging(ev);
|
|
38
|
-
});
|
|
39
|
-
});
|
|
40
|
-
}
|
|
41
|
-
initFeature(layer, feature) {
|
|
42
|
-
layer.getSource()?.clear();
|
|
43
|
-
layer.getSource()?.addFeature(feature);
|
|
44
|
-
}
|
|
45
|
-
addModify(command) {
|
|
46
|
-
this.modify = new Modify({
|
|
47
|
-
features: new Collection([command.model.feature]),
|
|
48
|
-
style: command.style,
|
|
49
|
-
});
|
|
50
|
-
this.modify.on('modifyend', () => {
|
|
51
|
-
this.onModified(command);
|
|
52
|
-
command.model.feature.changed();
|
|
53
|
-
});
|
|
54
|
-
this.map?.addInteraction(this.modify);
|
|
55
|
-
}
|
|
56
|
-
addDragging(command) {
|
|
57
|
-
this.translate = new Translate({
|
|
58
|
-
features: new Collection([command.model.feature]),
|
|
59
|
-
condition: (ev) => {
|
|
60
|
-
const clone = command.model.feature.clone();
|
|
61
|
-
clone.getGeometry()?.scale(0.999);
|
|
62
|
-
return clone.getGeometry().intersectsCoordinate(ev.coordinate);
|
|
63
|
-
},
|
|
64
|
-
});
|
|
65
|
-
this.translate.on('translateend', () => this.onModified(command));
|
|
66
|
-
this.map?.addInteraction(this.translate);
|
|
67
|
-
}
|
|
68
|
-
onModified(command) {
|
|
69
|
-
command.next(command.format === FeatureOutputFormat.GeoJson
|
|
70
|
-
? new GeoJSON().writeFeature(command.model.feature)
|
|
71
|
-
: command.format === FeatureOutputFormat.WKT
|
|
72
|
-
? new WKT().writeFeature(command.model.feature)
|
|
73
|
-
: new GeoJSON().writeGeometry(command.model.feature.getGeometry()));
|
|
74
|
-
}
|
|
75
|
-
observeMapRender() {
|
|
76
|
-
this.postboy.sub(MapRenderedEvent).subscribe((m) => {
|
|
77
|
-
this.map = m.map;
|
|
78
|
-
});
|
|
79
|
-
}
|
|
80
|
-
defineLayer(action) {
|
|
81
|
-
this.postboy.fireCallback(new GetLayerQuery(MapConstants.DrawingLayerId), (l) => action(l));
|
|
82
|
-
}
|
|
83
|
-
observeCancelation(ev, layer) {
|
|
84
|
-
return this.postboy
|
|
85
|
-
.sub(CancelFeatureModificationCommand)
|
|
86
|
-
.pipe(first())
|
|
87
|
-
.subscribe(() => {
|
|
88
|
-
ev.finish(null);
|
|
89
|
-
this.clearInteraction(layer);
|
|
90
|
-
});
|
|
91
|
-
}
|
|
92
|
-
clearInteraction(layer) {
|
|
93
|
-
layer?.getSource()?.clear();
|
|
94
|
-
if (this.modify)
|
|
95
|
-
this.map?.removeInteraction(this.modify);
|
|
96
|
-
if (this.translate)
|
|
97
|
-
this.map?.removeInteraction(this.translate);
|
|
98
|
-
}
|
|
99
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.7", ngImport: i0, type: FeatureModificationService, deps: [{ token: i1.MapPostboyService }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
100
|
-
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.3.7", ngImport: i0, type: FeatureModificationService });
|
|
101
|
-
}
|
|
102
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.7", ngImport: i0, type: FeatureModificationService, decorators: [{
|
|
103
|
-
type: Injectable
|
|
104
|
-
}], ctorParameters: () => [{ type: i1.MapPostboyService }] });
|
|
105
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmVhdHVyZS1tb2RpZmljYXRpb24uc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL21hcHMtY29tcG9uZW50cy9zcmMvbWFwL3NlcnZpY2VzL2RyYXdpbmcvZmVhdHVyZS1tb2RpZmljYXRpb24uc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRTNDLE9BQU8sRUFBRSxNQUFNLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDbkQsT0FBTyxFQUFFLFVBQVUsRUFBZ0IsTUFBTSxJQUFJLENBQUM7QUFFOUMsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDbEQsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sY0FBYyxDQUFDO0FBSW5ELE9BQU8sRUFBRSxPQUFPLEVBQUUsR0FBRyxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBQ3pDLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSx3Q0FBd0MsQ0FBQztBQUN2RSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFFMUQsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRXZDLE9BQU8sRUFBRSxnQ0FBZ0MsRUFBRSxNQUFNLDZEQUE2RCxDQUFDO0FBQy9HLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLGdEQUFnRCxDQUFDOzs7QUFHdEYsTUFBTSxPQUFPLDBCQUEwQjtJQUtqQjtJQUpaLE1BQU0sQ0FBVTtJQUNoQixTQUFTLENBQWE7SUFDdEIsR0FBRyxDQUFPO0lBRWxCLFlBQW9CLE9BQTBCO1FBQTFCLFlBQU8sR0FBUCxPQUFPLENBQW1CO0lBQUcsQ0FBQztJQUVsRCxFQUFFO1FBQ0EsSUFBSSxDQUFDLG1CQUFtQixFQUFFLENBQUM7UUFDM0IsSUFBSSxDQUFDLGdCQUFnQixF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LGdCQUFnQixDQUFDLEtBQXFDO1FBQzVELEtBQUssRUFBRSxTQUFTLEVBQUUsRUFBRSxLQUFLLEVBQUUsQ0FBQztRQUM1QixJQUFJLElBQUksQ0FBQyxNQUFNO1lBQUUsSUFBSSxDQUFDLEdBQUcsRUFBRSxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDMUQsSUFBSSxJQUFJLENBQUMsU0FBUztZQUFFLElBQUksQ0FBQyxHQUFHLEVBQUUsaUJBQWlCLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDO0lBQ2xFLENBQUM7dUdBM0ZVLDBCQUEwQjsyR0FBMUIsMEJBQTBCOzsyRkFBMUIsMEJBQTBCO2tCQUR0QyxVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgSVBvc3Rib3lEZXBlbmRpbmdTZXJ2aWNlIH0gZnJvbSAnQGFydHN0ZXNoL3Bvc3Rib3knO1xuaW1wb3J0IHsgTW9kaWZ5LCBUcmFuc2xhdGUgfSBmcm9tICdvbC9pbnRlcmFjdGlvbic7XG5pbXBvcnQgeyBDb2xsZWN0aW9uLCBGZWF0dXJlLCBNYXAgfSBmcm9tICdvbCc7XG5pbXBvcnQgeyBNYXBQb3N0Ym95U2VydmljZSB9IGZyb20gJy4uL21hcC1wb3N0Ym95LnNlcnZpY2UnO1xuaW1wb3J0IHsgTWFwUmVuZGVyZWRFdmVudCB9IGZyb20gJy4uLy4uL21lc3NhZ2VzJztcbmltcG9ydCB7IEZlYXR1cmVPdXRwdXRGb3JtYXQgfSBmcm9tICcuLi8uLi9tb2RlbHMnO1xuaW1wb3J0IHsgVmVjdG9yIGFzIExheWVyIH0gZnJvbSAnb2wvbGF5ZXInO1xuaW1wb3J0IFZlY3RvclNvdXJjZSBmcm9tICdvbC9zb3VyY2UvVmVjdG9yJztcbmltcG9ydCB7IEdlb21ldHJ5IH0gZnJvbSAnb2wvZ2VvbSc7XG5pbXBvcnQgeyBHZW9KU09OLCBXS1QgfSBmcm9tICdvbC9mb3JtYXQnO1xuaW1wb3J0IHsgR2V0TGF5ZXJRdWVyeSB9IGZyb20gJy4uLy4uL21lc3NhZ2VzL3F1ZXJpZXMvZ2V0LWxheWVyLnF1ZXJ5JztcbmltcG9ydCB7IE1hcENvbnN0YW50cyB9IGZyb20gJy4uLy4uL21vZGVscy9tYXAuY29uc3RhbnRzJztcbmltcG9ydCB7IFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgZmlyc3QgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBWZWN0b3IgYXMgU291cmNlIH0gZnJvbSAnb2wvc291cmNlJztcbmltcG9ydCB7IENhbmNlbEZlYXR1cmVNb2RpZmljYXRpb25Db21tYW5kIH0gZnJvbSAnLi4vLi4vbWVzc2FnZXMvY29tbWFuZHMvY2FuY2VsLWZlYXR1cmUtbW9kaWZpY2F0aW9uLmNvbW1hbmQnO1xuaW1wb3J0IHsgTW9kaWZ5RmVhdHVyZUNvbW1hbmQgfSBmcm9tICcuLi8uLi9tZXNzYWdlcy9jb21tYW5kcy9tb2RpZnktZmVhdHVyZS5jb21tYW5kJztcblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIEZlYXR1cmVNb2RpZmljYXRpb25TZXJ2aWNlIGltcGxlbWVudHMgSVBvc3Rib3lEZXBlbmRpbmdTZXJ2aWNlIHtcbiAgcHJpdmF0ZSBtb2RpZnk/OiBNb2RpZnk7XG4gIHByaXZhdGUgdHJhbnNsYXRlPzogVHJhbnNsYXRlO1xuICBwcml2YXRlIG1hcD86IE1hcDtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHBvc3Rib3k6IE1hcFBvc3Rib3lTZXJ2aWNlKSB7fVxuXG4gIHVwKCk6IHZvaWQge1xuICAgIHRoaXMub2JzZXJ2ZU1vZGlmaWNhdGlvbigpO1xuICAgIHRoaXMub2JzZXJ2ZU1hcFJlbmRlcigpO1xuICB9XG5cbiAgcHJpdmF0ZSBvYnNlcnZlTW9kaWZpY2F0aW9uKCkge1xuICAgIHRoaXMucG9zdGJveS5zdWIoTW9kaWZ5RmVhdHVyZUNvbW1hbmQpLnN1YnNjcmliZSgoZXYpID0+IHtcbiAgICAgIHRoaXMuZGVmaW5lTGF5ZXIoKGwpID0+IHtcbiAgICAgICAgaWYgKCFsIHx8ICF0aGlzLm1hcCkge1xuICAgICAgICAgIHRoaXMuY2xlYXJJbnRlcmFjdGlvbihsKTtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5vYnNlcnZlQ2FuY2VsYXRpb24oZXYsIGwpO1xuICAgICAgICB0aGlzLmluaXRGZWF0dXJlKGwsIGV2Lm1vZGVsLmZlYXR1cmUpO1xuICAgICAgICB0aGlzLmFkZE1vZGlmeShldik7XG4gICAgICAgIGlmIChldi5kcmFnZ2FibGUpIHRoaXMuYWRkRHJhZ2dpbmcoZXYpO1xuICAgICAgfSk7XG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIGluaXRGZWF0dXJlKGxheWVyOiBMYXllcjxWZWN0b3JTb3VyY2U8R2VvbWV0cnk+PiwgZmVhdHVyZTogRmVhdHVyZTxHZW9tZXRyeT4pOiB2b2lkIHtcbiAgICBsYXllci5nZXRTb3VyY2UoKT8uY2xlYXIoKTtcbiAgICBsYXllci5nZXRTb3VyY2UoKT8uYWRkRmVhdHVyZShmZWF0dXJlKTtcbiAgfVxuXG4gIHByaXZhdGUgYWRkTW9kaWZ5KGNvbW1hbmQ6IE1vZGlmeUZlYXR1cmVDb21tYW5kKTogdm9pZCB7XG4gICAgdGhpcy5tb2RpZnkgPSBuZXcgTW9kaWZ5KHtcbiAgICAgIGZlYXR1cmVzOiBuZXcgQ29sbGVjdGlvbihbY29tbWFuZC5tb2RlbC5mZWF0dXJlXSksXG4gICAgICBzdHlsZTogY29tbWFuZC5zdHlsZSxcbiAgICB9KTtcbiAgICB0aGlzLm1vZGlmeS5vbignbW9kaWZ5ZW5kJywgKCkgPT4ge1xuICAgICAgdGhpcy5vbk1vZGlmaWVkKGNvbW1hbmQpO1xuICAgICAgY29tbWFuZC5tb2RlbC5mZWF0dXJlLmNoYW5nZWQoKTtcbiAgICB9KTtcbiAgICB0aGlzLm1hcD8uYWRkSW50ZXJhY3Rpb24odGhpcy5tb2RpZnkpO1xuICB9XG5cbiAgcHJpdmF0ZSBhZGREcmFnZ2luZyhjb21tYW5kOiBNb2RpZnlGZWF0dXJlQ29tbWFuZCk6IHZvaWQge1xuICAgIHRoaXMudHJhbnNsYXRlID0gbmV3IFRyYW5zbGF0ZSh7XG4gICAgICBmZWF0dXJlczogbmV3IENvbGxlY3Rpb24oW2NvbW1hbmQubW9kZWwuZmVhdHVyZV0pLFxuICAgICAgY29uZGl0aW9uOiAoZXYpID0+IHtcbiAgICAgICAgY29uc3QgY2xvbmUgPSBjb21tYW5kLm1vZGVsLmZlYXR1cmUuY2xvbmUoKTtcbiAgICAgICAgY2xvbmUuZ2V0R2VvbWV0cnkoKT8uc2NhbGUoMC45OTkpO1xuICAgICAgICByZXR1cm4gY2xvbmUuZ2V0R2VvbWV0cnkoKSEuaW50ZXJzZWN0c0Nvb3JkaW5hdGUoZXYuY29vcmRpbmF0ZSk7XG4gICAgICB9LFxuICAgIH0pO1xuICAgIHRoaXMudHJhbnNsYXRlLm9uKCd0cmFuc2xhdGVlbmQnLCAoKSA9PiB0aGlzLm9uTW9kaWZpZWQoY29tbWFuZCkpO1xuICAgIHRoaXMubWFwPy5hZGRJbnRlcmFjdGlvbih0aGlzLnRyYW5zbGF0ZSk7XG4gIH1cblxuICBwcml2YXRlIG9uTW9kaWZpZWQoY29tbWFuZDogTW9kaWZ5RmVhdHVyZUNvbW1hbmQpOiB2b2lkIHtcbiAgICBjb21tYW5kLm5leHQoXG4gICAgICBjb21tYW5kLmZvcm1hdCA9PT0gRmVhdHVyZU91dHB1dEZvcm1hdC5HZW9Kc29uXG4gICAgICAgID8gbmV3IEdlb0pTT04oKS53cml0ZUZlYXR1cmUoY29tbWFuZC5tb2RlbC5mZWF0dXJlKVxuICAgICAgICA6IGNvbW1hbmQuZm9ybWF0ID09PSBGZWF0dXJlT3V0cHV0Rm9ybWF0LldLVFxuICAgICAgICA/IG5ldyBXS1QoKS53cml0ZUZlYXR1cmUoY29tbWFuZC5tb2RlbC5mZWF0dXJlKVxuICAgICAgICA6IG5ldyBHZW9KU09OKCkud3JpdGVHZW9tZXRyeShjb21tYW5kLm1vZGVsLmZlYXR1cmUuZ2V0R2VvbWV0cnkoKSEpLFxuICAgICk7XG4gIH1cblxuICBwcml2YXRlIG9ic2VydmVNYXBSZW5kZXIoKSB7XG4gICAgdGhpcy5wb3N0Ym95LnN1YihNYXBSZW5kZXJlZEV2ZW50KS5zdWJzY3JpYmUoKG0pID0+IHtcbiAgICAgIHRoaXMubWFwID0gbS5tYXA7XG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIGRlZmluZUxheWVyKGFjdGlvbjogKGxheWVyOiBMYXllcjxWZWN0b3JTb3VyY2U8YW55Pj4gfCBudWxsKSA9PiB2b2lkKTogdm9pZCB7XG4gICAgdGhpcy5wb3N0Ym95LmZpcmVDYWxsYmFjayhuZXcgR2V0TGF5ZXJRdWVyeShNYXBDb25zdGFudHMuRHJhd2luZ0xheWVySWQpLCAobCkgPT4gYWN0aW9uKGwpKTtcbiAgfVxuXG4gIHByaXZhdGUgb2JzZXJ2ZUNhbmNlbGF0aW9uKGV2OiBNb2RpZnlGZWF0dXJlQ29tbWFuZCwgbGF5ZXI6IExheWVyPFZlY3RvclNvdXJjZTxhbnk+PiB8IG51bGwpOiBTdWJzY3JpcHRpb24ge1xuICAgIHJldHVybiB0aGlzLnBvc3Rib3lcbiAgICAgIC5zdWIoQ2FuY2VsRmVhdHVyZU1vZGlmaWNhdGlvbkNvbW1hbmQpXG4gICAgICAucGlwZShmaXJzdCgpKVxuICAgICAgLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgIGV2LmZpbmlzaChudWxsKTtcbiAgICAgICAgdGhpcy5jbGVhckludGVyYWN0aW9uKGxheWVyKTtcbiAgICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBjbGVhckludGVyYWN0aW9uKGxheWVyOiBMYXllcjxTb3VyY2U8R2VvbWV0cnk+PiB8IG51bGwpOiB2b2lkIHtcbiAgICBsYXllcj8uZ2V0U291cmNlKCk/LmNsZWFyKCk7XG4gICAgaWYgKHRoaXMubW9kaWZ5KSB0aGlzLm1hcD8ucmVtb3ZlSW50ZXJhY3Rpb24odGhpcy5tb2RpZnkpO1xuICAgIGlmICh0aGlzLnRyYW5zbGF0ZSkgdGhpcy5tYXA/LnJlbW92ZUludGVyYWN0aW9uKHRoaXMudHJhbnNsYXRlKTtcbiAgfVxufVxuIl19
|
|
@@ -1,77 +0,0 @@
|
|
|
1
|
-
import { LineString, Point } from 'ol/geom';
|
|
2
|
-
import * as Sphere from 'ol/sphere';
|
|
3
|
-
export class FeatureService {
|
|
4
|
-
constructor() { }
|
|
5
|
-
static filterFeaturesInArea(query) {
|
|
6
|
-
return query.features.filter((f) => FeatureService.booleanIntersects(query.area, f.getGeometry()));
|
|
7
|
-
}
|
|
8
|
-
static filterFeaturesInPoint(query) {
|
|
9
|
-
return query.features.filter((f) => FeatureService.booleanIntersects(f.getGeometry(), new Point([query.lng, query.lat])));
|
|
10
|
-
}
|
|
11
|
-
static calculateArea(g) {
|
|
12
|
-
if (!g)
|
|
13
|
-
return 0;
|
|
14
|
-
return Sphere.getArea(g, { projection: 'EPSG:4326' });
|
|
15
|
-
}
|
|
16
|
-
static polygonSelfIntersects(feature) {
|
|
17
|
-
if (feature.getGeometry().getType() !== 'Polygon')
|
|
18
|
-
return false;
|
|
19
|
-
let intersections = 0;
|
|
20
|
-
const segments = FeatureService.getSegmentsFromCoordinates(feature.getGeometry());
|
|
21
|
-
for (let i = 0; i < segments.length; i++) {
|
|
22
|
-
for (let z = i + 1; z < segments.length; z++) {
|
|
23
|
-
if (!intersections && this.segmentIntersection(segments[i].getCoordinates(), segments[z].getCoordinates())) {
|
|
24
|
-
intersections++;
|
|
25
|
-
}
|
|
26
|
-
}
|
|
27
|
-
}
|
|
28
|
-
return intersections !== 0;
|
|
29
|
-
}
|
|
30
|
-
static booleanIntersects(g1, g2) {
|
|
31
|
-
if (g2.getType() === 'Point')
|
|
32
|
-
return g1.intersectsCoordinate(g2.getCoordinates());
|
|
33
|
-
if (g2.getType() === 'Circle')
|
|
34
|
-
return g1.intersectsCoordinate(g2.getCenter());
|
|
35
|
-
if (g2.getType() === 'Polygon')
|
|
36
|
-
return g1.intersectsCoordinate(g2.getInteriorPoint().getCoordinates());
|
|
37
|
-
return false;
|
|
38
|
-
}
|
|
39
|
-
static getSegmentsFromCoordinates(geom) {
|
|
40
|
-
if (!geom)
|
|
41
|
-
return [];
|
|
42
|
-
const coords = geom.getCoordinates();
|
|
43
|
-
const line = new LineString(coords[0]);
|
|
44
|
-
const segments = [];
|
|
45
|
-
line.forEachSegment((s1, s2) => {
|
|
46
|
-
const l = new LineString([s1, s2]);
|
|
47
|
-
l.scale(0.999); // bug of the OL, as I see
|
|
48
|
-
segments.push(l);
|
|
49
|
-
});
|
|
50
|
-
return segments;
|
|
51
|
-
}
|
|
52
|
-
static segmentIntersection(s1, s2) {
|
|
53
|
-
const a = s1[0], b = s1[1], c = s2[0], d = s2[1];
|
|
54
|
-
const o1 = this.orientation(a, b, c);
|
|
55
|
-
const o2 = this.orientation(a, b, d);
|
|
56
|
-
const o3 = this.orientation(c, d, a);
|
|
57
|
-
const o4 = this.orientation(c, d, b);
|
|
58
|
-
return ((o1 != o2 && o3 != o4) ||
|
|
59
|
-
(o1 == 0 && this.onSegment(a, d, b)) ||
|
|
60
|
-
(o2 == 0 && this.onSegment(a, d, b)) ||
|
|
61
|
-
(o3 == 0 && this.onSegment(d, a, d)) ||
|
|
62
|
-
(o4 == 0 && this.onSegment(d, b, d)));
|
|
63
|
-
}
|
|
64
|
-
static orientation(p, q, r) {
|
|
65
|
-
const val = (q[1] - p[1]) * (r[0] - q[0]) - (q[0] - p[0]) * (r[1] - q[1]);
|
|
66
|
-
if (val == 0)
|
|
67
|
-
return 0; // collinear
|
|
68
|
-
return val > 0 ? 1 : 2; // clock or counterclock wise
|
|
69
|
-
}
|
|
70
|
-
static onSegment(p, q, r) {
|
|
71
|
-
return (q[0] <= (p[0] > r[0] ? p[0] : r[0]) &&
|
|
72
|
-
q[0] >= (p[0] < r[0] ? p[0] : r[0]) &&
|
|
73
|
-
q[1] <= (p[1] > r[1] ? p[1] : r[1]) &&
|
|
74
|
-
q[1] >= (p[1] < r[1] ? p[1] : r[1]));
|
|
75
|
-
}
|
|
76
|
-
}
|
|
77
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmVhdHVyZS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbWFwcy1jb21wb25lbnRzL3NyYy9tYXAvc2VydmljZXMvZmVhdHVyZS5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBd0MsVUFBVSxFQUFFLEtBQUssRUFBRSxNQUFNLFNBQVMsQ0FBQztBQUdsRixPQUFPLEtBQUssTUFBTSxNQUFNLFdBQVcsQ0FBQztBQUlwQyxNQUFNLE9BQU8sY0FBYztJQUN6QixnQkFBZSxDQUFDO0lBRVQsTUFBTSxDQUFDLG9CQUFvQixDQUFDLEtBQW1DO1FBQ3BFLE9BQU8sS0FBSyxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLGNBQWMsQ0FBQyxpQkFBaUIsQ0FBQyxLQUFLLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxXQUFXLEVBQUcsQ0FBQyxDQUFDLENBQUM7SUFDdEcsQ0FBQztJQUVNLE1BQU0sQ0FBQyxxQkFBcUIsQ0FBQyxLQUFvQztRQUN0RSxPQUFPLEtBQUssQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FDakMsY0FBYyxDQUFDLGlCQUFpQixDQUFDLENBQUMsQ0FBQyxXQUFXLEVBQUcsRUFBRSxJQUFJLEtBQUssQ0FBQyxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FDdEYsQ0FBQztJQUNKLENBQUM7SUFFTSxNQUFNLENBQUMsYUFBYSxDQUFDLENBQXVCO1FBQ2pELElBQUksQ0FBQyxDQUFDO1lBQUUsT0FBTyxDQUFDLENBQUM7UUFDakIsT0FBTyxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUMsRUFBRSxFQUFFLFVBQVUsRUFBRSxXQUFXLEVBQUUsQ0FBQyxDQUFDO0lBQ3hELENBQUM7SUFFTSxNQUFNLENBQUMscUJBQXFC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LENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztRQUNyQyxNQUFNLEVBQUUsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFDckMsTUFBTSxFQUFFLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBQ3JDLE9BQU8sQ0FDTCxDQUFDLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsQ0FBQztZQUN0QixDQUFDLEVBQUUsSUFBSSxDQUFDLElBQUksSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO1lBQ3BDLENBQUMsRUFBRSxJQUFJLENBQUMsSUFBSSxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7WUFDcEMsQ0FBQyxFQUFFLElBQUksQ0FBQyxJQUFJLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztZQUNwQyxDQUFDLEVBQUUsSUFBSSxDQUFDLElBQUksSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQ3JDLENBQUM7SUFDSixDQUFDO0lBRU8sTUFBTSxDQUFDLFdBQVcsQ0FBQyxDQUFXLEVBQUUsQ0FBVyxFQUFFLENBQVc7UUFDOUQsTUFBTSxHQUFHLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDMUUsSUFBSSxHQUFHLElBQUksQ0FBQztZQUFFLE9BQU8sQ0FBQyxDQUFDLENBQUMsWUFBWTtRQUNwQyxPQUFPLEdBQUcsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsNkJBQTZCO0lBQ3ZELENBQUM7SUFFTyxNQUFNLENBQUMsU0FBUyxDQUFDLENBQVcsRUFBRSxDQUFXLEVBQUUsQ0FBVztRQUM1RCxPQUFPLENBQ0wsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDbkMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDbkMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDbkMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FDcEMsQ0FBQztJQUNKLENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENpcmNsZSwgR2VvbWV0cnksIEdlb21ldHJ5Q29sbGVjdGlvbiwgTGluZVN0cmluZywgUG9pbnQgfSBmcm9tICdvbC9nZW9tJztcbmltcG9ydCBQb2x5Z29uLCB7IGZyb21DaXJjbGUgfSBmcm9tICdvbC9nZW9tL1BvbHlnb24nO1xuaW1wb3J0IHsgRmVhdHVyZSB9IGZyb20gJ29sJztcbmltcG9ydCAqIGFzIFNwaGVyZSBmcm9tICdvbC9zcGhlcmUnO1xuaW1wb3J0IHsgRmlsdGVyRmVhdHVyZXNJbkFyZWFFeGVjdXRvciB9IGZyb20gJy4uL21lc3NhZ2VzL2V4ZWN1dG9ycy9maWx0ZXItZmVhdHVyZXMtaW4tYXJlYS5leGVjdXRvcic7XG5pbXBvcnQgeyBGaWx0ZXJGZWF0dXJlc0luUG9pbnRFeGVjdXRvciB9IGZyb20gJy4uL21lc3NhZ2VzJztcblxuZXhwb3J0IGNsYXNzIEZlYXR1cmVTZXJ2aWNlIHtcbiAgY29uc3RydWN0b3IoKSB7fVxuXG4gIHB1YmxpYyBzdGF0aWMgZmlsdGVyRmVhdHVyZXNJbkFyZWEocXVlcnk6IEZpbHRlckZlYXR1cmVzSW5BcmVhRXhlY3V0b3IpOiBGZWF0dXJlPEdlb21ldHJ5PltdIHtcbiAgICByZXR1cm4gcXVlcnkuZmVhdHVyZXMuZmlsdGVyKChmKSA9PiBGZWF0dXJlU2VydmljZS5ib29sZWFuSW50ZXJzZWN0cyhxdWVyeS5hcmVhLCBmLmdldEdlb21ldHJ5KCkhKSk7XG4gIH1cblxuICBwdWJsaWMgc3RhdGljIGZpbHRlckZlYXR1cmVzSW5Qb2ludChxdWVyeTogRmlsdGVyRmVhdHVyZXNJblBvaW50RXhlY3V0b3IpOiBGZWF0dXJlPEdlb21ldHJ5PltdIHtcbiAgICByZXR1cm4gcXVlcnkuZmVhdHVyZXMuZmlsdGVyKChmKSA9PlxuICAgICAgRmVhdHVyZVNlcnZpY2UuYm9vbGVhbkludGVyc2VjdHMoZi5nZXRHZW9tZXRyeSgpISwgbmV3IFBvaW50KFtxdWVyeS5sbmcsIHF1ZXJ5LmxhdF0pKSxcbiAgICApO1xuICB9XG5cbiAgcHVibGljIHN0YXRpYyBjYWxjdWxhdGVBcmVhKGc6IEdlb21ldHJ5IHwgdW5kZWZpbmVkKTogbnVtYmVyIHtcbiAgICBpZiAoIWcpIHJldHVybiAwO1xuICAgIHJldHVybiBTcGhlcmUuZ2V0QXJlYShnLCB7IHByb2plY3Rpb246ICdFUFNHOjQzMjYnIH0pO1xuICB9XG5cbiAgcHVibGljIHN0YXRpYyBwb2x5Z29uU2VsZkludGVyc2VjdHMoZmVhdHVyZTogRmVhdHVyZTxHZW9tZXRyeT4pOiBib29sZWFuIHtcbiAgICBpZiAoZmVhdHVyZS5nZXRHZW9tZXRyeSgpIS5nZXRUeXBlKCkgIT09ICdQb2x5Z29uJykgcmV0dXJuIGZhbHNlO1xuICAgIGxldCBpbnRlcnNlY3Rpb25zID0gMDtcbiAgICBjb25zdCBzZWdtZW50cyA9IEZlYXR1cmVTZXJ2aWNlLmdldFNlZ21lbnRzRnJvbUNvb3JkaW5hdGVzKGZlYXR1cmUuZ2V0R2VvbWV0cnkoKSEpO1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgc2VnbWVudHMubGVuZ3RoOyBpKyspIHtcbiAgICAgIGZvciAobGV0IHogPSBpICsgMTsgeiA8IHNlZ21lbnRzLmxlbmd0aDsgeisrKSB7XG4gICAgICAgIGlmICghaW50ZXJzZWN0aW9ucyAmJiB0aGlzLnNlZ21lbnRJbnRlcnNlY3Rpb24oc2VnbWVudHNbaV0uZ2V0Q29vcmRpbmF0ZXMoKSwgc2VnbWVudHNbel0uZ2V0Q29vcmRpbmF0ZXMoKSkpIHtcbiAgICAgICAgICBpbnRlcnNlY3Rpb25zKys7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIGludGVyc2VjdGlvbnMgIT09IDA7XG4gIH1cblxuICBwcml2YXRlIHN0YXRpYyBib29sZWFuSW50ZXJzZWN0cyhnMTogR2VvbWV0cnksIGcyOiBHZW9tZXRyeSk6IGJvb2xlYW4ge1xuICAgIGlmIChnMi5nZXRUeXBlKCkgPT09ICdQb2ludCcpIHJldHVybiBnMS5pbnRlcnNlY3RzQ29vcmRpbmF0ZSgoZzIgYXMgUG9pbnQpLmdldENvb3JkaW5hdGVzKCkpO1xuICAgIGlmIChnMi5nZXRUeXBlKCkgPT09ICdDaXJjbGUnKSByZXR1cm4gZzEuaW50ZXJzZWN0c0Nvb3JkaW5hdGUoKGcyIGFzIENpcmNsZSkuZ2V0Q2VudGVyKCkpO1xuICAgIGlmIChnMi5nZXRUeXBlKCkgPT09ICdQb2x5Z29uJykgcmV0dXJuIGcxLmludGVyc2VjdHNDb29yZGluYXRlKChnMiBhcyBQb2x5Z29uKS5nZXRJbnRlcmlvclBvaW50KCkuZ2V0Q29vcmRpbmF0ZXMoKSk7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgcHJpdmF0ZSBzdGF0aWMgZ2V0U2VnbWVudHNGcm9tQ29vcmRpbmF0ZXMoZ2VvbTogR2VvbWV0cnkpOiBMaW5lU3RyaW5nW10ge1xuICAgIGlmICghZ2VvbSkgcmV0dXJuIFtdO1xuICAgIGNvbnN0IGNvb3JkcyA9IChnZW9tIGFzIGFueSkuZ2V0Q29vcmRpbmF0ZXMoKTtcbiAgICBjb25zdCBsaW5lID0gbmV3IExpbmVTdHJpbmcoY29vcmRzWzBdKTtcbiAgICBjb25zdCBzZWdtZW50czogTGluZVN0cmluZ1tdID0gW107XG4gICAgbGluZS5mb3JFYWNoU2VnbWVudCgoczEsIHMyKSA9PiB7XG4gICAgICBjb25zdCBsID0gbmV3IExpbmVTdHJpbmcoW3MxLCBzMl0pO1xuICAgICAgbC5zY2FsZSgwLjk5OSk7IC8vIGJ1ZyBvZiB0aGUgT0wsIGFzIEkgc2VlXG4gICAgICBzZWdtZW50cy5wdXNoKGwpO1xuICAgIH0pO1xuICAgIHJldHVybiBzZWdtZW50cztcbiAgfVxuXG4gIHByaXZhdGUgc3RhdGljIHNlZ21lbnRJbnRlcnNlY3Rpb24oczE6IG51bWJlcltdW10sIHMyOiBudW1iZXJbXVtdKTogYm9vbGVhbiB7XG4gICAgY29uc3QgYSA9IHMxWzBdLFxuICAgICAgYiA9IHMxWzFdLFxuICAgICAgYyA9IHMyWzBdLFxuICAgICAgZCA9IHMyWzFdO1xuICAgIGNvbnN0IG8xID0gdGhpcy5vcmllbnRhdGlvbihhLCBiLCBjKTtcbiAgICBjb25zdCBvMiA9IHRoaXMub3JpZW50YXRpb24oYSwgYiwgZCk7XG4gICAgY29uc3QgbzMgPSB0aGlzLm9yaWVudGF0aW9uKGMsIGQsIGEpO1xuICAgIGNvbnN0IG80ID0gdGhpcy5vcmllbnRhdGlvbihjLCBkLCBiKTtcbiAgICByZXR1cm4gKFxuICAgICAgKG8xICE9IG8yICYmIG8zICE9IG80KSB8fFxuICAgICAgKG8xID09IDAgJiYgdGhpcy5vblNlZ21lbnQoYSwgZCwgYikpIHx8XG4gICAgICAobzIgPT0gMCAmJiB0aGlzLm9uU2VnbWVudChhLCBkLCBiKSkgfHxcbiAgICAgIChvMyA9PSAwICYmIHRoaXMub25TZWdtZW50KGQsIGEsIGQpKSB8fFxuICAgICAgKG80ID09IDAgJiYgdGhpcy5vblNlZ21lbnQoZCwgYiwgZCkpXG4gICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgc3RhdGljIG9yaWVudGF0aW9uKHA6IG51bWJlcltdLCBxOiBudW1iZXJbXSwgcjogbnVtYmVyW10pOiBudW1iZXIge1xuICAgIGNvbnN0IHZhbCA9IChxWzFdIC0gcFsxXSkgKiAoclswXSAtIHFbMF0pIC0gKHFbMF0gLSBwWzBdKSAqIChyWzFdIC0gcVsxXSk7XG4gICAgaWYgKHZhbCA9PSAwKSByZXR1cm4gMDsgLy8gY29sbGluZWFyXG4gICAgcmV0dXJuIHZhbCA+IDAgPyAxIDogMjsgLy8gY2xvY2sgb3IgY291bnRlcmNsb2NrIHdpc2VcbiAgfVxuXG4gIHByaXZhdGUgc3RhdGljIG9uU2VnbWVudChwOiBudW1iZXJbXSwgcTogbnVtYmVyW10sIHI6IG51bWJlcltdKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIChcbiAgICAgIHFbMF0gPD0gKHBbMF0gPiByWzBdID8gcFswXSA6IHJbMF0pICYmXG4gICAgICBxWzBdID49IChwWzBdIDwgclswXSA/IHBbMF0gOiByWzBdKSAmJlxuICAgICAgcVsxXSA8PSAocFsxXSA+IHJbMV0gPyBwWzFdIDogclsxXSkgJiZcbiAgICAgIHFbMV0gPj0gKHBbMV0gPCByWzFdID8gcFsxXSA6IHJbMV0pXG4gICAgKTtcbiAgfVxufVxuIl19
|
|
@@ -1,55 +0,0 @@
|
|
|
1
|
-
import { Injectable } from '@angular/core';
|
|
2
|
-
import { MapRenderedEvent } from '../messages';
|
|
3
|
-
import { MapClickEvent } from '../messages/events/map-click.event';
|
|
4
|
-
import { MapConstants } from '../models/map.constants';
|
|
5
|
-
import * as i0 from "@angular/core";
|
|
6
|
-
import * as i1 from "./map-postboy.service";
|
|
7
|
-
export class MapClickService {
|
|
8
|
-
postboy;
|
|
9
|
-
map;
|
|
10
|
-
constructor(postboy) {
|
|
11
|
-
this.postboy = postboy;
|
|
12
|
-
}
|
|
13
|
-
up() {
|
|
14
|
-
this.observeMapRender();
|
|
15
|
-
}
|
|
16
|
-
onClick(ev) {
|
|
17
|
-
const model = new MapClickEvent(ev.coordinate, {}, {});
|
|
18
|
-
this.map?.forEachFeatureAtPixel(ev.pixel, (f, l) => {
|
|
19
|
-
this.getFeatureCollectionWithInner([f])
|
|
20
|
-
.filter((f) => f.getId() != null && !!l)
|
|
21
|
-
.forEach((fs) => {
|
|
22
|
-
let layerName = l.get('name');
|
|
23
|
-
if (!model.entities[layerName])
|
|
24
|
-
model.entities[layerName] = [];
|
|
25
|
-
if (!model.features[layerName])
|
|
26
|
-
model.features[layerName] = [];
|
|
27
|
-
model.entities[layerName].push({ id: fs.getId(), ...fs.get(MapConstants.FeatureInfo) });
|
|
28
|
-
model.features[layerName].push(fs);
|
|
29
|
-
});
|
|
30
|
-
});
|
|
31
|
-
return model;
|
|
32
|
-
}
|
|
33
|
-
observeMapRender() {
|
|
34
|
-
this.postboy.sub(MapRenderedEvent).subscribe((m) => {
|
|
35
|
-
this.map = m.map;
|
|
36
|
-
this.map?.on('singleclick', (e) => {
|
|
37
|
-
this.postboy.fire(this.onClick(e));
|
|
38
|
-
});
|
|
39
|
-
});
|
|
40
|
-
}
|
|
41
|
-
getFeatureCollectionWithInner(features) {
|
|
42
|
-
const result = [];
|
|
43
|
-
features?.forEach((f) => {
|
|
44
|
-
const innerFeatures = f.get('features');
|
|
45
|
-
innerFeatures?.length ? result.push(...innerFeatures) : result.push(f);
|
|
46
|
-
});
|
|
47
|
-
return result;
|
|
48
|
-
}
|
|
49
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.7", ngImport: i0, type: MapClickService, deps: [{ token: i1.MapPostboyService }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
50
|
-
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.3.7", ngImport: i0, type: MapClickService });
|
|
51
|
-
}
|
|
52
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.7", ngImport: i0, type: MapClickService, decorators: [{
|
|
53
|
-
type: Injectable
|
|
54
|
-
}], ctorParameters: () => [{ type: i1.MapPostboyService }] });
|
|
55
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFwLWNsaWNrLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9tYXBzLWNvbXBvbmVudHMvc3JjL21hcC9zZXJ2aWNlcy9tYXAtY2xpY2suc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBSTNDLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUMvQyxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sb0NBQW9DLENBQUM7QUFFbkUsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLHlCQUF5QixDQUFDOzs7QUFHdkQsTUFBTSxPQUFPLGVBQWU7SUFHTjtJQUZaLEdBQUcsQ0FBTztJQUVsQixZQUFvQixPQUEwQjtRQUExQixZQUFPLEdBQVAsT0FBTyxDQUFtQjtJQUFHLENBQUM7SUFFbEQsRUFBRTtRQUNBLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO0lBQzFCLENBQUM7SUFFRCxPQUFPLENBQUMsRUFBNEI7UUFDbEMsTUFBTSxLQUFLLEdBQWtCLElBQUksYUFBYSxDQUFDLEVBQUUsQ0FBQyxVQUFVLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBQ3RFLElBQUksQ0FBQyxHQUFHLEVBQUUscUJBQXFCLENBQUMsRUFBRSxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRTtZQUNqRCxJQUFJLENBQUMsNkJBQTZCLENBQUMsQ0FBQyxDQUFzQixDQUFDLENBQUM7aUJBQ3pELE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEtBQUssRUFBRSxJQUFJLElBQUksSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO2lCQUN2QyxPQUFPLENBQUMsQ0FBQyxFQUFxQixFQUFFLEVBQUU7Z0JBQ2pDLElBQUksU0FBUyxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLENBQUM7Z0JBQzlCLElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLFNBQVMsQ0FBQztvQkFBRSxLQUFLLENBQUMsUUFBUSxDQUFDLFNBQVMsQ0FBQyxHQUFHLEVBQUUsQ0FBQztnQkFDL0QsSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsU0FBUyxDQUFDO29CQUFFLEtBQUssQ0FBQyxRQUFRLENBQUMsU0FBUyxDQUFDLEdBQUcsRUFBRSxDQUFDO2dCQUMvRCxLQUFLLENBQUMsUUFBUSxDQUFDLFNBQVMsQ0FBQyxDQUFDLElBQUksQ0FBQyxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUMsS0FBSyxFQUFHLEVBQUUsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLFlBQVksQ0FBQyxXQUFXLENBQUMsRUFBRSxDQUFDLENBQUM7Z0JBQ3pGLEtBQUssQ0FBQyxRQUFRLENBQUMsU0FBUyxDQUFDLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1lBQ3JDLENBQUMsQ0FBQyxDQUFDO1FBQ1AsQ0FBQyxDQUFDLENBQUM7UUFDSCxPQUFPLEtBQUssQ0FBQztJQUNmLENBQUM7SUFFTyxnQkFBZ0I7UUFDdEIsSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRTtZQUNqRCxJQUFJLENBQUMsR0FBRyxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUM7WUFDakIsSUFBSSxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQUMsYUFBYSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUU7Z0JBQ2hDLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUNyQyxDQUFDLENBQUMsQ0FBQztRQUNMLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVPLDZCQUE2QixDQUFDLFFBQTZCO1FBQ2pFLE1BQU0sTUFBTSxHQUF3QixFQUFFLENBQUM7UUFDdkMsUUFBUSxFQUFFLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFO1lBQ3RCLE1BQU0sYUFBYSxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUF3QixDQUFDO1lBQy9ELGFBQWEsRUFBRSxNQUFNLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsR0FBRyxhQUFhLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUN6RSxDQUFDLENBQUMsQ0FBQztRQUNILE9BQU8sTUFBTSxDQUFDO0lBQ2hCLENBQUM7dUdBekNVLGVBQWU7MkdBQWYsZUFBZTs7MkZBQWYsZUFBZTtrQkFEM0IsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IElQb3N0Ym95RGVwZW5kaW5nU2VydmljZSB9IGZyb20gJ0BhcnRzdGVzaC9wb3N0Ym95JztcbmltcG9ydCB7IEZlYXR1cmUsIE1hcCwgTWFwQnJvd3NlckV2ZW50IH0gZnJvbSAnb2wnO1xuaW1wb3J0IHsgTWFwUG9zdGJveVNlcnZpY2UgfSBmcm9tICcuL21hcC1wb3N0Ym95LnNlcnZpY2UnO1xuaW1wb3J0IHsgTWFwUmVuZGVyZWRFdmVudCB9IGZyb20gJy4uL21lc3NhZ2VzJztcbmltcG9ydCB7IE1hcENsaWNrRXZlbnQgfSBmcm9tICcuLi9tZXNzYWdlcy9ldmVudHMvbWFwLWNsaWNrLmV2ZW50JztcbmltcG9ydCB7IEdlb21ldHJ5IH0gZnJvbSAnb2wvZ2VvbSc7XG5pbXBvcnQgeyBNYXBDb25zdGFudHMgfSBmcm9tICcuLi9tb2RlbHMvbWFwLmNvbnN0YW50cyc7XG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBNYXBDbGlja1NlcnZpY2UgaW1wbGVtZW50cyBJUG9zdGJveURlcGVuZGluZ1NlcnZpY2Uge1xuICBwcml2YXRlIG1hcD86IE1hcDtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHBvc3Rib3k6IE1hcFBvc3Rib3lTZXJ2aWNlKSB7fVxuXG4gIHVwKCk6IHZvaWQge1xuICAgIHRoaXMub2JzZXJ2ZU1hcFJlbmRlcigpO1xuICB9XG5cbiAgb25DbGljayhldjogTWFwQnJvd3NlckV2ZW50PFVJRXZlbnQ+KTogTWFwQ2xpY2tFdmVudCB7XG4gICAgY29uc3QgbW9kZWw6IE1hcENsaWNrRXZlbnQgPSBuZXcgTWFwQ2xpY2tFdmVudChldi5jb29yZGluYXRlLCB7fSwge30pO1xuICAgIHRoaXMubWFwPy5mb3JFYWNoRmVhdHVyZUF0UGl4ZWwoZXYucGl4ZWwsIChmLCBsKSA9PiB7XG4gICAgICB0aGlzLmdldEZlYXR1cmVDb2xsZWN0aW9uV2l0aElubmVyKFtmIGFzIEZlYXR1cmU8R2VvbWV0cnk+XSlcbiAgICAgICAgLmZpbHRlcigoZikgPT4gZi5nZXRJZCgpICE9IG51bGwgJiYgISFsKVxuICAgICAgICAuZm9yRWFjaCgoZnM6IEZlYXR1cmU8R2VvbWV0cnk+KSA9PiB7XG4gICAgICAgICAgbGV0IGxheWVyTmFtZSA9IGwuZ2V0KCduYW1lJyk7XG4gICAgICAgICAgaWYgKCFtb2RlbC5lbnRpdGllc1tsYXllck5hbWVdKSBtb2RlbC5lbnRpdGllc1tsYXllck5hbWVdID0gW107XG4gICAgICAgICAgaWYgKCFtb2RlbC5mZWF0dXJlc1tsYXllck5hbWVdKSBtb2RlbC5mZWF0dXJlc1tsYXllck5hbWVdID0gW107XG4gICAgICAgICAgbW9kZWwuZW50aXRpZXNbbGF5ZXJOYW1lXS5wdXNoKHsgaWQ6IGZzLmdldElkKCkhLCAuLi5mcy5nZXQoTWFwQ29uc3RhbnRzLkZlYXR1cmVJbmZvKSB9KTtcbiAgICAgICAgICBtb2RlbC5mZWF0dXJlc1tsYXllck5hbWVdLnB1c2goZnMpO1xuICAgICAgICB9KTtcbiAgICB9KTtcbiAgICByZXR1cm4gbW9kZWw7XG4gIH1cblxuICBwcml2YXRlIG9ic2VydmVNYXBSZW5kZXIoKSB7XG4gICAgdGhpcy5wb3N0Ym95LnN1YihNYXBSZW5kZXJlZEV2ZW50KS5zdWJzY3JpYmUoKG0pID0+IHtcbiAgICAgIHRoaXMubWFwID0gbS5tYXA7XG4gICAgICB0aGlzLm1hcD8ub24oJ3NpbmdsZWNsaWNrJywgKGUpID0+IHtcbiAgICAgICAgdGhpcy5wb3N0Ym95LmZpcmUodGhpcy5vbkNsaWNrKGUpKTtcbiAgICAgIH0pO1xuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRGZWF0dXJlQ29sbGVjdGlvbldpdGhJbm5lcihmZWF0dXJlczogRmVhdHVyZTxHZW9tZXRyeT5bXSk6IEZlYXR1cmU8R2VvbWV0cnk+W10ge1xuICAgIGNvbnN0IHJlc3VsdDogRmVhdHVyZTxHZW9tZXRyeT5bXSA9IFtdO1xuICAgIGZlYXR1cmVzPy5mb3JFYWNoKChmKSA9PiB7XG4gICAgICBjb25zdCBpbm5lckZlYXR1cmVzID0gZi5nZXQoJ2ZlYXR1cmVzJykgYXMgRmVhdHVyZTxHZW9tZXRyeT5bXTtcbiAgICAgIGlubmVyRmVhdHVyZXM/Lmxlbmd0aCA/IHJlc3VsdC5wdXNoKC4uLmlubmVyRmVhdHVyZXMpIDogcmVzdWx0LnB1c2goZik7XG4gICAgfSk7XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxufVxuIl19
|
|
@@ -1,75 +0,0 @@
|
|
|
1
|
-
import { Injectable } from '@angular/core';
|
|
2
|
-
import { Feature } from 'ol';
|
|
3
|
-
import { FitToPolygonsCommand, MapPointerMoveEvent, MapRenderedEvent } from '../messages';
|
|
4
|
-
import { FitToFeaturesCommand } from '../messages/commands/fit-to-features.command';
|
|
5
|
-
import { createEmpty, extend } from 'ol/extent';
|
|
6
|
-
import { MapFeatureHoveredEvent } from '../messages/events/map-feature-hovered.event';
|
|
7
|
-
import { MapConstants } from '../models';
|
|
8
|
-
import * as i0 from "@angular/core";
|
|
9
|
-
import * as i1 from "./map-postboy.service";
|
|
10
|
-
export class MapFeatureService {
|
|
11
|
-
postboy;
|
|
12
|
-
map;
|
|
13
|
-
fitPolygonsWaiting;
|
|
14
|
-
constructor(postboy) {
|
|
15
|
-
this.postboy = postboy;
|
|
16
|
-
}
|
|
17
|
-
up() {
|
|
18
|
-
this.observeMapRender();
|
|
19
|
-
this.observeFitToFeatures();
|
|
20
|
-
this.observeFitToPolygons();
|
|
21
|
-
this.observePointerMove();
|
|
22
|
-
}
|
|
23
|
-
observeMapRender() {
|
|
24
|
-
this.postboy.sub(MapRenderedEvent).subscribe((m) => {
|
|
25
|
-
this.map = m.map;
|
|
26
|
-
if (this.fitPolygonsWaiting)
|
|
27
|
-
this.postboy.fire(this.fitPolygonsWaiting);
|
|
28
|
-
});
|
|
29
|
-
}
|
|
30
|
-
observePointerMove() {
|
|
31
|
-
this.postboy.sub(MapPointerMoveEvent).subscribe((ev) => {
|
|
32
|
-
if (!this.map)
|
|
33
|
-
return;
|
|
34
|
-
let featureFound = false;
|
|
35
|
-
this.map.forEachFeatureAtPixel(ev.point, (f) => {
|
|
36
|
-
if (f instanceof Feature) {
|
|
37
|
-
this.postboy.fire(new MapFeatureHoveredEvent(f, f.get(MapConstants.FeatureLayerName)));
|
|
38
|
-
featureFound = true;
|
|
39
|
-
}
|
|
40
|
-
return true;
|
|
41
|
-
});
|
|
42
|
-
if (!featureFound)
|
|
43
|
-
this.postboy.fire(new MapFeatureHoveredEvent(null, null));
|
|
44
|
-
});
|
|
45
|
-
}
|
|
46
|
-
observeFitToFeatures() {
|
|
47
|
-
this.postboy.sub(FitToFeaturesCommand).subscribe((cmd) => {
|
|
48
|
-
this.fitToGeometries(cmd.features.map((f) => f.getGeometry()), cmd.zoomAfter);
|
|
49
|
-
});
|
|
50
|
-
}
|
|
51
|
-
observeFitToPolygons() {
|
|
52
|
-
this.postboy.sub(FitToPolygonsCommand).subscribe((cmd) => {
|
|
53
|
-
if (!this.map) {
|
|
54
|
-
this.fitPolygonsWaiting = cmd;
|
|
55
|
-
return;
|
|
56
|
-
}
|
|
57
|
-
this.fitPolygonsWaiting = undefined;
|
|
58
|
-
this.fitToGeometries(cmd.features.map((f) => f.feature.getGeometry()), cmd.zoomAfter);
|
|
59
|
-
});
|
|
60
|
-
}
|
|
61
|
-
fitToGeometries(geometries, zoomAfter) {
|
|
62
|
-
if (!geometries?.length || !this.map)
|
|
63
|
-
return;
|
|
64
|
-
const extent = createEmpty();
|
|
65
|
-
geometries.forEach((g) => extend(extent, g.getExtent()));
|
|
66
|
-
this.map.getView().fit(extent);
|
|
67
|
-
this.map.getView().setZoom(this.map.getView().getZoom() + zoomAfter);
|
|
68
|
-
}
|
|
69
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.7", ngImport: i0, type: MapFeatureService, deps: [{ token: i1.MapPostboyService }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
70
|
-
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.3.7", ngImport: i0, type: MapFeatureService });
|
|
71
|
-
}
|
|
72
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.7", ngImport: i0, type: MapFeatureService, decorators: [{
|
|
73
|
-
type: Injectable
|
|
74
|
-
}], ctorParameters: () => [{ type: i1.MapPostboyService }] });
|
|
75
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFwLWZlYXR1cmUuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL21hcHMtY29tcG9uZW50cy9zcmMvbWFwL3NlcnZpY2VzL21hcC1mZWF0dXJlLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUUzQyxPQUFPLEVBQUUsT0FBTyxFQUFPLE1BQU0sSUFBSSxDQUFDO0FBRWxDLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxtQkFBbUIsRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUMxRixPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSw4Q0FBOEMsQ0FBQztBQUVwRixPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUNoRCxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSw4Q0FBOEMsQ0FBQztBQUN0RixPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sV0FBVyxDQUFDOzs7QUFHekMsTUFBTSxPQUFPLGlCQUFpQjtJQUlSO0lBSFosR0FBRyxDQUFPO0lBQ1Ysa0JBQWtCLENBQXdCO0lBRWxELFlBQW9CLE9BQTBCO1FBQTFCLFlBQU8sR0FBUCxPQUFPLENBQW1CO0lBQUcsQ0FBQztJQUVsRCxFQUFFO1FBQ0EsSUFBSSxDQUFDLGdCQUFnQixFQUFFLENBQUM7UUFDeEIsSUFBSSxDQUFDLG9CQUFvQixFQUFFLENBQUM7UUFDNUIsSUFBSSxDQUFDLG9CQUFvQixFQUFFLENBQUM7UUFDNUIsSUFBSSxDQUFDLGtCQUFrQixFQUFFLENBQUM7SUFDNUIsQ0FBQztJQUVPLGdCQUFnQjtRQUN0QixJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFO1lBQ2pELElBQUksQ0FBQyxHQUFHLEdBQUcs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QyxHQUFHLENBQUMsT0FBTyxFQUFFLENBQUMsT0FBTyxFQUFHLEdBQUcsU0FBUyxDQUFDLENBQUM7SUFDeEUsQ0FBQzt1R0FoRVUsaUJBQWlCOzJHQUFqQixpQkFBaUI7OzJGQUFqQixpQkFBaUI7a0JBRDdCLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBJUG9zdGJveURlcGVuZGluZ1NlcnZpY2UgfSBmcm9tICdAYXJ0c3Rlc2gvcG9zdGJveSc7XG5pbXBvcnQgeyBGZWF0dXJlLCBNYXAgfSBmcm9tICdvbCc7XG5pbXBvcnQgeyBNYXBQb3N0Ym95U2VydmljZSB9IGZyb20gJy4vbWFwLXBvc3Rib3kuc2VydmljZSc7XG5pbXBvcnQgeyBGaXRUb1BvbHlnb25zQ29tbWFuZCwgTWFwUG9pbnRlck1vdmVFdmVudCwgTWFwUmVuZGVyZWRFdmVudCB9IGZyb20gJy4uL21lc3NhZ2VzJztcbmltcG9ydCB7IEZpdFRvRmVhdHVyZXNDb21tYW5kIH0gZnJvbSAnLi4vbWVzc2FnZXMvY29tbWFuZHMvZml0LXRvLWZlYXR1cmVzLmNvbW1hbmQnO1xuaW1wb3J0IHsgR2VvbWV0cnkgfSBmcm9tICdvbC9nZW9tJztcbmltcG9ydCB7IGNyZWF0ZUVtcHR5LCBleHRlbmQgfSBmcm9tICdvbC9leHRlbnQnO1xuaW1wb3J0IHsgTWFwRmVhdHVyZUhvdmVyZWRFdmVudCB9IGZyb20gJy4uL21lc3NhZ2VzL2V2ZW50cy9tYXAtZmVhdHVyZS1ob3ZlcmVkLmV2ZW50JztcbmltcG9ydCB7IE1hcENvbnN0YW50cyB9IGZyb20gJy4uL21vZGVscyc7XG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBNYXBGZWF0dXJlU2VydmljZSBpbXBsZW1lbnRzIElQb3N0Ym95RGVwZW5kaW5nU2VydmljZSB7XG4gIHByaXZhdGUgbWFwPzogTWFwO1xuICBwcml2YXRlIGZpdFBvbHlnb25zV2FpdGluZz86IEZpdFRvUG9seWdvbnNDb21tYW5kO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgcG9zdGJveTogTWFwUG9zdGJveVNlcnZpY2UpIHt9XG5cbiAgdXAoKTogdm9pZCB7XG4gICAgdGhpcy5vYnNlcnZlTWFwUmVuZGVyKCk7XG4gICAgdGhpcy5vYnNlcnZlRml0VG9GZWF0dXJlcygpO1xuICAgIHRoaXMub2JzZXJ2ZUZpdFRvUG9seWdvbnMoKTtcbiAgICB0aGlzLm9ic2VydmVQb2ludGVyTW92ZSgpO1xuICB9XG5cbiAgcHJpdmF0ZSBvYnNlcnZlTWFwUmVuZGVyKCkge1xuICAgIHRoaXMucG9zdGJveS5zdWIoTWFwUmVuZGVyZWRFdmVudCkuc3Vic2NyaWJlKChtKSA9PiB7XG4gICAgICB0aGlzLm1hcCA9IG0ubWFwO1xuICAgICAgaWYgKHRoaXMuZml0UG9seWdvbnNXYWl0aW5nKSB0aGlzLnBvc3Rib3kuZmlyZSh0aGlzLmZpdFBvbHlnb25zV2FpdGluZyk7XG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIG9ic2VydmVQb2ludGVyTW92ZSgpIHtcbiAgICB0aGlzLnBvc3Rib3kuc3ViKE1hcFBvaW50ZXJNb3ZlRXZlbnQpLnN1YnNjcmliZSgoZXYpID0+IHtcbiAgICAgIGlmICghdGhpcy5tYXApIHJldHVybjtcbiAgICAgIGxldCBmZWF0dXJlRm91bmQgPSBmYWxzZTtcbiAgICAgIHRoaXMubWFwLmZvckVhY2hGZWF0dXJlQXRQaXhlbChldi5wb2ludCwgKGYpID0+IHtcbiAgICAgICAgaWYgKGYgaW5zdGFuY2VvZiBGZWF0dXJlKSB7XG4gICAgICAgICAgdGhpcy5wb3N0Ym95LmZpcmUobmV3IE1hcEZlYXR1cmVIb3ZlcmVkRXZlbnQoZiBhcyBGZWF0dXJlPEdlb21ldHJ5PiwgZi5nZXQoTWFwQ29uc3RhbnRzLkZlYXR1cmVMYXllck5hbWUpKSk7XG4gICAgICAgICAgZmVhdHVyZUZvdW5kID0gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH0pO1xuICAgICAgaWYgKCFmZWF0dXJlRm91bmQpIHRoaXMucG9zdGJveS5maXJlKG5ldyBNYXBGZWF0dXJlSG92ZXJlZEV2ZW50KG51bGwsIG51bGwpKTtcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgb2JzZXJ2ZUZpdFRvRmVhdHVyZXMoKSB7XG4gICAgdGhpcy5wb3N0Ym95LnN1YihGaXRUb0ZlYXR1cmVzQ29tbWFuZCkuc3Vic2NyaWJlKChjbWQpID0+IHtcbiAgICAgIHRoaXMuZml0VG9HZW9tZXRyaWVzKFxuICAgICAgICBjbWQuZmVhdHVyZXMubWFwKChmKSA9PiBmLmdldEdlb21ldHJ5KCkhKSxcbiAgICAgICAgY21kLnpvb21BZnRlcixcbiAgICAgICk7XG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIG9ic2VydmVGaXRUb1BvbHlnb25zKCkge1xuICAgIHRoaXMucG9zdGJveS5zdWIoRml0VG9Qb2x5Z29uc0NvbW1hbmQpLnN1YnNjcmliZSgoY21kKSA9PiB7XG4gICAgICBpZiAoIXRoaXMubWFwKSB7XG4gICAgICAgIHRoaXMuZml0UG9seWdvbnNXYWl0aW5nID0gY21kO1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICB0aGlzLmZpdFBvbHlnb25zV2FpdGluZyA9IHVuZGVmaW5lZDtcbiAgICAgIHRoaXMuZml0VG9HZW9tZXRyaWVzKFxuICAgICAgICBjbWQuZmVhdHVyZXMubWFwKChmKSA9PiBmLmZlYXR1cmUuZ2V0R2VvbWV0cnkoKSEpLFxuICAgICAgICBjbWQuem9vbUFmdGVyLFxuICAgICAgKTtcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgZml0VG9HZW9tZXRyaWVzKGdlb21ldHJpZXM6IEdlb21ldHJ5W10sIHpvb21BZnRlcjogbnVtYmVyKTogdm9pZCB7XG4gICAgaWYgKCFnZW9tZXRyaWVzPy5sZW5ndGggfHwgIXRoaXMubWFwKSByZXR1cm47XG4gICAgY29uc3QgZXh0ZW50ID0gY3JlYXRlRW1wdHkoKTtcbiAgICBnZW9tZXRyaWVzLmZvckVhY2goKGcpID0+IGV4dGVuZChleHRlbnQsIGcuZ2V0RXh0ZW50KCkpKTtcbiAgICB0aGlzLm1hcC5nZXRWaWV3KCkuZml0KGV4dGVudCk7XG4gICAgdGhpcy5tYXAuZ2V0VmlldygpLnNldFpvb20odGhpcy5tYXAuZ2V0VmlldygpLmdldFpvb20oKSEgKyB6b29tQWZ0ZXIpO1xuICB9XG59XG4iXX0=
|