annotate client/src/store/map.js @ 3081:9107c959bb3b

client: Changed distance marks ashore to WMS layer.
author Raimund Renkert <raimund.renkert@intevation.de>
date Thu, 18 Apr 2019 13:26:02 +0200
parents 57255fda7594
children a69a8deb56fe
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
1362
ca33ad696594 remove the first empyty lines
Fadi Abbud <fadi.abbud@intevation.de>
parents: 1361
diff changeset
1 /* This is Free Software under GNU Affero General Public License v >= 3.0
1019
ca628dce90dd Licensing information added
Thomas Junk <thomas.junk@intevation.de>
parents: 975
diff changeset
2 * without warranty, see README.md and license for details.
1361
ea3a89a1813a remove trailing whitespace, add headers for Makefile, add the missed authors
Fadi Abbud <fadi.abbud@intevation.de>
parents: 1313
diff changeset
3 *
1019
ca628dce90dd Licensing information added
Thomas Junk <thomas.junk@intevation.de>
parents: 975
diff changeset
4 * SPDX-License-Identifier: AGPL-3.0-or-later
ca628dce90dd Licensing information added
Thomas Junk <thomas.junk@intevation.de>
parents: 975
diff changeset
5 * License-Filename: LICENSES/AGPL-3.0.txt
1361
ea3a89a1813a remove trailing whitespace, add headers for Makefile, add the missed authors
Fadi Abbud <fadi.abbud@intevation.de>
parents: 1313
diff changeset
6 *
1927
5a37ee321651 client: make isolines legend graphic internally availableo
Bernhard Reiter <bernhard@intevation.de>
parents: 1879
diff changeset
7 * Copyright (C) 2018, 2019 by via donau
1019
ca628dce90dd Licensing information added
Thomas Junk <thomas.junk@intevation.de>
parents: 975
diff changeset
8 * – Österreichische Wasserstraßen-Gesellschaft mbH
ca628dce90dd Licensing information added
Thomas Junk <thomas.junk@intevation.de>
parents: 975
diff changeset
9 * Software engineering by Intevation GmbH
1361
ea3a89a1813a remove trailing whitespace, add headers for Makefile, add the missed authors
Fadi Abbud <fadi.abbud@intevation.de>
parents: 1313
diff changeset
10 *
1019
ca628dce90dd Licensing information added
Thomas Junk <thomas.junk@intevation.de>
parents: 975
diff changeset
11 * Author(s):
1927
5a37ee321651 client: make isolines legend graphic internally availableo
Bernhard Reiter <bernhard@intevation.de>
parents: 1879
diff changeset
12 * * Bernhard Reiter <bernhard.reiter@intevation.de>
5a37ee321651 client: make isolines legend graphic internally availableo
Bernhard Reiter <bernhard@intevation.de>
parents: 1879
diff changeset
13 * * Markus Kottländer <markus@intevation.de>
5a37ee321651 client: make isolines legend graphic internally availableo
Bernhard Reiter <bernhard@intevation.de>
parents: 1879
diff changeset
14 * * Thomas Junk <thomas.junk@intevation.de>
1019
ca628dce90dd Licensing information added
Thomas Junk <thomas.junk@intevation.de>
parents: 975
diff changeset
15 */
ca628dce90dd Licensing information added
Thomas Junk <thomas.junk@intevation.de>
parents: 975
diff changeset
16
2985
1b8bb4f89227 client: removed .js and .vue extention from imports
Markus Kottlaender <markus@intevation.de>
parents: 2957
diff changeset
17 import Draw from "ol/interaction/Draw";
3006
44493664d40e client: refactored layers config
Markus Kottlaender <markus@intevation.de>
parents: 2997
diff changeset
18 import { Stroke, Style, Fill, Circle } from "ol/style";
1158
da75faa8043f added central moveMap method to pan and zoom the map on certain events
Markus Kottlaender <markus@intevation.de>
parents: 1144
diff changeset
19 import { fromLonLat } from "ol/proj";
2985
1b8bb4f89227 client: removed .js and .vue extention from imports
Markus Kottlaender <markus@intevation.de>
parents: 2957
diff changeset
20 import { getLength, getArea } from "ol/sphere";
1435
7fa030127b05 fixed panning problem
Markus Kottlaender <markus@intevation.de>
parents: 1395
diff changeset
21 import { getCenter } from "ol/extent";
2985
1b8bb4f89227 client: removed .js and .vue extention from imports
Markus Kottlaender <markus@intevation.de>
parents: 2957
diff changeset
22 import { transformExtent } from "ol/proj";
2132
7a2eedc182f7 staging: zoomable stretches. zoomToExtent etd
Thomas Junk <thomas.junk@intevation.de>
parents: 2125
diff changeset
23 import bbox from "@turf/bbox";
2947
a6eea3002e6e client: cleanup import paths
Fadi Abbud <fadi.abbud@intevation.de>
parents: 2932
diff changeset
24 import app from "@/main";
3029
81c2e561fe03 Use distance marks an axis via WMS. Added legend and featureinfo.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 3006
diff changeset
25 import { HTTP } from "@/lib/http";
81c2e561fe03 Use distance marks an axis via WMS. Added legend and featureinfo.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 3006
diff changeset
26 import Feature from "ol/Feature";
81c2e561fe03 Use distance marks an axis via WMS. Added legend and featureinfo.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 3006
diff changeset
27 import Point from "ol/geom/Point";
585
ef307bd6b5d8 refac: restructured client application
Thomas Junk <thomas.junk@intevation.de>
parents:
diff changeset
28
1296
99c039e86624 replaced manual store cleanup on logout with central store reset
Markus Kottlaender <markus@intevation.de>
parents: 1272
diff changeset
29 // initial state
99c039e86624 replaced manual store cleanup on logout with central store reset
Markus Kottlaender <markus@intevation.de>
parents: 1272
diff changeset
30 const init = () => {
99c039e86624 replaced manual store cleanup on logout with central store reset
Markus Kottlaender <markus@intevation.de>
parents: 1272
diff changeset
31 return {
3044
c71373594719 client: map: prepared store to hold multiple map objects
Markus Kottlaender <markus@intevation.de>
parents: 3043
diff changeset
32 openLayersMaps: [],
3063
333aff79197d client: maps: all map's views are now synced
Markus Kottlaender <markus@intevation.de>
parents: 3062
diff changeset
33 syncedView: null,
2310
92b21df288e2 client: use user specific extent only on initial load
Markus Kottlaender <markus@intevation.de>
parents: 2309
diff changeset
34 initialLoad: true,
1313
e4e35fb2d995 save map extent (center/zoom) in store, to not lose it when switching between map and admin area
Markus Kottlaender <markus@intevation.de>
parents: 1296
diff changeset
35 extent: {
e4e35fb2d995 save map extent (center/zoom) in store, to not lose it when switching between map and admin area
Markus Kottlaender <markus@intevation.de>
parents: 1296
diff changeset
36 lat: 6155376,
e4e35fb2d995 save map extent (center/zoom) in store, to not lose it when switching between map and admin area
Markus Kottlaender <markus@intevation.de>
parents: 1296
diff changeset
37 lon: 1819178,
e4e35fb2d995 save map extent (center/zoom) in store, to not lose it when switching between map and admin area
Markus Kottlaender <markus@intevation.de>
parents: 1296
diff changeset
38 zoom: 11
e4e35fb2d995 save map extent (center/zoom) in store, to not lose it when switching between map and admin area
Markus Kottlaender <markus@intevation.de>
parents: 1296
diff changeset
39 },
1140
2e06bc53b002 separating line/polygon/cut tools in UI
Markus Kottlaender <markus@intevation.de>
parents: 1122
diff changeset
40 identifiedFeatures: [], // map features identified by clicking on the map
1247
c14353e2cdb9 repositioning of buttons (issue225)
Markus Kottlaender <markus@intevation.de>
parents: 1237
diff changeset
41 currentMeasurement: null, // distance or area from line-/polygon-/cutTool
3062
87e0422cffa7 client: draw/cut tools work now with multiple maps
Markus Kottlaender <markus@intevation.de>
parents: 3054
diff changeset
42 lineToolEnabled: false,
87e0422cffa7 client: draw/cut tools work now with multiple maps
Markus Kottlaender <markus@intevation.de>
parents: 3054
diff changeset
43 polygonToolEnabled: false,
87e0422cffa7 client: draw/cut tools work now with multiple maps
Markus Kottlaender <markus@intevation.de>
parents: 3054
diff changeset
44 cutToolEnabled: false,
1927
5a37ee321651 client: make isolines legend graphic internally availableo
Bernhard Reiter <bernhard@intevation.de>
parents: 1879
diff changeset
45 isolinesLegendImgDataURL: "",
3006
44493664d40e client: refactored layers config
Markus Kottlaender <markus@intevation.de>
parents: 2997
diff changeset
46 differencesLegendImgDataURL: ""
1296
99c039e86624 replaced manual store cleanup on logout with central store reset
Markus Kottlaender <markus@intevation.de>
parents: 1272
diff changeset
47 };
99c039e86624 replaced manual store cleanup on logout with central store reset
Markus Kottlaender <markus@intevation.de>
parents: 1272
diff changeset
48 };
99c039e86624 replaced manual store cleanup on logout with central store reset
Markus Kottlaender <markus@intevation.de>
parents: 1272
diff changeset
49
99c039e86624 replaced manual store cleanup on logout with central store reset
Markus Kottlaender <markus@intevation.de>
parents: 1272
diff changeset
50 export default {
99c039e86624 replaced manual store cleanup on logout with central store reset
Markus Kottlaender <markus@intevation.de>
parents: 1272
diff changeset
51 init,
99c039e86624 replaced manual store cleanup on logout with central store reset
Markus Kottlaender <markus@intevation.de>
parents: 1272
diff changeset
52 namespaced: true,
99c039e86624 replaced manual store cleanup on logout with central store reset
Markus Kottlaender <markus@intevation.de>
parents: 1272
diff changeset
53 state: init(),
585
ef307bd6b5d8 refac: restructured client application
Thomas Junk <thomas.junk@intevation.de>
parents:
diff changeset
54 getters: {
3079
57255fda7594 client: compare surveys on map
Markus Kottlaender <markus@intevation.de>
parents: 3078
diff changeset
55 openLayersMap: state => id => {
57255fda7594 client: compare surveys on map
Markus Kottlaender <markus@intevation.de>
parents: 3078
diff changeset
56 return state.openLayersMaps.find(
57255fda7594 client: compare surveys on map
Markus Kottlaender <markus@intevation.de>
parents: 3078
diff changeset
57 map => map.getTarget() === "map-" + (id || "main")
57255fda7594 client: compare surveys on map
Markus Kottlaender <markus@intevation.de>
parents: 3078
diff changeset
58 );
3044
c71373594719 client: map: prepared store to hold multiple map objects
Markus Kottlaender <markus@intevation.de>
parents: 3043
diff changeset
59 },
2370
7fe2f5d334dc client: improved identify tool readability
Markus Kottlaender <markus@intevation.de>
parents: 2314
diff changeset
60 filteredIdentifiedFeatures: state => {
7fe2f5d334dc client: improved identify tool readability
Markus Kottlaender <markus@intevation.de>
parents: 2314
diff changeset
61 return state.identifiedFeatures.filter(f => f.getId());
585
ef307bd6b5d8 refac: restructured client application
Thomas Junk <thomas.junk@intevation.de>
parents:
diff changeset
62 }
ef307bd6b5d8 refac: restructured client application
Thomas Junk <thomas.junk@intevation.de>
parents:
diff changeset
63 },
ef307bd6b5d8 refac: restructured client application
Thomas Junk <thomas.junk@intevation.de>
parents:
diff changeset
64 mutations: {
2310
92b21df288e2 client: use user specific extent only on initial load
Markus Kottlaender <markus@intevation.de>
parents: 2309
diff changeset
65 initialLoad: (state, initialLoad) => {
92b21df288e2 client: use user specific extent only on initial load
Markus Kottlaender <markus@intevation.de>
parents: 2309
diff changeset
66 state.initialLoad = initialLoad;
92b21df288e2 client: use user specific extent only on initial load
Markus Kottlaender <markus@intevation.de>
parents: 2309
diff changeset
67 },
1313
e4e35fb2d995 save map extent (center/zoom) in store, to not lose it when switching between map and admin area
Markus Kottlaender <markus@intevation.de>
parents: 1296
diff changeset
68 extent: (state, extent) => {
e4e35fb2d995 save map extent (center/zoom) in store, to not lose it when switching between map and admin area
Markus Kottlaender <markus@intevation.de>
parents: 1296
diff changeset
69 state.extent = extent;
e4e35fb2d995 save map extent (center/zoom) in store, to not lose it when switching between map and admin area
Markus Kottlaender <markus@intevation.de>
parents: 1296
diff changeset
70 },
3044
c71373594719 client: map: prepared store to hold multiple map objects
Markus Kottlaender <markus@intevation.de>
parents: 3043
diff changeset
71 addOpenLayersMap: (state, map) => {
c71373594719 client: map: prepared store to hold multiple map objects
Markus Kottlaender <markus@intevation.de>
parents: 3043
diff changeset
72 state.openLayersMaps.push(map);
1112
2c3d32322126 moved identifystore properties to mapstore
Markus Kottlaender <markus@intevation.de>
parents: 1099
diff changeset
73 },
3052
01210542e028 client: remove openlayers map objects after removing a map component from the view
Markus Kottlaender <markus@intevation.de>
parents: 3051
diff changeset
74 removeOpenLayersMap: (state, map) => {
01210542e028 client: remove openlayers map objects after removing a map component from the view
Markus Kottlaender <markus@intevation.de>
parents: 3051
diff changeset
75 let index = state.openLayersMaps.findIndex(
01210542e028 client: remove openlayers map objects after removing a map component from the view
Markus Kottlaender <markus@intevation.de>
parents: 3051
diff changeset
76 m => m.getTarget() === map.getTarget()
01210542e028 client: remove openlayers map objects after removing a map component from the view
Markus Kottlaender <markus@intevation.de>
parents: 3051
diff changeset
77 );
01210542e028 client: remove openlayers map objects after removing a map component from the view
Markus Kottlaender <markus@intevation.de>
parents: 3051
diff changeset
78 if (index !== -1) {
3071
53082e5a198a client: maps: fixed removing a map, added missing second param for splice
Markus Kottlaender <markus@intevation.de>
parents: 3069
diff changeset
79 state.openLayersMaps.splice(index, 1);
3052
01210542e028 client: remove openlayers map objects after removing a map component from the view
Markus Kottlaender <markus@intevation.de>
parents: 3051
diff changeset
80 }
01210542e028 client: remove openlayers map objects after removing a map component from the view
Markus Kottlaender <markus@intevation.de>
parents: 3051
diff changeset
81 },
3063
333aff79197d client: maps: all map's views are now synced
Markus Kottlaender <markus@intevation.de>
parents: 3062
diff changeset
82 syncedView: (state, view) => {
333aff79197d client: maps: all map's views are now synced
Markus Kottlaender <markus@intevation.de>
parents: 3062
diff changeset
83 state.syncedView = view;
333aff79197d client: maps: all map's views are now synced
Markus Kottlaender <markus@intevation.de>
parents: 3062
diff changeset
84 },
1112
2c3d32322126 moved identifystore properties to mapstore
Markus Kottlaender <markus@intevation.de>
parents: 1099
diff changeset
85 setIdentifiedFeatures: (state, identifiedFeatures) => {
2c3d32322126 moved identifystore properties to mapstore
Markus Kottlaender <markus@intevation.de>
parents: 1099
diff changeset
86 state.identifiedFeatures = identifiedFeatures;
2c3d32322126 moved identifystore properties to mapstore
Markus Kottlaender <markus@intevation.de>
parents: 1099
diff changeset
87 },
3029
81c2e561fe03 Use distance marks an axis via WMS. Added legend and featureinfo.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 3006
diff changeset
88 addIdentifiedFeatures: (state, identifiedFeatures) => {
3031
f99f0cbb843f client:linting
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3029
diff changeset
89 state.identifiedFeatures = state.identifiedFeatures.concat(
f99f0cbb843f client:linting
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3029
diff changeset
90 identifiedFeatures
f99f0cbb843f client:linting
Fadi Abbud <fadi.abbud@intevation.de>
parents: 3029
diff changeset
91 );
3029
81c2e561fe03 Use distance marks an axis via WMS. Added legend and featureinfo.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 3006
diff changeset
92 },
1112
2c3d32322126 moved identifystore properties to mapstore
Markus Kottlaender <markus@intevation.de>
parents: 1099
diff changeset
93 setCurrentMeasurement: (state, measurement) => {
2c3d32322126 moved identifystore properties to mapstore
Markus Kottlaender <markus@intevation.de>
parents: 1099
diff changeset
94 state.currentMeasurement = measurement;
1115
1b160eda22cf moved drawMode to map store
Markus Kottlaender <markus@intevation.de>
parents: 1114
diff changeset
95 },
3062
87e0422cffa7 client: draw/cut tools work now with multiple maps
Markus Kottlaender <markus@intevation.de>
parents: 3054
diff changeset
96 lineToolEnabled: (state, enabled) => {
87e0422cffa7 client: draw/cut tools work now with multiple maps
Markus Kottlaender <markus@intevation.de>
parents: 3054
diff changeset
97 state.lineToolEnabled = enabled;
87e0422cffa7 client: draw/cut tools work now with multiple maps
Markus Kottlaender <markus@intevation.de>
parents: 3054
diff changeset
98 state.openLayersMaps.forEach(m => {
87e0422cffa7 client: draw/cut tools work now with multiple maps
Markus Kottlaender <markus@intevation.de>
parents: 3054
diff changeset
99 let tool = m
87e0422cffa7 client: draw/cut tools work now with multiple maps
Markus Kottlaender <markus@intevation.de>
parents: 3054
diff changeset
100 .getInteractions()
87e0422cffa7 client: draw/cut tools work now with multiple maps
Markus Kottlaender <markus@intevation.de>
parents: 3054
diff changeset
101 .getArray()
87e0422cffa7 client: draw/cut tools work now with multiple maps
Markus Kottlaender <markus@intevation.de>
parents: 3054
diff changeset
102 .find(i => i.get("id") === "linetool");
87e0422cffa7 client: draw/cut tools work now with multiple maps
Markus Kottlaender <markus@intevation.de>
parents: 3054
diff changeset
103 if (tool) {
87e0422cffa7 client: draw/cut tools work now with multiple maps
Markus Kottlaender <markus@intevation.de>
parents: 3054
diff changeset
104 tool.setActive(enabled);
87e0422cffa7 client: draw/cut tools work now with multiple maps
Markus Kottlaender <markus@intevation.de>
parents: 3054
diff changeset
105 }
87e0422cffa7 client: draw/cut tools work now with multiple maps
Markus Kottlaender <markus@intevation.de>
parents: 3054
diff changeset
106 });
1140
2e06bc53b002 separating line/polygon/cut tools in UI
Markus Kottlaender <markus@intevation.de>
parents: 1122
diff changeset
107 },
3062
87e0422cffa7 client: draw/cut tools work now with multiple maps
Markus Kottlaender <markus@intevation.de>
parents: 3054
diff changeset
108 polygonToolEnabled: (state, enabled) => {
87e0422cffa7 client: draw/cut tools work now with multiple maps
Markus Kottlaender <markus@intevation.de>
parents: 3054
diff changeset
109 state.polygonToolEnabled = enabled;
87e0422cffa7 client: draw/cut tools work now with multiple maps
Markus Kottlaender <markus@intevation.de>
parents: 3054
diff changeset
110 state.openLayersMaps.forEach(m => {
87e0422cffa7 client: draw/cut tools work now with multiple maps
Markus Kottlaender <markus@intevation.de>
parents: 3054
diff changeset
111 let tool = m
87e0422cffa7 client: draw/cut tools work now with multiple maps
Markus Kottlaender <markus@intevation.de>
parents: 3054
diff changeset
112 .getInteractions()
87e0422cffa7 client: draw/cut tools work now with multiple maps
Markus Kottlaender <markus@intevation.de>
parents: 3054
diff changeset
113 .getArray()
87e0422cffa7 client: draw/cut tools work now with multiple maps
Markus Kottlaender <markus@intevation.de>
parents: 3054
diff changeset
114 .find(i => i.get("id") === "polygontool");
87e0422cffa7 client: draw/cut tools work now with multiple maps
Markus Kottlaender <markus@intevation.de>
parents: 3054
diff changeset
115 if (tool) {
87e0422cffa7 client: draw/cut tools work now with multiple maps
Markus Kottlaender <markus@intevation.de>
parents: 3054
diff changeset
116 tool.setActive(enabled);
87e0422cffa7 client: draw/cut tools work now with multiple maps
Markus Kottlaender <markus@intevation.de>
parents: 3054
diff changeset
117 }
87e0422cffa7 client: draw/cut tools work now with multiple maps
Markus Kottlaender <markus@intevation.de>
parents: 3054
diff changeset
118 });
1140
2e06bc53b002 separating line/polygon/cut tools in UI
Markus Kottlaender <markus@intevation.de>
parents: 1122
diff changeset
119 },
3062
87e0422cffa7 client: draw/cut tools work now with multiple maps
Markus Kottlaender <markus@intevation.de>
parents: 3054
diff changeset
120 cutToolEnabled: (state, enabled) => {
87e0422cffa7 client: draw/cut tools work now with multiple maps
Markus Kottlaender <markus@intevation.de>
parents: 3054
diff changeset
121 state.cutToolEnabled = enabled;
87e0422cffa7 client: draw/cut tools work now with multiple maps
Markus Kottlaender <markus@intevation.de>
parents: 3054
diff changeset
122 state.openLayersMaps.forEach(m => {
87e0422cffa7 client: draw/cut tools work now with multiple maps
Markus Kottlaender <markus@intevation.de>
parents: 3054
diff changeset
123 let tool = m
87e0422cffa7 client: draw/cut tools work now with multiple maps
Markus Kottlaender <markus@intevation.de>
parents: 3054
diff changeset
124 .getInteractions()
87e0422cffa7 client: draw/cut tools work now with multiple maps
Markus Kottlaender <markus@intevation.de>
parents: 3054
diff changeset
125 .getArray()
87e0422cffa7 client: draw/cut tools work now with multiple maps
Markus Kottlaender <markus@intevation.de>
parents: 3054
diff changeset
126 .find(i => i.get("id") === "cuttool");
87e0422cffa7 client: draw/cut tools work now with multiple maps
Markus Kottlaender <markus@intevation.de>
parents: 3054
diff changeset
127 if (tool) {
87e0422cffa7 client: draw/cut tools work now with multiple maps
Markus Kottlaender <markus@intevation.de>
parents: 3054
diff changeset
128 tool.setActive(enabled);
87e0422cffa7 client: draw/cut tools work now with multiple maps
Markus Kottlaender <markus@intevation.de>
parents: 3054
diff changeset
129 }
87e0422cffa7 client: draw/cut tools work now with multiple maps
Markus Kottlaender <markus@intevation.de>
parents: 3054
diff changeset
130 });
1158
da75faa8043f added central moveMap method to pan and zoom the map on certain events
Markus Kottlaender <markus@intevation.de>
parents: 1144
diff changeset
131 },
1927
5a37ee321651 client: make isolines legend graphic internally availableo
Bernhard Reiter <bernhard@intevation.de>
parents: 1879
diff changeset
132 isolinesLegendImgDataURL: (state, isolinesLegendImgDataURL) => {
5a37ee321651 client: make isolines legend graphic internally availableo
Bernhard Reiter <bernhard@intevation.de>
parents: 1879
diff changeset
133 state.isolinesLegendImgDataURL = isolinesLegendImgDataURL;
2932
173ce013a021 layers: difference layer now contains legend
Thomas Junk <thomas.junk@intevation.de>
parents: 2910
diff changeset
134 },
173ce013a021 layers: difference layer now contains legend
Thomas Junk <thomas.junk@intevation.de>
parents: 2910
diff changeset
135 differencesLegendImgDataURL: (state, differencesLegendImgDataURL) => {
173ce013a021 layers: difference layer now contains legend
Thomas Junk <thomas.junk@intevation.de>
parents: 2910
diff changeset
136 state.differencesLegendImgDataURL = differencesLegendImgDataURL;
1144
5f98d0c9d738 linted code
Markus Kottlaender <markus@intevation.de>
parents: 1140
diff changeset
137 }
1296
99c039e86624 replaced manual store cleanup on logout with central store reset
Markus Kottlaender <markus@intevation.de>
parents: 1272
diff changeset
138 },
99c039e86624 replaced manual store cleanup on logout with central store reset
Markus Kottlaender <markus@intevation.de>
parents: 1272
diff changeset
139 actions: {
3062
87e0422cffa7 client: draw/cut tools work now with multiple maps
Markus Kottlaender <markus@intevation.de>
parents: 3054
diff changeset
140 openLayersMap({ state, commit, dispatch }, map) {
3006
44493664d40e client: refactored layers config
Markus Kottlaender <markus@intevation.de>
parents: 2997
diff changeset
141 const drawVectorSrc = map.getLayer("DRAWTOOL").getSource();
44493664d40e client: refactored layers config
Markus Kottlaender <markus@intevation.de>
parents: 2997
diff changeset
142 const cutVectorSrc = map.getLayer("CUTTOOL").getSource();
1296
99c039e86624 replaced manual store cleanup on logout with central store reset
Markus Kottlaender <markus@intevation.de>
parents: 1272
diff changeset
143
99c039e86624 replaced manual store cleanup on logout with central store reset
Markus Kottlaender <markus@intevation.de>
parents: 1272
diff changeset
144 // init line tool
99c039e86624 replaced manual store cleanup on logout with central store reset
Markus Kottlaender <markus@intevation.de>
parents: 1272
diff changeset
145 const lineTool = new Draw({
99c039e86624 replaced manual store cleanup on logout with central store reset
Markus Kottlaender <markus@intevation.de>
parents: 1272
diff changeset
146 source: drawVectorSrc,
99c039e86624 replaced manual store cleanup on logout with central store reset
Markus Kottlaender <markus@intevation.de>
parents: 1272
diff changeset
147 type: "LineString",
99c039e86624 replaced manual store cleanup on logout with central store reset
Markus Kottlaender <markus@intevation.de>
parents: 1272
diff changeset
148 maxPoints: 2
99c039e86624 replaced manual store cleanup on logout with central store reset
Markus Kottlaender <markus@intevation.de>
parents: 1272
diff changeset
149 });
3062
87e0422cffa7 client: draw/cut tools work now with multiple maps
Markus Kottlaender <markus@intevation.de>
parents: 3054
diff changeset
150 lineTool.set("id", "linetool");
1296
99c039e86624 replaced manual store cleanup on logout with central store reset
Markus Kottlaender <markus@intevation.de>
parents: 1272
diff changeset
151 lineTool.setActive(false);
99c039e86624 replaced manual store cleanup on logout with central store reset
Markus Kottlaender <markus@intevation.de>
parents: 1272
diff changeset
152 lineTool.on("drawstart", () => {
3062
87e0422cffa7 client: draw/cut tools work now with multiple maps
Markus Kottlaender <markus@intevation.de>
parents: 3054
diff changeset
153 state.openLayersMaps.forEach(m => {
87e0422cffa7 client: draw/cut tools work now with multiple maps
Markus Kottlaender <markus@intevation.de>
parents: 3054
diff changeset
154 m.getLayer("DRAWTOOL")
87e0422cffa7 client: draw/cut tools work now with multiple maps
Markus Kottlaender <markus@intevation.de>
parents: 3054
diff changeset
155 .getSource()
87e0422cffa7 client: draw/cut tools work now with multiple maps
Markus Kottlaender <markus@intevation.de>
parents: 3054
diff changeset
156 .clear();
87e0422cffa7 client: draw/cut tools work now with multiple maps
Markus Kottlaender <markus@intevation.de>
parents: 3054
diff changeset
157 });
1296
99c039e86624 replaced manual store cleanup on logout with central store reset
Markus Kottlaender <markus@intevation.de>
parents: 1272
diff changeset
158 commit("setCurrentMeasurement", null);
99c039e86624 replaced manual store cleanup on logout with central store reset
Markus Kottlaender <markus@intevation.de>
parents: 1272
diff changeset
159 });
99c039e86624 replaced manual store cleanup on logout with central store reset
Markus Kottlaender <markus@intevation.de>
parents: 1272
diff changeset
160 lineTool.on("drawend", event => {
99c039e86624 replaced manual store cleanup on logout with central store reset
Markus Kottlaender <markus@intevation.de>
parents: 1272
diff changeset
161 commit("setCurrentMeasurement", {
1524
a0a16577261a Translation: mark some strings for translation
Fadi Abbud <fadi.abbud@intevation.de>
parents: 1438
diff changeset
162 quantity: app.$gettext("Length"),
1296
99c039e86624 replaced manual store cleanup on logout with central store reset
Markus Kottlaender <markus@intevation.de>
parents: 1272
diff changeset
163 unitSymbol: "m",
99c039e86624 replaced manual store cleanup on logout with central store reset
Markus Kottlaender <markus@intevation.de>
parents: 1272
diff changeset
164 value: Math.round(getLength(event.feature.getGeometry()) * 10) / 10
99c039e86624 replaced manual store cleanup on logout with central store reset
Markus Kottlaender <markus@intevation.de>
parents: 1272
diff changeset
165 });
99c039e86624 replaced manual store cleanup on logout with central store reset
Markus Kottlaender <markus@intevation.de>
parents: 1272
diff changeset
166 commit("application/showIdentify", true, { root: true });
99c039e86624 replaced manual store cleanup on logout with central store reset
Markus Kottlaender <markus@intevation.de>
parents: 1272
diff changeset
167 });
99c039e86624 replaced manual store cleanup on logout with central store reset
Markus Kottlaender <markus@intevation.de>
parents: 1272
diff changeset
168
99c039e86624 replaced manual store cleanup on logout with central store reset
Markus Kottlaender <markus@intevation.de>
parents: 1272
diff changeset
169 // init polygon tool
99c039e86624 replaced manual store cleanup on logout with central store reset
Markus Kottlaender <markus@intevation.de>
parents: 1272
diff changeset
170 const polygonTool = new Draw({
99c039e86624 replaced manual store cleanup on logout with central store reset
Markus Kottlaender <markus@intevation.de>
parents: 1272
diff changeset
171 source: drawVectorSrc,
99c039e86624 replaced manual store cleanup on logout with central store reset
Markus Kottlaender <markus@intevation.de>
parents: 1272
diff changeset
172 type: "Polygon",
99c039e86624 replaced manual store cleanup on logout with central store reset
Markus Kottlaender <markus@intevation.de>
parents: 1272
diff changeset
173 maxPoints: 50
99c039e86624 replaced manual store cleanup on logout with central store reset
Markus Kottlaender <markus@intevation.de>
parents: 1272
diff changeset
174 });
3062
87e0422cffa7 client: draw/cut tools work now with multiple maps
Markus Kottlaender <markus@intevation.de>
parents: 3054
diff changeset
175 polygonTool.set("id", "polygontool");
1296
99c039e86624 replaced manual store cleanup on logout with central store reset
Markus Kottlaender <markus@intevation.de>
parents: 1272
diff changeset
176 polygonTool.setActive(false);
99c039e86624 replaced manual store cleanup on logout with central store reset
Markus Kottlaender <markus@intevation.de>
parents: 1272
diff changeset
177 polygonTool.on("drawstart", () => {
3062
87e0422cffa7 client: draw/cut tools work now with multiple maps
Markus Kottlaender <markus@intevation.de>
parents: 3054
diff changeset
178 state.openLayersMaps.forEach(m => {
87e0422cffa7 client: draw/cut tools work now with multiple maps
Markus Kottlaender <markus@intevation.de>
parents: 3054
diff changeset
179 m.getLayer("DRAWTOOL")
87e0422cffa7 client: draw/cut tools work now with multiple maps
Markus Kottlaender <markus@intevation.de>
parents: 3054
diff changeset
180 .getSource()
87e0422cffa7 client: draw/cut tools work now with multiple maps
Markus Kottlaender <markus@intevation.de>
parents: 3054
diff changeset
181 .clear();
87e0422cffa7 client: draw/cut tools work now with multiple maps
Markus Kottlaender <markus@intevation.de>
parents: 3054
diff changeset
182 });
1296
99c039e86624 replaced manual store cleanup on logout with central store reset
Markus Kottlaender <markus@intevation.de>
parents: 1272
diff changeset
183 commit("setCurrentMeasurement", null);
99c039e86624 replaced manual store cleanup on logout with central store reset
Markus Kottlaender <markus@intevation.de>
parents: 1272
diff changeset
184 });
99c039e86624 replaced manual store cleanup on logout with central store reset
Markus Kottlaender <markus@intevation.de>
parents: 1272
diff changeset
185 polygonTool.on("drawend", event => {
99c039e86624 replaced manual store cleanup on logout with central store reset
Markus Kottlaender <markus@intevation.de>
parents: 1272
diff changeset
186 const areaSize = getArea(event.feature.getGeometry());
99c039e86624 replaced manual store cleanup on logout with central store reset
Markus Kottlaender <markus@intevation.de>
parents: 1272
diff changeset
187 commit("setCurrentMeasurement", {
1524
a0a16577261a Translation: mark some strings for translation
Fadi Abbud <fadi.abbud@intevation.de>
parents: 1438
diff changeset
188 quantity: app.$gettext("Area"),
1296
99c039e86624 replaced manual store cleanup on logout with central store reset
Markus Kottlaender <markus@intevation.de>
parents: 1272
diff changeset
189 unitSymbol: areaSize > 100000 ? "km²" : "m²",
99c039e86624 replaced manual store cleanup on logout with central store reset
Markus Kottlaender <markus@intevation.de>
parents: 1272
diff changeset
190 value:
99c039e86624 replaced manual store cleanup on logout with central store reset
Markus Kottlaender <markus@intevation.de>
parents: 1272
diff changeset
191 areaSize > 100000
99c039e86624 replaced manual store cleanup on logout with central store reset
Markus Kottlaender <markus@intevation.de>
parents: 1272
diff changeset
192 ? Math.round(areaSize / 1000) / 1000 // convert into 1 km² == 1000*1000 m² and round to 1000 m²
99c039e86624 replaced manual store cleanup on logout with central store reset
Markus Kottlaender <markus@intevation.de>
parents: 1272
diff changeset
193 : Math.round(areaSize)
99c039e86624 replaced manual store cleanup on logout with central store reset
Markus Kottlaender <markus@intevation.de>
parents: 1272
diff changeset
194 });
99c039e86624 replaced manual store cleanup on logout with central store reset
Markus Kottlaender <markus@intevation.de>
parents: 1272
diff changeset
195 commit("application/showIdentify", true, { root: true });
99c039e86624 replaced manual store cleanup on logout with central store reset
Markus Kottlaender <markus@intevation.de>
parents: 1272
diff changeset
196 });
99c039e86624 replaced manual store cleanup on logout with central store reset
Markus Kottlaender <markus@intevation.de>
parents: 1272
diff changeset
197
99c039e86624 replaced manual store cleanup on logout with central store reset
Markus Kottlaender <markus@intevation.de>
parents: 1272
diff changeset
198 // init cut tool
99c039e86624 replaced manual store cleanup on logout with central store reset
Markus Kottlaender <markus@intevation.de>
parents: 1272
diff changeset
199 const cutTool = new Draw({
99c039e86624 replaced manual store cleanup on logout with central store reset
Markus Kottlaender <markus@intevation.de>
parents: 1272
diff changeset
200 source: cutVectorSrc,
99c039e86624 replaced manual store cleanup on logout with central store reset
Markus Kottlaender <markus@intevation.de>
parents: 1272
diff changeset
201 type: "LineString",
99c039e86624 replaced manual store cleanup on logout with central store reset
Markus Kottlaender <markus@intevation.de>
parents: 1272
diff changeset
202 maxPoints: 2,
99c039e86624 replaced manual store cleanup on logout with central store reset
Markus Kottlaender <markus@intevation.de>
parents: 1272
diff changeset
203 style: new Style({
99c039e86624 replaced manual store cleanup on logout with central store reset
Markus Kottlaender <markus@intevation.de>
parents: 1272
diff changeset
204 stroke: new Stroke({
99c039e86624 replaced manual store cleanup on logout with central store reset
Markus Kottlaender <markus@intevation.de>
parents: 1272
diff changeset
205 color: "#444",
99c039e86624 replaced manual store cleanup on logout with central store reset
Markus Kottlaender <markus@intevation.de>
parents: 1272
diff changeset
206 width: 2,
99c039e86624 replaced manual store cleanup on logout with central store reset
Markus Kottlaender <markus@intevation.de>
parents: 1272
diff changeset
207 lineDash: [7, 7]
99c039e86624 replaced manual store cleanup on logout with central store reset
Markus Kottlaender <markus@intevation.de>
parents: 1272
diff changeset
208 }),
99c039e86624 replaced manual store cleanup on logout with central store reset
Markus Kottlaender <markus@intevation.de>
parents: 1272
diff changeset
209 image: new Circle({
99c039e86624 replaced manual store cleanup on logout with central store reset
Markus Kottlaender <markus@intevation.de>
parents: 1272
diff changeset
210 fill: new Fill({ color: "#333" }),
99c039e86624 replaced manual store cleanup on logout with central store reset
Markus Kottlaender <markus@intevation.de>
parents: 1272
diff changeset
211 stroke: new Stroke({ color: "#fff", width: 1.5 }),
99c039e86624 replaced manual store cleanup on logout with central store reset
Markus Kottlaender <markus@intevation.de>
parents: 1272
diff changeset
212 radius: 6
99c039e86624 replaced manual store cleanup on logout with central store reset
Markus Kottlaender <markus@intevation.de>
parents: 1272
diff changeset
213 })
99c039e86624 replaced manual store cleanup on logout with central store reset
Markus Kottlaender <markus@intevation.de>
parents: 1272
diff changeset
214 })
99c039e86624 replaced manual store cleanup on logout with central store reset
Markus Kottlaender <markus@intevation.de>
parents: 1272
diff changeset
215 });
3062
87e0422cffa7 client: draw/cut tools work now with multiple maps
Markus Kottlaender <markus@intevation.de>
parents: 3054
diff changeset
216 cutTool.set("id", "cuttool");
1296
99c039e86624 replaced manual store cleanup on logout with central store reset
Markus Kottlaender <markus@intevation.de>
parents: 1272
diff changeset
217 cutTool.setActive(false);
99c039e86624 replaced manual store cleanup on logout with central store reset
Markus Kottlaender <markus@intevation.de>
parents: 1272
diff changeset
218 cutTool.on("drawstart", () => {
3062
87e0422cffa7 client: draw/cut tools work now with multiple maps
Markus Kottlaender <markus@intevation.de>
parents: 3054
diff changeset
219 state.openLayersMaps.forEach(m => {
87e0422cffa7 client: draw/cut tools work now with multiple maps
Markus Kottlaender <markus@intevation.de>
parents: 3054
diff changeset
220 m.getLayer("CUTTOOL")
87e0422cffa7 client: draw/cut tools work now with multiple maps
Markus Kottlaender <markus@intevation.de>
parents: 3054
diff changeset
221 .getSource()
87e0422cffa7 client: draw/cut tools work now with multiple maps
Markus Kottlaender <markus@intevation.de>
parents: 3054
diff changeset
222 .clear();
87e0422cffa7 client: draw/cut tools work now with multiple maps
Markus Kottlaender <markus@intevation.de>
parents: 3054
diff changeset
223 });
1296
99c039e86624 replaced manual store cleanup on logout with central store reset
Markus Kottlaender <markus@intevation.de>
parents: 1272
diff changeset
224 });
99c039e86624 replaced manual store cleanup on logout with central store reset
Markus Kottlaender <markus@intevation.de>
parents: 1272
diff changeset
225 cutTool.on("drawend", event => {
1395
210e9f16f8a0 delete cross profiles from localstorage
Markus Kottlaender <markus@intevation.de>
parents: 1363
diff changeset
226 commit("fairwayprofile/selectedCut", null, { root: true });
3069
766384d0ed7a client: identify tool: removed distinct enable flag, identify is enabled as long as no other tools are active
Markus Kottlaender <markus@intevation.de>
parents: 3063
diff changeset
227 dispatch("fairwayprofile/cut", event.feature, { root: true });
1296
99c039e86624 replaced manual store cleanup on logout with central store reset
Markus Kottlaender <markus@intevation.de>
parents: 1272
diff changeset
228 });
99c039e86624 replaced manual store cleanup on logout with central store reset
Markus Kottlaender <markus@intevation.de>
parents: 1272
diff changeset
229
99c039e86624 replaced manual store cleanup on logout with central store reset
Markus Kottlaender <markus@intevation.de>
parents: 1272
diff changeset
230 map.addInteraction(lineTool);
99c039e86624 replaced manual store cleanup on logout with central store reset
Markus Kottlaender <markus@intevation.de>
parents: 1272
diff changeset
231 map.addInteraction(cutTool);
99c039e86624 replaced manual store cleanup on logout with central store reset
Markus Kottlaender <markus@intevation.de>
parents: 1272
diff changeset
232 map.addInteraction(polygonTool);
99c039e86624 replaced manual store cleanup on logout with central store reset
Markus Kottlaender <markus@intevation.de>
parents: 1272
diff changeset
233
3062
87e0422cffa7 client: draw/cut tools work now with multiple maps
Markus Kottlaender <markus@intevation.de>
parents: 3054
diff changeset
234 // If there are multiple maps and you enable one of the draw tools, when
87e0422cffa7 client: draw/cut tools work now with multiple maps
Markus Kottlaender <markus@intevation.de>
parents: 3054
diff changeset
235 // moving the mouse to another map, the cursor for the draw tool stays
87e0422cffa7 client: draw/cut tools work now with multiple maps
Markus Kottlaender <markus@intevation.de>
parents: 3054
diff changeset
236 // visible in the first map, right next to the edge where the cursor left
87e0422cffa7 client: draw/cut tools work now with multiple maps
Markus Kottlaender <markus@intevation.de>
parents: 3054
diff changeset
237 // the map. So here we disable all draw layers except the ones in the map
87e0422cffa7 client: draw/cut tools work now with multiple maps
Markus Kottlaender <markus@intevation.de>
parents: 3054
diff changeset
238 // that the user currently hovering with the mouse.
87e0422cffa7 client: draw/cut tools work now with multiple maps
Markus Kottlaender <markus@intevation.de>
parents: 3054
diff changeset
239 map.getTargetElement().addEventListener("mouseenter", () => {
87e0422cffa7 client: draw/cut tools work now with multiple maps
Markus Kottlaender <markus@intevation.de>
parents: 3054
diff changeset
240 if (
87e0422cffa7 client: draw/cut tools work now with multiple maps
Markus Kottlaender <markus@intevation.de>
parents: 3054
diff changeset
241 state.lineToolEnabled ||
87e0422cffa7 client: draw/cut tools work now with multiple maps
Markus Kottlaender <markus@intevation.de>
parents: 3054
diff changeset
242 state.polygonToolEnabled ||
87e0422cffa7 client: draw/cut tools work now with multiple maps
Markus Kottlaender <markus@intevation.de>
parents: 3054
diff changeset
243 state.cutToolEnabled
87e0422cffa7 client: draw/cut tools work now with multiple maps
Markus Kottlaender <markus@intevation.de>
parents: 3054
diff changeset
244 ) {
87e0422cffa7 client: draw/cut tools work now with multiple maps
Markus Kottlaender <markus@intevation.de>
parents: 3054
diff changeset
245 state.openLayersMaps.forEach(m => {
87e0422cffa7 client: draw/cut tools work now with multiple maps
Markus Kottlaender <markus@intevation.de>
parents: 3054
diff changeset
246 let lineTool = m
87e0422cffa7 client: draw/cut tools work now with multiple maps
Markus Kottlaender <markus@intevation.de>
parents: 3054
diff changeset
247 .getInteractions()
87e0422cffa7 client: draw/cut tools work now with multiple maps
Markus Kottlaender <markus@intevation.de>
parents: 3054
diff changeset
248 .getArray()
87e0422cffa7 client: draw/cut tools work now with multiple maps
Markus Kottlaender <markus@intevation.de>
parents: 3054
diff changeset
249 .find(i => i.get("id") === "linetool");
87e0422cffa7 client: draw/cut tools work now with multiple maps
Markus Kottlaender <markus@intevation.de>
parents: 3054
diff changeset
250 let polygonTool = m
87e0422cffa7 client: draw/cut tools work now with multiple maps
Markus Kottlaender <markus@intevation.de>
parents: 3054
diff changeset
251 .getInteractions()
87e0422cffa7 client: draw/cut tools work now with multiple maps
Markus Kottlaender <markus@intevation.de>
parents: 3054
diff changeset
252 .getArray()
87e0422cffa7 client: draw/cut tools work now with multiple maps
Markus Kottlaender <markus@intevation.de>
parents: 3054
diff changeset
253 .find(i => i.get("id") === "polygontool");
87e0422cffa7 client: draw/cut tools work now with multiple maps
Markus Kottlaender <markus@intevation.de>
parents: 3054
diff changeset
254 let cutTool = m
87e0422cffa7 client: draw/cut tools work now with multiple maps
Markus Kottlaender <markus@intevation.de>
parents: 3054
diff changeset
255 .getInteractions()
87e0422cffa7 client: draw/cut tools work now with multiple maps
Markus Kottlaender <markus@intevation.de>
parents: 3054
diff changeset
256 .getArray()
87e0422cffa7 client: draw/cut tools work now with multiple maps
Markus Kottlaender <markus@intevation.de>
parents: 3054
diff changeset
257 .find(i => i.get("id") === "cuttool");
87e0422cffa7 client: draw/cut tools work now with multiple maps
Markus Kottlaender <markus@intevation.de>
parents: 3054
diff changeset
258 if (lineTool) lineTool.setActive(false);
87e0422cffa7 client: draw/cut tools work now with multiple maps
Markus Kottlaender <markus@intevation.de>
parents: 3054
diff changeset
259 if (polygonTool) polygonTool.setActive(false);
87e0422cffa7 client: draw/cut tools work now with multiple maps
Markus Kottlaender <markus@intevation.de>
parents: 3054
diff changeset
260 if (cutTool) cutTool.setActive(false);
87e0422cffa7 client: draw/cut tools work now with multiple maps
Markus Kottlaender <markus@intevation.de>
parents: 3054
diff changeset
261 });
87e0422cffa7 client: draw/cut tools work now with multiple maps
Markus Kottlaender <markus@intevation.de>
parents: 3054
diff changeset
262 let lineTool = map
87e0422cffa7 client: draw/cut tools work now with multiple maps
Markus Kottlaender <markus@intevation.de>
parents: 3054
diff changeset
263 .getInteractions()
87e0422cffa7 client: draw/cut tools work now with multiple maps
Markus Kottlaender <markus@intevation.de>
parents: 3054
diff changeset
264 .getArray()
87e0422cffa7 client: draw/cut tools work now with multiple maps
Markus Kottlaender <markus@intevation.de>
parents: 3054
diff changeset
265 .find(i => i.get("id") === "linetool");
87e0422cffa7 client: draw/cut tools work now with multiple maps
Markus Kottlaender <markus@intevation.de>
parents: 3054
diff changeset
266 let polygonTool = map
87e0422cffa7 client: draw/cut tools work now with multiple maps
Markus Kottlaender <markus@intevation.de>
parents: 3054
diff changeset
267 .getInteractions()
87e0422cffa7 client: draw/cut tools work now with multiple maps
Markus Kottlaender <markus@intevation.de>
parents: 3054
diff changeset
268 .getArray()
87e0422cffa7 client: draw/cut tools work now with multiple maps
Markus Kottlaender <markus@intevation.de>
parents: 3054
diff changeset
269 .find(i => i.get("id") === "polygontool");
87e0422cffa7 client: draw/cut tools work now with multiple maps
Markus Kottlaender <markus@intevation.de>
parents: 3054
diff changeset
270 let cutTool = map
87e0422cffa7 client: draw/cut tools work now with multiple maps
Markus Kottlaender <markus@intevation.de>
parents: 3054
diff changeset
271 .getInteractions()
87e0422cffa7 client: draw/cut tools work now with multiple maps
Markus Kottlaender <markus@intevation.de>
parents: 3054
diff changeset
272 .getArray()
87e0422cffa7 client: draw/cut tools work now with multiple maps
Markus Kottlaender <markus@intevation.de>
parents: 3054
diff changeset
273 .find(i => i.get("id") === "cuttool");
87e0422cffa7 client: draw/cut tools work now with multiple maps
Markus Kottlaender <markus@intevation.de>
parents: 3054
diff changeset
274 if (lineTool && state.lineToolEnabled) lineTool.setActive(true);
87e0422cffa7 client: draw/cut tools work now with multiple maps
Markus Kottlaender <markus@intevation.de>
parents: 3054
diff changeset
275 if (polygonTool && state.polygonToolEnabled)
87e0422cffa7 client: draw/cut tools work now with multiple maps
Markus Kottlaender <markus@intevation.de>
parents: 3054
diff changeset
276 polygonTool.setActive(true);
87e0422cffa7 client: draw/cut tools work now with multiple maps
Markus Kottlaender <markus@intevation.de>
parents: 3054
diff changeset
277 if (cutTool && state.cutToolEnabled) cutTool.setActive(true);
87e0422cffa7 client: draw/cut tools work now with multiple maps
Markus Kottlaender <markus@intevation.de>
parents: 3054
diff changeset
278 }
87e0422cffa7 client: draw/cut tools work now with multiple maps
Markus Kottlaender <markus@intevation.de>
parents: 3054
diff changeset
279 });
87e0422cffa7 client: draw/cut tools work now with multiple maps
Markus Kottlaender <markus@intevation.de>
parents: 3054
diff changeset
280
3044
c71373594719 client: map: prepared store to hold multiple map objects
Markus Kottlaender <markus@intevation.de>
parents: 3043
diff changeset
281 commit("addOpenLayersMap", map);
1435
7fa030127b05 fixed panning problem
Markus Kottlaender <markus@intevation.de>
parents: 1395
diff changeset
282 },
3051
051a3f446ac2 client: made identify tool work with multiple maps
Markus Kottlaender <markus@intevation.de>
parents: 3047
diff changeset
283 initIdentifyTool({ state, rootState, commit, dispatch }, map) {
051a3f446ac2 client: made identify tool work with multiple maps
Markus Kottlaender <markus@intevation.de>
parents: 3047
diff changeset
284 map.on(["singleclick", "dblclick"], event => {
3069
766384d0ed7a client: identify tool: removed distinct enable flag, identify is enabled as long as no other tools are active
Markus Kottlaender <markus@intevation.de>
parents: 3063
diff changeset
285 if (
766384d0ed7a client: identify tool: removed distinct enable flag, identify is enabled as long as no other tools are active
Markus Kottlaender <markus@intevation.de>
parents: 3063
diff changeset
286 state.lineToolEnabled ||
766384d0ed7a client: identify tool: removed distinct enable flag, identify is enabled as long as no other tools are active
Markus Kottlaender <markus@intevation.de>
parents: 3063
diff changeset
287 state.polygonToolEnabled ||
766384d0ed7a client: identify tool: removed distinct enable flag, identify is enabled as long as no other tools are active
Markus Kottlaender <markus@intevation.de>
parents: 3063
diff changeset
288 state.cutToolEnabled
766384d0ed7a client: identify tool: removed distinct enable flag, identify is enabled as long as no other tools are active
Markus Kottlaender <markus@intevation.de>
parents: 3063
diff changeset
289 )
766384d0ed7a client: identify tool: removed distinct enable flag, identify is enabled as long as no other tools are active
Markus Kottlaender <markus@intevation.de>
parents: 3063
diff changeset
290 return;
3051
051a3f446ac2 client: made identify tool work with multiple maps
Markus Kottlaender <markus@intevation.de>
parents: 3047
diff changeset
291 commit("setIdentifiedFeatures", []);
051a3f446ac2 client: made identify tool work with multiple maps
Markus Kottlaender <markus@intevation.de>
parents: 3047
diff changeset
292 // checking our WFS layers
051a3f446ac2 client: made identify tool work with multiple maps
Markus Kottlaender <markus@intevation.de>
parents: 3047
diff changeset
293 var features = map.getFeaturesAtPixel(event.pixel, { hitTolerance: 7 });
051a3f446ac2 client: made identify tool work with multiple maps
Markus Kottlaender <markus@intevation.de>
parents: 3047
diff changeset
294 if (features) {
051a3f446ac2 client: made identify tool work with multiple maps
Markus Kottlaender <markus@intevation.de>
parents: 3047
diff changeset
295 let identifiedFeatures = [];
1435
7fa030127b05 fixed panning problem
Markus Kottlaender <markus@intevation.de>
parents: 1395
diff changeset
296
3051
051a3f446ac2 client: made identify tool work with multiple maps
Markus Kottlaender <markus@intevation.de>
parents: 3047
diff changeset
297 for (let feature of features) {
051a3f446ac2 client: made identify tool work with multiple maps
Markus Kottlaender <markus@intevation.de>
parents: 3047
diff changeset
298 let id = feature.getId();
051a3f446ac2 client: made identify tool work with multiple maps
Markus Kottlaender <markus@intevation.de>
parents: 3047
diff changeset
299 // avoid identifying the same feature twice
051a3f446ac2 client: made identify tool work with multiple maps
Markus Kottlaender <markus@intevation.de>
parents: 3047
diff changeset
300 if (
051a3f446ac2 client: made identify tool work with multiple maps
Markus Kottlaender <markus@intevation.de>
parents: 3047
diff changeset
301 identifiedFeatures.findIndex(
051a3f446ac2 client: made identify tool work with multiple maps
Markus Kottlaender <markus@intevation.de>
parents: 3047
diff changeset
302 f => f.getId() === feature.getId()
051a3f446ac2 client: made identify tool work with multiple maps
Markus Kottlaender <markus@intevation.de>
parents: 3047
diff changeset
303 ) === -1
051a3f446ac2 client: made identify tool work with multiple maps
Markus Kottlaender <markus@intevation.de>
parents: 3047
diff changeset
304 ) {
051a3f446ac2 client: made identify tool work with multiple maps
Markus Kottlaender <markus@intevation.de>
parents: 3047
diff changeset
305 identifiedFeatures.push(feature);
051a3f446ac2 client: made identify tool work with multiple maps
Markus Kottlaender <markus@intevation.de>
parents: 3047
diff changeset
306 }
2510
f2758dafe390 client: identify tool: avoid identifying the same feature twice
Markus Kottlaender <markus@intevation.de>
parents: 2506
diff changeset
307
3051
051a3f446ac2 client: made identify tool work with multiple maps
Markus Kottlaender <markus@intevation.de>
parents: 3047
diff changeset
308 // get selected bottleneck
051a3f446ac2 client: made identify tool work with multiple maps
Markus Kottlaender <markus@intevation.de>
parents: 3047
diff changeset
309 // RegExp.prototype.test() works with number, str and undefined
051a3f446ac2 client: made identify tool work with multiple maps
Markus Kottlaender <markus@intevation.de>
parents: 3047
diff changeset
310 if (/^bottlenecks/.test(id)) {
051a3f446ac2 client: made identify tool work with multiple maps
Markus Kottlaender <markus@intevation.de>
parents: 3047
diff changeset
311 if (
051a3f446ac2 client: made identify tool work with multiple maps
Markus Kottlaender <markus@intevation.de>
parents: 3047
diff changeset
312 rootState.bottlenecks.selectedBottleneck !=
051a3f446ac2 client: made identify tool work with multiple maps
Markus Kottlaender <markus@intevation.de>
parents: 3047
diff changeset
313 feature.get("objnam")
051a3f446ac2 client: made identify tool work with multiple maps
Markus Kottlaender <markus@intevation.de>
parents: 3047
diff changeset
314 ) {
051a3f446ac2 client: made identify tool work with multiple maps
Markus Kottlaender <markus@intevation.de>
parents: 3047
diff changeset
315 dispatch(
051a3f446ac2 client: made identify tool work with multiple maps
Markus Kottlaender <markus@intevation.de>
parents: 3047
diff changeset
316 "bottlenecks/setSelectedBottleneck",
051a3f446ac2 client: made identify tool work with multiple maps
Markus Kottlaender <markus@intevation.de>
parents: 3047
diff changeset
317 feature.get("objnam"),
051a3f446ac2 client: made identify tool work with multiple maps
Markus Kottlaender <markus@intevation.de>
parents: 3047
diff changeset
318 { root: true }
051a3f446ac2 client: made identify tool work with multiple maps
Markus Kottlaender <markus@intevation.de>
parents: 3047
diff changeset
319 ).then(() => {
051a3f446ac2 client: made identify tool work with multiple maps
Markus Kottlaender <markus@intevation.de>
parents: 3047
diff changeset
320 this.commit("bottlenecks/setFirstSurveySelected");
051a3f446ac2 client: made identify tool work with multiple maps
Markus Kottlaender <markus@intevation.de>
parents: 3047
diff changeset
321 });
051a3f446ac2 client: made identify tool work with multiple maps
Markus Kottlaender <markus@intevation.de>
parents: 3047
diff changeset
322 dispatch("moveMap", {
051a3f446ac2 client: made identify tool work with multiple maps
Markus Kottlaender <markus@intevation.de>
parents: 3047
diff changeset
323 coordinates: getCenter(
051a3f446ac2 client: made identify tool work with multiple maps
Markus Kottlaender <markus@intevation.de>
parents: 3047
diff changeset
324 feature
051a3f446ac2 client: made identify tool work with multiple maps
Markus Kottlaender <markus@intevation.de>
parents: 3047
diff changeset
325 .getGeometry()
051a3f446ac2 client: made identify tool work with multiple maps
Markus Kottlaender <markus@intevation.de>
parents: 3047
diff changeset
326 .clone()
051a3f446ac2 client: made identify tool work with multiple maps
Markus Kottlaender <markus@intevation.de>
parents: 3047
diff changeset
327 .transform("EPSG:3857", "EPSG:4326")
051a3f446ac2 client: made identify tool work with multiple maps
Markus Kottlaender <markus@intevation.de>
parents: 3047
diff changeset
328 .getExtent()
051a3f446ac2 client: made identify tool work with multiple maps
Markus Kottlaender <markus@intevation.de>
parents: 3047
diff changeset
329 ),
051a3f446ac2 client: made identify tool work with multiple maps
Markus Kottlaender <markus@intevation.de>
parents: 3047
diff changeset
330 zoom: 17,
051a3f446ac2 client: made identify tool work with multiple maps
Markus Kottlaender <markus@intevation.de>
parents: 3047
diff changeset
331 preventZoomOut: true
051a3f446ac2 client: made identify tool work with multiple maps
Markus Kottlaender <markus@intevation.de>
parents: 3047
diff changeset
332 });
051a3f446ac2 client: made identify tool work with multiple maps
Markus Kottlaender <markus@intevation.de>
parents: 3047
diff changeset
333 }
051a3f446ac2 client: made identify tool work with multiple maps
Markus Kottlaender <markus@intevation.de>
parents: 3047
diff changeset
334 }
2590
1686ec185155 client: added gauge waterlevel example diagram
Markus Kottlaender <markus@intevation.de>
parents: 2568
diff changeset
335
3051
051a3f446ac2 client: made identify tool work with multiple maps
Markus Kottlaender <markus@intevation.de>
parents: 3047
diff changeset
336 // get selected gauge
051a3f446ac2 client: made identify tool work with multiple maps
Markus Kottlaender <markus@intevation.de>
parents: 3047
diff changeset
337 if (/^gauges/.test(id)) {
051a3f446ac2 client: made identify tool work with multiple maps
Markus Kottlaender <markus@intevation.de>
parents: 3047
diff changeset
338 if (
051a3f446ac2 client: made identify tool work with multiple maps
Markus Kottlaender <markus@intevation.de>
parents: 3047
diff changeset
339 rootState.gauges.selectedGaugeISRS !== feature.get("isrs_code")
051a3f446ac2 client: made identify tool work with multiple maps
Markus Kottlaender <markus@intevation.de>
parents: 3047
diff changeset
340 ) {
051a3f446ac2 client: made identify tool work with multiple maps
Markus Kottlaender <markus@intevation.de>
parents: 3047
diff changeset
341 dispatch("gauges/selectedGaugeISRS", feature.get("isrs_code"), {
051a3f446ac2 client: made identify tool work with multiple maps
Markus Kottlaender <markus@intevation.de>
parents: 3047
diff changeset
342 root: true
051a3f446ac2 client: made identify tool work with multiple maps
Markus Kottlaender <markus@intevation.de>
parents: 3047
diff changeset
343 });
051a3f446ac2 client: made identify tool work with multiple maps
Markus Kottlaender <markus@intevation.de>
parents: 3047
diff changeset
344 dispatch("moveMap", {
051a3f446ac2 client: made identify tool work with multiple maps
Markus Kottlaender <markus@intevation.de>
parents: 3047
diff changeset
345 coordinates: getCenter(
051a3f446ac2 client: made identify tool work with multiple maps
Markus Kottlaender <markus@intevation.de>
parents: 3047
diff changeset
346 feature
051a3f446ac2 client: made identify tool work with multiple maps
Markus Kottlaender <markus@intevation.de>
parents: 3047
diff changeset
347 .getGeometry()
051a3f446ac2 client: made identify tool work with multiple maps
Markus Kottlaender <markus@intevation.de>
parents: 3047
diff changeset
348 .clone()
051a3f446ac2 client: made identify tool work with multiple maps
Markus Kottlaender <markus@intevation.de>
parents: 3047
diff changeset
349 .transform("EPSG:3857", "EPSG:4326")
051a3f446ac2 client: made identify tool work with multiple maps
Markus Kottlaender <markus@intevation.de>
parents: 3047
diff changeset
350 .getExtent()
051a3f446ac2 client: made identify tool work with multiple maps
Markus Kottlaender <markus@intevation.de>
parents: 3047
diff changeset
351 ),
051a3f446ac2 client: made identify tool work with multiple maps
Markus Kottlaender <markus@intevation.de>
parents: 3047
diff changeset
352 zoom: null,
051a3f446ac2 client: made identify tool work with multiple maps
Markus Kottlaender <markus@intevation.de>
parents: 3047
diff changeset
353 preventZoomOut: true
051a3f446ac2 client: made identify tool work with multiple maps
Markus Kottlaender <markus@intevation.de>
parents: 3047
diff changeset
354 });
1435
7fa030127b05 fixed panning problem
Markus Kottlaender <markus@intevation.de>
parents: 1395
diff changeset
355 }
7fa030127b05 fixed panning problem
Markus Kottlaender <markus@intevation.de>
parents: 1395
diff changeset
356 }
1437
1cd1549aab47 fixed panning problem when drawing cross cuts
Markus Kottlaender <markus@intevation.de>
parents: 1435
diff changeset
357
3051
051a3f446ac2 client: made identify tool work with multiple maps
Markus Kottlaender <markus@intevation.de>
parents: 3047
diff changeset
358 // get selected stretch
051a3f446ac2 client: made identify tool work with multiple maps
Markus Kottlaender <markus@intevation.de>
parents: 3047
diff changeset
359 if (/^stretches/.test(id)) {
051a3f446ac2 client: made identify tool work with multiple maps
Markus Kottlaender <markus@intevation.de>
parents: 3047
diff changeset
360 if (rootState.imports.selectedStretchId === feature.getId()) {
051a3f446ac2 client: made identify tool work with multiple maps
Markus Kottlaender <markus@intevation.de>
parents: 3047
diff changeset
361 commit("imports/selectedStretchId", null, { root: true });
051a3f446ac2 client: made identify tool work with multiple maps
Markus Kottlaender <markus@intevation.de>
parents: 3047
diff changeset
362 } else {
051a3f446ac2 client: made identify tool work with multiple maps
Markus Kottlaender <markus@intevation.de>
parents: 3047
diff changeset
363 commit("imports/selectedStretchId", feature.getId(), {
051a3f446ac2 client: made identify tool work with multiple maps
Markus Kottlaender <markus@intevation.de>
parents: 3047
diff changeset
364 root: true
051a3f446ac2 client: made identify tool work with multiple maps
Markus Kottlaender <markus@intevation.de>
parents: 3047
diff changeset
365 });
051a3f446ac2 client: made identify tool work with multiple maps
Markus Kottlaender <markus@intevation.de>
parents: 3047
diff changeset
366 dispatch("moveMap", {
051a3f446ac2 client: made identify tool work with multiple maps
Markus Kottlaender <markus@intevation.de>
parents: 3047
diff changeset
367 coordinates: getCenter(
051a3f446ac2 client: made identify tool work with multiple maps
Markus Kottlaender <markus@intevation.de>
parents: 3047
diff changeset
368 feature
051a3f446ac2 client: made identify tool work with multiple maps
Markus Kottlaender <markus@intevation.de>
parents: 3047
diff changeset
369 .getGeometry()
051a3f446ac2 client: made identify tool work with multiple maps
Markus Kottlaender <markus@intevation.de>
parents: 3047
diff changeset
370 .clone()
051a3f446ac2 client: made identify tool work with multiple maps
Markus Kottlaender <markus@intevation.de>
parents: 3047
diff changeset
371 .transform("EPSG:3857", "EPSG:4326")
051a3f446ac2 client: made identify tool work with multiple maps
Markus Kottlaender <markus@intevation.de>
parents: 3047
diff changeset
372 .getExtent()
051a3f446ac2 client: made identify tool work with multiple maps
Markus Kottlaender <markus@intevation.de>
parents: 3047
diff changeset
373 ),
051a3f446ac2 client: made identify tool work with multiple maps
Markus Kottlaender <markus@intevation.de>
parents: 3047
diff changeset
374 zoom: null,
051a3f446ac2 client: made identify tool work with multiple maps
Markus Kottlaender <markus@intevation.de>
parents: 3047
diff changeset
375 preventZoomOut: true
051a3f446ac2 client: made identify tool work with multiple maps
Markus Kottlaender <markus@intevation.de>
parents: 3047
diff changeset
376 });
051a3f446ac2 client: made identify tool work with multiple maps
Markus Kottlaender <markus@intevation.de>
parents: 3047
diff changeset
377 }
051a3f446ac2 client: made identify tool work with multiple maps
Markus Kottlaender <markus@intevation.de>
parents: 3047
diff changeset
378 }
051a3f446ac2 client: made identify tool work with multiple maps
Markus Kottlaender <markus@intevation.de>
parents: 3047
diff changeset
379 }
051a3f446ac2 client: made identify tool work with multiple maps
Markus Kottlaender <markus@intevation.de>
parents: 3047
diff changeset
380
051a3f446ac2 client: made identify tool work with multiple maps
Markus Kottlaender <markus@intevation.de>
parents: 3047
diff changeset
381 commit("setIdentifiedFeatures", identifiedFeatures);
051a3f446ac2 client: made identify tool work with multiple maps
Markus Kottlaender <markus@intevation.de>
parents: 3047
diff changeset
382 }
051a3f446ac2 client: made identify tool work with multiple maps
Markus Kottlaender <markus@intevation.de>
parents: 3047
diff changeset
383
051a3f446ac2 client: made identify tool work with multiple maps
Markus Kottlaender <markus@intevation.de>
parents: 3047
diff changeset
384 // DEBUG output and example how to remove the GeometryName
051a3f446ac2 client: made identify tool work with multiple maps
Markus Kottlaender <markus@intevation.de>
parents: 3047
diff changeset
385 /*
051a3f446ac2 client: made identify tool work with multiple maps
Markus Kottlaender <markus@intevation.de>
parents: 3047
diff changeset
386 for (let feature of features) {
051a3f446ac2 client: made identify tool work with multiple maps
Markus Kottlaender <markus@intevation.de>
parents: 3047
diff changeset
387 console.log("Identified:", feature.getId());
051a3f446ac2 client: made identify tool work with multiple maps
Markus Kottlaender <markus@intevation.de>
parents: 3047
diff changeset
388 for (let key of feature.getKeys()) {
051a3f446ac2 client: made identify tool work with multiple maps
Markus Kottlaender <markus@intevation.de>
parents: 3047
diff changeset
389 if (key != feature.getGeometryName()) {
051a3f446ac2 client: made identify tool work with multiple maps
Markus Kottlaender <markus@intevation.de>
parents: 3047
diff changeset
390 console.log(key, feature.get(key));
1437
1cd1549aab47 fixed panning problem when drawing cross cuts
Markus Kottlaender <markus@intevation.de>
parents: 1435
diff changeset
391 }
1cd1549aab47 fixed panning problem when drawing cross cuts
Markus Kottlaender <markus@intevation.de>
parents: 1435
diff changeset
392 }
3051
051a3f446ac2 client: made identify tool work with multiple maps
Markus Kottlaender <markus@intevation.de>
parents: 3047
diff changeset
393 }
051a3f446ac2 client: made identify tool work with multiple maps
Markus Kottlaender <markus@intevation.de>
parents: 3047
diff changeset
394 */
1435
7fa030127b05 fixed panning problem
Markus Kottlaender <markus@intevation.de>
parents: 1395
diff changeset
395
3051
051a3f446ac2 client: made identify tool work with multiple maps
Markus Kottlaender <markus@intevation.de>
parents: 3047
diff changeset
396 var waterwayAxisSource = map.getLayer("WATERWAYAXIS").getSource();
051a3f446ac2 client: made identify tool work with multiple maps
Markus Kottlaender <markus@intevation.de>
parents: 3047
diff changeset
397 var waxisUrl = waterwayAxisSource.getGetFeatureInfoUrl(
051a3f446ac2 client: made identify tool work with multiple maps
Markus Kottlaender <markus@intevation.de>
parents: 3047
diff changeset
398 event.coordinate,
051a3f446ac2 client: made identify tool work with multiple maps
Markus Kottlaender <markus@intevation.de>
parents: 3047
diff changeset
399 100 /* resolution */,
051a3f446ac2 client: made identify tool work with multiple maps
Markus Kottlaender <markus@intevation.de>
parents: 3047
diff changeset
400 "EPSG:3857",
051a3f446ac2 client: made identify tool work with multiple maps
Markus Kottlaender <markus@intevation.de>
parents: 3047
diff changeset
401 // { INFO_FORMAT: "application/vnd.ogc.gml" } // not allowed by d4d
051a3f446ac2 client: made identify tool work with multiple maps
Markus Kottlaender <markus@intevation.de>
parents: 3047
diff changeset
402 { INFO_FORMAT: "application/json" }
051a3f446ac2 client: made identify tool work with multiple maps
Markus Kottlaender <markus@intevation.de>
parents: 3047
diff changeset
403 );
3047
e0b77d7463e7 Changed Waterway axis and area layer to WMS.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 3044
diff changeset
404
3051
051a3f446ac2 client: made identify tool work with multiple maps
Markus Kottlaender <markus@intevation.de>
parents: 3047
diff changeset
405 if (waxisUrl) {
051a3f446ac2 client: made identify tool work with multiple maps
Markus Kottlaender <markus@intevation.de>
parents: 3047
diff changeset
406 // cannot directly query here because of SOP
051a3f446ac2 client: made identify tool work with multiple maps
Markus Kottlaender <markus@intevation.de>
parents: 3047
diff changeset
407 HTTP.get(waxisUrl, {
051a3f446ac2 client: made identify tool work with multiple maps
Markus Kottlaender <markus@intevation.de>
parents: 3047
diff changeset
408 headers: {
051a3f446ac2 client: made identify tool work with multiple maps
Markus Kottlaender <markus@intevation.de>
parents: 3047
diff changeset
409 "X-Gemma-Auth": localStorage.getItem("token")
051a3f446ac2 client: made identify tool work with multiple maps
Markus Kottlaender <markus@intevation.de>
parents: 3047
diff changeset
410 }
051a3f446ac2 client: made identify tool work with multiple maps
Markus Kottlaender <markus@intevation.de>
parents: 3047
diff changeset
411 }).then(response => {
051a3f446ac2 client: made identify tool work with multiple maps
Markus Kottlaender <markus@intevation.de>
parents: 3047
diff changeset
412 let features = response.data.features.map(f => {
051a3f446ac2 client: made identify tool work with multiple maps
Markus Kottlaender <markus@intevation.de>
parents: 3047
diff changeset
413 let feat = new Feature({
051a3f446ac2 client: made identify tool work with multiple maps
Markus Kottlaender <markus@intevation.de>
parents: 3047
diff changeset
414 geometry: new Point(f.geometry.coordinates)
3047
e0b77d7463e7 Changed Waterway axis and area layer to WMS.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 3044
diff changeset
415 });
3051
051a3f446ac2 client: made identify tool work with multiple maps
Markus Kottlaender <markus@intevation.de>
parents: 3047
diff changeset
416 feat.setId(f.id);
051a3f446ac2 client: made identify tool work with multiple maps
Markus Kottlaender <markus@intevation.de>
parents: 3047
diff changeset
417 feat.setProperties(f.properties);
051a3f446ac2 client: made identify tool work with multiple maps
Markus Kottlaender <markus@intevation.de>
parents: 3047
diff changeset
418 return feat;
051a3f446ac2 client: made identify tool work with multiple maps
Markus Kottlaender <markus@intevation.de>
parents: 3047
diff changeset
419 });
051a3f446ac2 client: made identify tool work with multiple maps
Markus Kottlaender <markus@intevation.de>
parents: 3047
diff changeset
420 commit("addIdentifiedFeatures", features);
051a3f446ac2 client: made identify tool work with multiple maps
Markus Kottlaender <markus@intevation.de>
parents: 3047
diff changeset
421 });
051a3f446ac2 client: made identify tool work with multiple maps
Markus Kottlaender <markus@intevation.de>
parents: 3047
diff changeset
422 }
051a3f446ac2 client: made identify tool work with multiple maps
Markus Kottlaender <markus@intevation.de>
parents: 3047
diff changeset
423 var waterwayAreaSource = map.getLayer("WATERWAYAREA").getSource();
051a3f446ac2 client: made identify tool work with multiple maps
Markus Kottlaender <markus@intevation.de>
parents: 3047
diff changeset
424 var wareaUrl = waterwayAreaSource.getGetFeatureInfoUrl(
051a3f446ac2 client: made identify tool work with multiple maps
Markus Kottlaender <markus@intevation.de>
parents: 3047
diff changeset
425 event.coordinate,
051a3f446ac2 client: made identify tool work with multiple maps
Markus Kottlaender <markus@intevation.de>
parents: 3047
diff changeset
426 100 /* resolution */,
051a3f446ac2 client: made identify tool work with multiple maps
Markus Kottlaender <markus@intevation.de>
parents: 3047
diff changeset
427 "EPSG:3857",
051a3f446ac2 client: made identify tool work with multiple maps
Markus Kottlaender <markus@intevation.de>
parents: 3047
diff changeset
428 // { INFO_FORMAT: "application/vnd.ogc.gml" } // not allowed by d4d
051a3f446ac2 client: made identify tool work with multiple maps
Markus Kottlaender <markus@intevation.de>
parents: 3047
diff changeset
429 { INFO_FORMAT: "application/json" }
051a3f446ac2 client: made identify tool work with multiple maps
Markus Kottlaender <markus@intevation.de>
parents: 3047
diff changeset
430 );
3047
e0b77d7463e7 Changed Waterway axis and area layer to WMS.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 3044
diff changeset
431
3051
051a3f446ac2 client: made identify tool work with multiple maps
Markus Kottlaender <markus@intevation.de>
parents: 3047
diff changeset
432 if (wareaUrl) {
051a3f446ac2 client: made identify tool work with multiple maps
Markus Kottlaender <markus@intevation.de>
parents: 3047
diff changeset
433 HTTP.get(wareaUrl, {
051a3f446ac2 client: made identify tool work with multiple maps
Markus Kottlaender <markus@intevation.de>
parents: 3047
diff changeset
434 headers: {
051a3f446ac2 client: made identify tool work with multiple maps
Markus Kottlaender <markus@intevation.de>
parents: 3047
diff changeset
435 "X-Gemma-Auth": localStorage.getItem("token")
051a3f446ac2 client: made identify tool work with multiple maps
Markus Kottlaender <markus@intevation.de>
parents: 3047
diff changeset
436 }
051a3f446ac2 client: made identify tool work with multiple maps
Markus Kottlaender <markus@intevation.de>
parents: 3047
diff changeset
437 }).then(response => {
051a3f446ac2 client: made identify tool work with multiple maps
Markus Kottlaender <markus@intevation.de>
parents: 3047
diff changeset
438 let features = response.data.features.map(f => {
051a3f446ac2 client: made identify tool work with multiple maps
Markus Kottlaender <markus@intevation.de>
parents: 3047
diff changeset
439 let feat = new Feature({
051a3f446ac2 client: made identify tool work with multiple maps
Markus Kottlaender <markus@intevation.de>
parents: 3047
diff changeset
440 geometry: new Point(f.geometry.coordinates)
3047
e0b77d7463e7 Changed Waterway axis and area layer to WMS.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 3044
diff changeset
441 });
3051
051a3f446ac2 client: made identify tool work with multiple maps
Markus Kottlaender <markus@intevation.de>
parents: 3047
diff changeset
442 feat.setId(f.id);
051a3f446ac2 client: made identify tool work with multiple maps
Markus Kottlaender <markus@intevation.de>
parents: 3047
diff changeset
443 feat.setProperties(f.properties);
051a3f446ac2 client: made identify tool work with multiple maps
Markus Kottlaender <markus@intevation.de>
parents: 3047
diff changeset
444 return feat;
051a3f446ac2 client: made identify tool work with multiple maps
Markus Kottlaender <markus@intevation.de>
parents: 3047
diff changeset
445 });
051a3f446ac2 client: made identify tool work with multiple maps
Markus Kottlaender <markus@intevation.de>
parents: 3047
diff changeset
446 commit("addIdentifiedFeatures", features);
051a3f446ac2 client: made identify tool work with multiple maps
Markus Kottlaender <markus@intevation.de>
parents: 3047
diff changeset
447 });
051a3f446ac2 client: made identify tool work with multiple maps
Markus Kottlaender <markus@intevation.de>
parents: 3047
diff changeset
448 }
3081
9107c959bb3b client: Changed distance marks ashore to WMS layer.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 3079
diff changeset
449 var dmSource = map.getLayer("DISTANCEMARKS").getSource();
9107c959bb3b client: Changed distance marks ashore to WMS layer.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 3079
diff changeset
450 var dmUrl = dmSource.getGetFeatureInfoUrl(
9107c959bb3b client: Changed distance marks ashore to WMS layer.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 3079
diff changeset
451 event.coordinate,
9107c959bb3b client: Changed distance marks ashore to WMS layer.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 3079
diff changeset
452 100 /* resolution */,
9107c959bb3b client: Changed distance marks ashore to WMS layer.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 3079
diff changeset
453 "EPSG:3857",
9107c959bb3b client: Changed distance marks ashore to WMS layer.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 3079
diff changeset
454 // { INFO_FORMAT: "application/vnd.ogc.gml" } // not allowed by d4d
9107c959bb3b client: Changed distance marks ashore to WMS layer.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 3079
diff changeset
455 { INFO_FORMAT: "application/json" }
9107c959bb3b client: Changed distance marks ashore to WMS layer.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 3079
diff changeset
456 );
9107c959bb3b client: Changed distance marks ashore to WMS layer.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 3079
diff changeset
457
9107c959bb3b client: Changed distance marks ashore to WMS layer.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 3079
diff changeset
458 if (dmUrl) {
9107c959bb3b client: Changed distance marks ashore to WMS layer.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 3079
diff changeset
459 HTTP.get(dmUrl + "&BUFFER=5", {
9107c959bb3b client: Changed distance marks ashore to WMS layer.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 3079
diff changeset
460 headers: {
9107c959bb3b client: Changed distance marks ashore to WMS layer.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 3079
diff changeset
461 "X-Gemma-Auth": localStorage.getItem("token")
9107c959bb3b client: Changed distance marks ashore to WMS layer.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 3079
diff changeset
462 }
9107c959bb3b client: Changed distance marks ashore to WMS layer.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 3079
diff changeset
463 }).then(response => {
9107c959bb3b client: Changed distance marks ashore to WMS layer.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 3079
diff changeset
464 let features = response.data.features.map(f => {
9107c959bb3b client: Changed distance marks ashore to WMS layer.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 3079
diff changeset
465 let feat = new Feature({
9107c959bb3b client: Changed distance marks ashore to WMS layer.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 3079
diff changeset
466 geometry: new Point(f.geometry.coordinates)
9107c959bb3b client: Changed distance marks ashore to WMS layer.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 3079
diff changeset
467 });
9107c959bb3b client: Changed distance marks ashore to WMS layer.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 3079
diff changeset
468 feat.setId(f.id);
9107c959bb3b client: Changed distance marks ashore to WMS layer.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 3079
diff changeset
469 feat.setProperties(f.properties);
9107c959bb3b client: Changed distance marks ashore to WMS layer.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 3079
diff changeset
470 return feat;
9107c959bb3b client: Changed distance marks ashore to WMS layer.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 3079
diff changeset
471 });
9107c959bb3b client: Changed distance marks ashore to WMS layer.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 3079
diff changeset
472 commit("addIdentifiedFeatures", features);
9107c959bb3b client: Changed distance marks ashore to WMS layer.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 3079
diff changeset
473 });
9107c959bb3b client: Changed distance marks ashore to WMS layer.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 3079
diff changeset
474 }
3051
051a3f446ac2 client: made identify tool work with multiple maps
Markus Kottlaender <markus@intevation.de>
parents: 3047
diff changeset
475 var dmaSource = map.getLayer("DISTANCEMARKSAXIS").getSource();
051a3f446ac2 client: made identify tool work with multiple maps
Markus Kottlaender <markus@intevation.de>
parents: 3047
diff changeset
476 var dmaUrl = dmaSource.getGetFeatureInfoUrl(
051a3f446ac2 client: made identify tool work with multiple maps
Markus Kottlaender <markus@intevation.de>
parents: 3047
diff changeset
477 event.coordinate,
051a3f446ac2 client: made identify tool work with multiple maps
Markus Kottlaender <markus@intevation.de>
parents: 3047
diff changeset
478 100 /* resolution */,
051a3f446ac2 client: made identify tool work with multiple maps
Markus Kottlaender <markus@intevation.de>
parents: 3047
diff changeset
479 "EPSG:3857",
051a3f446ac2 client: made identify tool work with multiple maps
Markus Kottlaender <markus@intevation.de>
parents: 3047
diff changeset
480 // { INFO_FORMAT: "application/vnd.ogc.gml" } // not allowed by d4d
051a3f446ac2 client: made identify tool work with multiple maps
Markus Kottlaender <markus@intevation.de>
parents: 3047
diff changeset
481 { INFO_FORMAT: "application/json" }
051a3f446ac2 client: made identify tool work with multiple maps
Markus Kottlaender <markus@intevation.de>
parents: 3047
diff changeset
482 );
3029
81c2e561fe03 Use distance marks an axis via WMS. Added legend and featureinfo.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 3006
diff changeset
483
3051
051a3f446ac2 client: made identify tool work with multiple maps
Markus Kottlaender <markus@intevation.de>
parents: 3047
diff changeset
484 if (dmaUrl) {
3078
71129566acdf client: Increased click radius for distance marks feature info.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 3071
diff changeset
485 HTTP.get(dmaUrl + "&BUFFER=5", {
3051
051a3f446ac2 client: made identify tool work with multiple maps
Markus Kottlaender <markus@intevation.de>
parents: 3047
diff changeset
486 headers: {
051a3f446ac2 client: made identify tool work with multiple maps
Markus Kottlaender <markus@intevation.de>
parents: 3047
diff changeset
487 "X-Gemma-Auth": localStorage.getItem("token")
3029
81c2e561fe03 Use distance marks an axis via WMS. Added legend and featureinfo.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 3006
diff changeset
488 }
3051
051a3f446ac2 client: made identify tool work with multiple maps
Markus Kottlaender <markus@intevation.de>
parents: 3047
diff changeset
489 }).then(response => {
051a3f446ac2 client: made identify tool work with multiple maps
Markus Kottlaender <markus@intevation.de>
parents: 3047
diff changeset
490 let features = response.data.features.map(f => {
051a3f446ac2 client: made identify tool work with multiple maps
Markus Kottlaender <markus@intevation.de>
parents: 3047
diff changeset
491 let feat = new Feature({
051a3f446ac2 client: made identify tool work with multiple maps
Markus Kottlaender <markus@intevation.de>
parents: 3047
diff changeset
492 geometry: new Point(f.geometry.coordinates)
051a3f446ac2 client: made identify tool work with multiple maps
Markus Kottlaender <markus@intevation.de>
parents: 3047
diff changeset
493 });
051a3f446ac2 client: made identify tool work with multiple maps
Markus Kottlaender <markus@intevation.de>
parents: 3047
diff changeset
494 feat.setId(f.id);
051a3f446ac2 client: made identify tool work with multiple maps
Markus Kottlaender <markus@intevation.de>
parents: 3047
diff changeset
495 feat.setProperties(f.properties);
051a3f446ac2 client: made identify tool work with multiple maps
Markus Kottlaender <markus@intevation.de>
parents: 3047
diff changeset
496 return feat;
051a3f446ac2 client: made identify tool work with multiple maps
Markus Kottlaender <markus@intevation.de>
parents: 3047
diff changeset
497 });
051a3f446ac2 client: made identify tool work with multiple maps
Markus Kottlaender <markus@intevation.de>
parents: 3047
diff changeset
498 commit("addIdentifiedFeatures", features);
051a3f446ac2 client: made identify tool work with multiple maps
Markus Kottlaender <markus@intevation.de>
parents: 3047
diff changeset
499 });
051a3f446ac2 client: made identify tool work with multiple maps
Markus Kottlaender <markus@intevation.de>
parents: 3047
diff changeset
500 }
051a3f446ac2 client: made identify tool work with multiple maps
Markus Kottlaender <markus@intevation.de>
parents: 3047
diff changeset
501 // trying the GetFeatureInfo way for WMS
051a3f446ac2 client: made identify tool work with multiple maps
Markus Kottlaender <markus@intevation.de>
parents: 3047
diff changeset
502 var iecdisSource = map.getLayer("INLANDECDIS").getSource();
051a3f446ac2 client: made identify tool work with multiple maps
Markus Kottlaender <markus@intevation.de>
parents: 3047
diff changeset
503 var iecdisUrl = iecdisSource.getGetFeatureInfoUrl(
051a3f446ac2 client: made identify tool work with multiple maps
Markus Kottlaender <markus@intevation.de>
parents: 3047
diff changeset
504 event.coordinate,
051a3f446ac2 client: made identify tool work with multiple maps
Markus Kottlaender <markus@intevation.de>
parents: 3047
diff changeset
505 100 /* resolution */,
051a3f446ac2 client: made identify tool work with multiple maps
Markus Kottlaender <markus@intevation.de>
parents: 3047
diff changeset
506 "EPSG:3857",
051a3f446ac2 client: made identify tool work with multiple maps
Markus Kottlaender <markus@intevation.de>
parents: 3047
diff changeset
507 // { INFO_FORMAT: "application/vnd.ogc.gml" } // not allowed by d4d
051a3f446ac2 client: made identify tool work with multiple maps
Markus Kottlaender <markus@intevation.de>
parents: 3047
diff changeset
508 { INFO_FORMAT: "text/plain" }
051a3f446ac2 client: made identify tool work with multiple maps
Markus Kottlaender <markus@intevation.de>
parents: 3047
diff changeset
509 );
1437
1cd1549aab47 fixed panning problem when drawing cross cuts
Markus Kottlaender <markus@intevation.de>
parents: 1435
diff changeset
510
3051
051a3f446ac2 client: made identify tool work with multiple maps
Markus Kottlaender <markus@intevation.de>
parents: 3047
diff changeset
511 if (iecdisUrl) {
051a3f446ac2 client: made identify tool work with multiple maps
Markus Kottlaender <markus@intevation.de>
parents: 3047
diff changeset
512 // cannot directly query here because of SOP
051a3f446ac2 client: made identify tool work with multiple maps
Markus Kottlaender <markus@intevation.de>
parents: 3047
diff changeset
513 console.log("GetFeatureInfo url:", iecdisUrl);
051a3f446ac2 client: made identify tool work with multiple maps
Markus Kottlaender <markus@intevation.de>
parents: 3047
diff changeset
514 }
051a3f446ac2 client: made identify tool work with multiple maps
Markus Kottlaender <markus@intevation.de>
parents: 3047
diff changeset
515 });
3044
c71373594719 client: map: prepared store to hold multiple map objects
Markus Kottlaender <markus@intevation.de>
parents: 3043
diff changeset
516 },
3079
57255fda7594 client: compare surveys on map
Markus Kottlaender <markus@intevation.de>
parents: 3078
diff changeset
517 moveToBoundingBox({ state }, { boundingBox, zoom, preventZoomOut }) {
3044
c71373594719 client: map: prepared store to hold multiple map objects
Markus Kottlaender <markus@intevation.de>
parents: 3043
diff changeset
518 const extent = transformExtent(boundingBox, "EPSG:4326", "EPSG:3857");
3079
57255fda7594 client: compare surveys on map
Markus Kottlaender <markus@intevation.de>
parents: 3078
diff changeset
519 const currentZoom = state.syncedView.getZoom();
3054
1ef2f4179d30 client: map store: merged/renamed method(s)
Markus Kottlaender <markus@intevation.de>
parents: 3053
diff changeset
520 zoom = zoom || currentZoom;
3079
57255fda7594 client: compare surveys on map
Markus Kottlaender <markus@intevation.de>
parents: 3078
diff changeset
521 state.syncedView.fit(extent, {
3054
1ef2f4179d30 client: map store: merged/renamed method(s)
Markus Kottlaender <markus@intevation.de>
parents: 3053
diff changeset
522 maxZoom: preventZoomOut ? Math.max(zoom, currentZoom) : zoom,
1ef2f4179d30 client: map store: merged/renamed method(s)
Markus Kottlaender <markus@intevation.de>
parents: 3053
diff changeset
523 duration: 700
1ef2f4179d30 client: map store: merged/renamed method(s)
Markus Kottlaender <markus@intevation.de>
parents: 3053
diff changeset
524 });
3044
c71373594719 client: map: prepared store to hold multiple map objects
Markus Kottlaender <markus@intevation.de>
parents: 3043
diff changeset
525 },
3054
1ef2f4179d30 client: map store: merged/renamed method(s)
Markus Kottlaender <markus@intevation.de>
parents: 3053
diff changeset
526 moveToFeauture({ dispatch }, { feature, zoom, preventZoomOut }) {
3044
c71373594719 client: map: prepared store to hold multiple map objects
Markus Kottlaender <markus@intevation.de>
parents: 3043
diff changeset
527 const boundingBox = bbox(feature.geometry);
3053
61e4feb04a35 client: avoid code duplication
Markus Kottlaender <markus@intevation.de>
parents: 3052
diff changeset
528 dispatch("moveToBoundingBox", { boundingBox, zoom, preventZoomOut });
3044
c71373594719 client: map: prepared store to hold multiple map objects
Markus Kottlaender <markus@intevation.de>
parents: 3043
diff changeset
529 },
3079
57255fda7594 client: compare surveys on map
Markus Kottlaender <markus@intevation.de>
parents: 3078
diff changeset
530 moveMap({ state }, { coordinates, zoom, preventZoomOut }) {
57255fda7594 client: compare surveys on map
Markus Kottlaender <markus@intevation.de>
parents: 3078
diff changeset
531 const currentZoom = state.syncedView.getZoom();
3044
c71373594719 client: map: prepared store to hold multiple map objects
Markus Kottlaender <markus@intevation.de>
parents: 3043
diff changeset
532 zoom = zoom || currentZoom;
3079
57255fda7594 client: compare surveys on map
Markus Kottlaender <markus@intevation.de>
parents: 3078
diff changeset
533 state.syncedView.animate({
3044
c71373594719 client: map: prepared store to hold multiple map objects
Markus Kottlaender <markus@intevation.de>
parents: 3043
diff changeset
534 zoom: preventZoomOut ? Math.max(zoom, currentZoom) : zoom,
3079
57255fda7594 client: compare surveys on map
Markus Kottlaender <markus@intevation.de>
parents: 3078
diff changeset
535 center: fromLonLat(coordinates, state.syncedView.getProjection()),
3044
c71373594719 client: map: prepared store to hold multiple map objects
Markus Kottlaender <markus@intevation.de>
parents: 3043
diff changeset
536 duration: 700
c71373594719 client: map: prepared store to hold multiple map objects
Markus Kottlaender <markus@intevation.de>
parents: 3043
diff changeset
537 });
1296
99c039e86624 replaced manual store cleanup on logout with central store reset
Markus Kottlaender <markus@intevation.de>
parents: 1272
diff changeset
538 }
585
ef307bd6b5d8 refac: restructured client application
Thomas Junk <thomas.junk@intevation.de>
parents:
diff changeset
539 }
ef307bd6b5d8 refac: restructured client application
Thomas Junk <thomas.junk@intevation.de>
parents:
diff changeset
540 };