annotate client/src/map/Maplayer.vue @ 1063:7ec2133c6404

client: add area measurement. simpify code * Add a third draw mode which can only be activated when no morphology is selected and we are already in LineString mode. It adds an area calculation. Because the Polygon drawMode ends on a double click, there needs to be an extra callback for this to run identify so that the area calculation is shown all times. * Add Bernhard as author to some files and also simplify copyright note. * Remove DRAWMODES in the code to simplify as this is just one indirection used once in stores/application.js. * Use mapState instead mapGetters to get the drawMode at all places to save some code lines.
author Bernhard Reiter <bernhard@intevation.de>
date Thu, 25 Oct 2018 23:16:53 +0200
parents d3bdad8ed8d3
children 907321455f39 3f14b73414e2
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
585
ef307bd6b5d8 refac: restructured client application
Thomas Junk <thomas.junk@intevation.de>
parents:
diff changeset
1 <template>
621
b17a4482d07d feat: UI adaptation of 4 slots
Thomas Junk <thomas.junk@intevation.de>
parents: 620
diff changeset
2 <div id="map" :class="mapStyle"></div>
585
ef307bd6b5d8 refac: restructured client application
Thomas Junk <thomas.junk@intevation.de>
parents:
diff changeset
3 </template>
ef307bd6b5d8 refac: restructured client application
Thomas Junk <thomas.junk@intevation.de>
parents:
diff changeset
4
ef307bd6b5d8 refac: restructured client application
Thomas Junk <thomas.junk@intevation.de>
parents:
diff changeset
5 <style lang="scss">
593
c4a4dc612191 feat: Toggleable fairway profile
Thomas Junk <thomas.junk@intevation.de>
parents: 585
diff changeset
6 .mapsplit {
c4a4dc612191 feat: Toggleable fairway profile
Thomas Junk <thomas.junk@intevation.de>
parents: 585
diff changeset
7 height: 50vh;
585
ef307bd6b5d8 refac: restructured client application
Thomas Junk <thomas.junk@intevation.de>
parents:
diff changeset
8 }
ef307bd6b5d8 refac: restructured client application
Thomas Junk <thomas.junk@intevation.de>
parents:
diff changeset
9
593
c4a4dc612191 feat: Toggleable fairway profile
Thomas Junk <thomas.junk@intevation.de>
parents: 585
diff changeset
10 .mapfull {
585
ef307bd6b5d8 refac: restructured client application
Thomas Junk <thomas.junk@intevation.de>
parents:
diff changeset
11 height: 100vh;
ef307bd6b5d8 refac: restructured client application
Thomas Junk <thomas.junk@intevation.de>
parents:
diff changeset
12 }
879
52fe3e20f750 client: improve print styling
Bernhard Reiter <bernhard@intevation.de>
parents: 865
diff changeset
13
52fe3e20f750 client: improve print styling
Bernhard Reiter <bernhard@intevation.de>
parents: 865
diff changeset
14 @media print {
52fe3e20f750 client: improve print styling
Bernhard Reiter <bernhard@intevation.de>
parents: 865
diff changeset
15 .mapfull {
52fe3e20f750 client: improve print styling
Bernhard Reiter <bernhard@intevation.de>
parents: 865
diff changeset
16 width: 2000px;
902
396b0e35c8eb fix typo
Thomas Junk <thomas.junk@intevation.de>
parents: 879
diff changeset
17 height: 2828px;
879
52fe3e20f750 client: improve print styling
Bernhard Reiter <bernhard@intevation.de>
parents: 865
diff changeset
18 }
52fe3e20f750 client: improve print styling
Bernhard Reiter <bernhard@intevation.de>
parents: 865
diff changeset
19 .mapsplit {
52fe3e20f750 client: improve print styling
Bernhard Reiter <bernhard@intevation.de>
parents: 865
diff changeset
20 width: 2000px;
902
396b0e35c8eb fix typo
Thomas Junk <thomas.junk@intevation.de>
parents: 879
diff changeset
21 height: 2828px;
879
52fe3e20f750 client: improve print styling
Bernhard Reiter <bernhard@intevation.de>
parents: 865
diff changeset
22 }
52fe3e20f750 client: improve print styling
Bernhard Reiter <bernhard@intevation.de>
parents: 865
diff changeset
23 }
585
ef307bd6b5d8 refac: restructured client application
Thomas Junk <thomas.junk@intevation.de>
parents:
diff changeset
24 </style>
ef307bd6b5d8 refac: restructured client application
Thomas Junk <thomas.junk@intevation.de>
parents:
diff changeset
25
ef307bd6b5d8 refac: restructured client application
Thomas Junk <thomas.junk@intevation.de>
parents:
diff changeset
26 <script>
1019
ca628dce90dd Licensing information added
Thomas Junk <thomas.junk@intevation.de>
parents: 975
diff changeset
27 /*
ca628dce90dd Licensing information added
Thomas Junk <thomas.junk@intevation.de>
parents: 975
diff changeset
28 * This is Free Software under GNU Affero General Public License v >= 3.0
ca628dce90dd Licensing information added
Thomas Junk <thomas.junk@intevation.de>
parents: 975
diff changeset
29 * without warranty, see README.md and license for details.
1062
d3bdad8ed8d3 client: simply code structure and add author
Bernhard Reiter <bernhard@intevation.de>
parents: 1043
diff changeset
30 *
1019
ca628dce90dd Licensing information added
Thomas Junk <thomas.junk@intevation.de>
parents: 975
diff changeset
31 * SPDX-License-Identifier: AGPL-3.0-or-later
ca628dce90dd Licensing information added
Thomas Junk <thomas.junk@intevation.de>
parents: 975
diff changeset
32 * License-Filename: LICENSES/AGPL-3.0.txt
1062
d3bdad8ed8d3 client: simply code structure and add author
Bernhard Reiter <bernhard@intevation.de>
parents: 1043
diff changeset
33 *
1019
ca628dce90dd Licensing information added
Thomas Junk <thomas.junk@intevation.de>
parents: 975
diff changeset
34 * Copyright (C) 2018 by via donau
ca628dce90dd Licensing information added
Thomas Junk <thomas.junk@intevation.de>
parents: 975
diff changeset
35 * – Österreichische Wasserstraßen-Gesellschaft mbH
ca628dce90dd Licensing information added
Thomas Junk <thomas.junk@intevation.de>
parents: 975
diff changeset
36 * Software engineering by Intevation GmbH
1062
d3bdad8ed8d3 client: simply code structure and add author
Bernhard Reiter <bernhard@intevation.de>
parents: 1043
diff changeset
37 *
1019
ca628dce90dd Licensing information added
Thomas Junk <thomas.junk@intevation.de>
parents: 975
diff changeset
38 * Author(s):
1062
d3bdad8ed8d3 client: simply code structure and add author
Bernhard Reiter <bernhard@intevation.de>
parents: 1043
diff changeset
39 * * Thomas Junk <thomas.junk@intevation.de>
d3bdad8ed8d3 client: simply code structure and add author
Bernhard Reiter <bernhard@intevation.de>
parents: 1043
diff changeset
40 * * Bernhard E. Reiter <bernhard.reiter@intevation.de>
1019
ca628dce90dd Licensing information added
Thomas Junk <thomas.junk@intevation.de>
parents: 975
diff changeset
41 */
585
ef307bd6b5d8 refac: restructured client application
Thomas Junk <thomas.junk@intevation.de>
parents:
diff changeset
42 import { HTTP } from "../application/lib/http";
957
93364f153da4 Backed out changeset c2b03f4755b6
Thomas Junk <thomas.junk@intevation.de>
parents: 956
diff changeset
43 import { mapGetters, mapState } from "vuex";
585
ef307bd6b5d8 refac: restructured client application
Thomas Junk <thomas.junk@intevation.de>
parents:
diff changeset
44 import "ol/ol.css";
ef307bd6b5d8 refac: restructured client application
Thomas Junk <thomas.junk@intevation.de>
parents:
diff changeset
45 import { Map, View } from "ol";
ef307bd6b5d8 refac: restructured client application
Thomas Junk <thomas.junk@intevation.de>
parents:
diff changeset
46 import { WFS, GeoJSON } from "ol/format.js";
709
35fd15711e9e client: prepare to send profile cut to backend
Bernhard Reiter <bernhard@intevation.de>
parents: 706
diff changeset
47 import LineString from "ol/geom/LineString.js";
942
912d016275ee client: add arrow to drawn linesegment
Bernhard Reiter <bernhard@intevation.de>
parents: 938
diff changeset
48 import Point from "ol/geom/Point.js";
649
83081ba6c9c1 feat: Linetool added
Thomas Junk <thomas.junk@intevation.de>
parents: 630
diff changeset
49 import Draw from "ol/interaction/Draw.js";
709
35fd15711e9e client: prepare to send profile cut to backend
Bernhard Reiter <bernhard@intevation.de>
parents: 706
diff changeset
50 import { Vector as VectorLayer } from "ol/layer.js";
649
83081ba6c9c1 feat: Linetool added
Thomas Junk <thomas.junk@intevation.de>
parents: 630
diff changeset
51 import { Vector as VectorSource } from "ol/source.js";
1063
7ec2133c6404 client: add area measurement. simpify code
Bernhard Reiter <bernhard@intevation.de>
parents: 1062
diff changeset
52 import { getLength, getArea } from "ol/sphere.js";
942
912d016275ee client: add arrow to drawn linesegment
Bernhard Reiter <bernhard@intevation.de>
parents: 938
diff changeset
53 import { Icon, Stroke, Style, Fill } from "ol/style.js";
843
d2aa972df342 client: add example for setting style
Bernhard Reiter <bernhard@intevation.de>
parents: 842
diff changeset
54
767
dedf252b3e01 feat: fairwayprofile partially with retrieved data from the server
Thomas Junk <thomas.junk@intevation.de>
parents: 765
diff changeset
55 import { displayError } from "../application/lib/errors.js";
1029
1fdeb9404afb refac: extract calculation of fairway coordinates
Thomas Junk <thomas.junk@intevation.de>
parents: 1028
diff changeset
56 import { calculateFairwayCoordinates } from "../application/lib/geo.js";
738
d7530644dde3 client: add calculation of fairway rectangles
Bernhard Reiter <bernhard@intevation.de>
parents: 734
diff changeset
57
802
327aa4a18a1c Fairway profile WIP
Thomas Junk <thomas.junk@intevation.de>
parents: 797
diff changeset
58 const DEMODATA = 2.5;
327aa4a18a1c Fairway profile WIP
Thomas Junk <thomas.junk@intevation.de>
parents: 797
diff changeset
59
848
22f7d33eee65 Make eslint happy again.
Sascha Wilde <wilde@intevation.de>
parents: 843
diff changeset
60 /* for the sake of debugging */
22f7d33eee65 Make eslint happy again.
Sascha Wilde <wilde@intevation.de>
parents: 843
diff changeset
61 /* eslint-disable no-console */
585
ef307bd6b5d8 refac: restructured client application
Thomas Junk <thomas.junk@intevation.de>
parents:
diff changeset
62 export default {
ef307bd6b5d8 refac: restructured client application
Thomas Junk <thomas.junk@intevation.de>
parents:
diff changeset
63 name: "maplayer",
1062
d3bdad8ed8d3 client: simply code structure and add author
Bernhard Reiter <bernhard@intevation.de>
parents: 1043
diff changeset
64 props: ["lat", "long", "zoom", "split"],
585
ef307bd6b5d8 refac: restructured client application
Thomas Junk <thomas.junk@intevation.de>
parents:
diff changeset
65 data() {
ef307bd6b5d8 refac: restructured client application
Thomas Junk <thomas.junk@intevation.de>
parents:
diff changeset
66 return {
ef307bd6b5d8 refac: restructured client application
Thomas Junk <thomas.junk@intevation.de>
parents:
diff changeset
67 projection: "EPSG:3857",
649
83081ba6c9c1 feat: Linetool added
Thomas Junk <thomas.junk@intevation.de>
parents: 630
diff changeset
68 interaction: null,
83081ba6c9c1 feat: Linetool added
Thomas Junk <thomas.junk@intevation.de>
parents: 630
diff changeset
69 vectorLayer: null,
83081ba6c9c1 feat: Linetool added
Thomas Junk <thomas.junk@intevation.de>
parents: 630
diff changeset
70 vectorSource: null
585
ef307bd6b5d8 refac: restructured client application
Thomas Junk <thomas.junk@intevation.de>
parents:
diff changeset
71 };
ef307bd6b5d8 refac: restructured client application
Thomas Junk <thomas.junk@intevation.de>
parents:
diff changeset
72 },
ef307bd6b5d8 refac: restructured client application
Thomas Junk <thomas.junk@intevation.de>
parents:
diff changeset
73 computed: {
957
93364f153da4 Backed out changeset c2b03f4755b6
Thomas Junk <thomas.junk@intevation.de>
parents: 956
diff changeset
74 ...mapGetters("mapstore", ["layers", "getLayerByName"]),
1062
d3bdad8ed8d3 client: simply code structure and add author
Bernhard Reiter <bernhard@intevation.de>
parents: 1043
diff changeset
75 ...mapState("application", ["drawMode"]),
975
3da707172772 refac: removed technical debt
Thomas Junk <thomas.junk@intevation.de>
parents: 957
diff changeset
76 ...mapState("mapstore", ["openLayersMap"]),
1027
04a9e78dcc5f refac: remove morphstore. not necessary
Thomas Junk <thomas.junk@intevation.de>
parents: 1025
diff changeset
77 ...mapState("fairwayprofile", ["selectedMorph"]),
593
c4a4dc612191 feat: Toggleable fairway profile
Thomas Junk <thomas.junk@intevation.de>
parents: 585
diff changeset
78 mapStyle() {
c4a4dc612191 feat: Toggleable fairway profile
Thomas Junk <thomas.junk@intevation.de>
parents: 585
diff changeset
79 return {
c4a4dc612191 feat: Toggleable fairway profile
Thomas Junk <thomas.junk@intevation.de>
parents: 585
diff changeset
80 mapfull: !this.split,
c4a4dc612191 feat: Toggleable fairway profile
Thomas Junk <thomas.junk@intevation.de>
parents: 585
diff changeset
81 mapsplit: this.split
c4a4dc612191 feat: Toggleable fairway profile
Thomas Junk <thomas.junk@intevation.de>
parents: 585
diff changeset
82 };
c4a4dc612191 feat: Toggleable fairway profile
Thomas Junk <thomas.junk@intevation.de>
parents: 585
diff changeset
83 },
585
ef307bd6b5d8 refac: restructured client application
Thomas Junk <thomas.junk@intevation.de>
parents:
diff changeset
84 layerData() {
957
93364f153da4 Backed out changeset c2b03f4755b6
Thomas Junk <thomas.junk@intevation.de>
parents: 956
diff changeset
85 const l = this.layers.map(x => {
585
ef307bd6b5d8 refac: restructured client application
Thomas Junk <thomas.junk@intevation.de>
parents:
diff changeset
86 return x.data;
ef307bd6b5d8 refac: restructured client application
Thomas Junk <thomas.junk@intevation.de>
parents:
diff changeset
87 });
649
83081ba6c9c1 feat: Linetool added
Thomas Junk <thomas.junk@intevation.de>
parents: 630
diff changeset
88 return [...l, this.vectorLayer];
585
ef307bd6b5d8 refac: restructured client application
Thomas Junk <thomas.junk@intevation.de>
parents:
diff changeset
89 }
ef307bd6b5d8 refac: restructured client application
Thomas Junk <thomas.junk@intevation.de>
parents:
diff changeset
90 },
649
83081ba6c9c1 feat: Linetool added
Thomas Junk <thomas.junk@intevation.de>
parents: 630
diff changeset
91 methods: {
83081ba6c9c1 feat: Linetool added
Thomas Junk <thomas.junk@intevation.de>
parents: 630
diff changeset
92 createVectorSource() {
83081ba6c9c1 feat: Linetool added
Thomas Junk <thomas.junk@intevation.de>
parents: 630
diff changeset
93 this.vectorSource = new VectorSource({ wrapX: false });
83081ba6c9c1 feat: Linetool added
Thomas Junk <thomas.junk@intevation.de>
parents: 630
diff changeset
94 },
942
912d016275ee client: add arrow to drawn linesegment
Bernhard Reiter <bernhard@intevation.de>
parents: 938
diff changeset
95 drawStyleFunction(feature) {
912d016275ee client: add arrow to drawn linesegment
Bernhard Reiter <bernhard@intevation.de>
parents: 938
diff changeset
96 // adapted from OpenLayer's LineString Arrow Example
912d016275ee client: add arrow to drawn linesegment
Bernhard Reiter <bernhard@intevation.de>
parents: 938
diff changeset
97 var geometry = feature.getGeometry();
912d016275ee client: add arrow to drawn linesegment
Bernhard Reiter <bernhard@intevation.de>
parents: 938
diff changeset
98 var styles = [
912d016275ee client: add arrow to drawn linesegment
Bernhard Reiter <bernhard@intevation.de>
parents: 938
diff changeset
99 // linestring
912d016275ee client: add arrow to drawn linesegment
Bernhard Reiter <bernhard@intevation.de>
parents: 938
diff changeset
100 new Style({
912d016275ee client: add arrow to drawn linesegment
Bernhard Reiter <bernhard@intevation.de>
parents: 938
diff changeset
101 stroke: new Stroke({
912d016275ee client: add arrow to drawn linesegment
Bernhard Reiter <bernhard@intevation.de>
parents: 938
diff changeset
102 color: "#369aca",
912d016275ee client: add arrow to drawn linesegment
Bernhard Reiter <bernhard@intevation.de>
parents: 938
diff changeset
103 width: 2
912d016275ee client: add arrow to drawn linesegment
Bernhard Reiter <bernhard@intevation.de>
parents: 938
diff changeset
104 })
912d016275ee client: add arrow to drawn linesegment
Bernhard Reiter <bernhard@intevation.de>
parents: 938
diff changeset
105 })
912d016275ee client: add arrow to drawn linesegment
Bernhard Reiter <bernhard@intevation.de>
parents: 938
diff changeset
106 ];
912d016275ee client: add arrow to drawn linesegment
Bernhard Reiter <bernhard@intevation.de>
parents: 938
diff changeset
107
1063
7ec2133c6404 client: add area measurement. simpify code
Bernhard Reiter <bernhard@intevation.de>
parents: 1062
diff changeset
108 if (geometry.getType() === "LineString") {
7ec2133c6404 client: add area measurement. simpify code
Bernhard Reiter <bernhard@intevation.de>
parents: 1062
diff changeset
109 geometry.forEachSegment(function(start, end) {
7ec2133c6404 client: add area measurement. simpify code
Bernhard Reiter <bernhard@intevation.de>
parents: 1062
diff changeset
110 var dx = end[0] - start[0];
7ec2133c6404 client: add area measurement. simpify code
Bernhard Reiter <bernhard@intevation.de>
parents: 1062
diff changeset
111 var dy = end[1] - start[1];
7ec2133c6404 client: add area measurement. simpify code
Bernhard Reiter <bernhard@intevation.de>
parents: 1062
diff changeset
112 var rotation = Math.atan2(dy, dx);
7ec2133c6404 client: add area measurement. simpify code
Bernhard Reiter <bernhard@intevation.de>
parents: 1062
diff changeset
113 // arrows
7ec2133c6404 client: add area measurement. simpify code
Bernhard Reiter <bernhard@intevation.de>
parents: 1062
diff changeset
114 styles.push(
7ec2133c6404 client: add area measurement. simpify code
Bernhard Reiter <bernhard@intevation.de>
parents: 1062
diff changeset
115 new Style({
7ec2133c6404 client: add area measurement. simpify code
Bernhard Reiter <bernhard@intevation.de>
parents: 1062
diff changeset
116 geometry: new Point(end),
7ec2133c6404 client: add area measurement. simpify code
Bernhard Reiter <bernhard@intevation.de>
parents: 1062
diff changeset
117 image: new Icon({
7ec2133c6404 client: add area measurement. simpify code
Bernhard Reiter <bernhard@intevation.de>
parents: 1062
diff changeset
118 // we need to make sure the image is loaded by Vue Loader
7ec2133c6404 client: add area measurement. simpify code
Bernhard Reiter <bernhard@intevation.de>
parents: 1062
diff changeset
119 src: require("../application/assets/linestring_arrow.png"),
7ec2133c6404 client: add area measurement. simpify code
Bernhard Reiter <bernhard@intevation.de>
parents: 1062
diff changeset
120 // fiddling with the anchor's y value does not help to
7ec2133c6404 client: add area measurement. simpify code
Bernhard Reiter <bernhard@intevation.de>
parents: 1062
diff changeset
121 // position the image more centered on the line ending, as the
7ec2133c6404 client: add area measurement. simpify code
Bernhard Reiter <bernhard@intevation.de>
parents: 1062
diff changeset
122 // default line style seems to be slightly uncentered in the
7ec2133c6404 client: add area measurement. simpify code
Bernhard Reiter <bernhard@intevation.de>
parents: 1062
diff changeset
123 // anti-aliasing, but the image is not placed with subpixel
7ec2133c6404 client: add area measurement. simpify code
Bernhard Reiter <bernhard@intevation.de>
parents: 1062
diff changeset
124 // precision
7ec2133c6404 client: add area measurement. simpify code
Bernhard Reiter <bernhard@intevation.de>
parents: 1062
diff changeset
125 anchor: [0.75, 0.5],
7ec2133c6404 client: add area measurement. simpify code
Bernhard Reiter <bernhard@intevation.de>
parents: 1062
diff changeset
126 rotateWithView: true,
7ec2133c6404 client: add area measurement. simpify code
Bernhard Reiter <bernhard@intevation.de>
parents: 1062
diff changeset
127 rotation: -rotation
7ec2133c6404 client: add area measurement. simpify code
Bernhard Reiter <bernhard@intevation.de>
parents: 1062
diff changeset
128 })
942
912d016275ee client: add arrow to drawn linesegment
Bernhard Reiter <bernhard@intevation.de>
parents: 938
diff changeset
129 })
1063
7ec2133c6404 client: add area measurement. simpify code
Bernhard Reiter <bernhard@intevation.de>
parents: 1062
diff changeset
130 );
7ec2133c6404 client: add area measurement. simpify code
Bernhard Reiter <bernhard@intevation.de>
parents: 1062
diff changeset
131 });
7ec2133c6404 client: add area measurement. simpify code
Bernhard Reiter <bernhard@intevation.de>
parents: 1062
diff changeset
132 }
942
912d016275ee client: add arrow to drawn linesegment
Bernhard Reiter <bernhard@intevation.de>
parents: 938
diff changeset
133 return styles;
912d016275ee client: add arrow to drawn linesegment
Bernhard Reiter <bernhard@intevation.de>
parents: 938
diff changeset
134 },
649
83081ba6c9c1 feat: Linetool added
Thomas Junk <thomas.junk@intevation.de>
parents: 630
diff changeset
135 createVectorLayer() {
83081ba6c9c1 feat: Linetool added
Thomas Junk <thomas.junk@intevation.de>
parents: 630
diff changeset
136 this.vectorLayer = new VectorLayer({
942
912d016275ee client: add arrow to drawn linesegment
Bernhard Reiter <bernhard@intevation.de>
parents: 938
diff changeset
137 source: this.vectorSource,
912d016275ee client: add arrow to drawn linesegment
Bernhard Reiter <bernhard@intevation.de>
parents: 938
diff changeset
138 style: this.drawStyleFunction
649
83081ba6c9c1 feat: Linetool added
Thomas Junk <thomas.junk@intevation.de>
parents: 630
diff changeset
139 });
83081ba6c9c1 feat: Linetool added
Thomas Junk <thomas.junk@intevation.de>
parents: 630
diff changeset
140 },
83081ba6c9c1 feat: Linetool added
Thomas Junk <thomas.junk@intevation.de>
parents: 630
diff changeset
141 removeCurrentInteraction() {
957
93364f153da4 Backed out changeset c2b03f4755b6
Thomas Junk <thomas.junk@intevation.de>
parents: 956
diff changeset
142 this.openLayersMap.removeInteraction(this.interaction);
649
83081ba6c9c1 feat: Linetool added
Thomas Junk <thomas.junk@intevation.de>
parents: 630
diff changeset
143 this.interaction = null;
83081ba6c9c1 feat: Linetool added
Thomas Junk <thomas.junk@intevation.de>
parents: 630
diff changeset
144 },
1063
7ec2133c6404 client: add area measurement. simpify code
Bernhard Reiter <bernhard@intevation.de>
parents: 1062
diff changeset
145 createInteraction(drawMode) {
752
f09cbe80a864 refac: small improvements
Thomas Junk <thomas.junk@intevation.de>
parents: 745
diff changeset
146 this.vectorSource.clear();
705
6aa09d12157f client: add detection of drawend
Bernhard Reiter <bernhard@intevation.de>
parents: 703
diff changeset
147 var draw = new Draw({
649
83081ba6c9c1 feat: Linetool added
Thomas Junk <thomas.junk@intevation.de>
parents: 630
diff changeset
148 source: this.vectorSource,
1063
7ec2133c6404 client: add area measurement. simpify code
Bernhard Reiter <bernhard@intevation.de>
parents: 1062
diff changeset
149 type: drawMode,
7ec2133c6404 client: add area measurement. simpify code
Bernhard Reiter <bernhard@intevation.de>
parents: 1062
diff changeset
150 maxPoints: drawMode === "LineString" ? 2 : 50
649
83081ba6c9c1 feat: Linetool added
Thomas Junk <thomas.junk@intevation.de>
parents: 630
diff changeset
151 });
793
073394629ec6 client: add measurement and improve identify
Bernhard Reiter <bernhard@intevation.de>
parents: 790
diff changeset
152 draw.on("drawstart", event => {
752
f09cbe80a864 refac: small improvements
Thomas Junk <thomas.junk@intevation.de>
parents: 745
diff changeset
153 this.vectorSource.clear();
975
3da707172772 refac: removed technical debt
Thomas Junk <thomas.junk@intevation.de>
parents: 957
diff changeset
154 this.$store.commit("identifystore/setCurrentMeasurement", null);
793
073394629ec6 client: add measurement and improve identify
Bernhard Reiter <bernhard@intevation.de>
parents: 790
diff changeset
155 event.feature.setId("drawn.1"); // unique id for new feature
706
d47fa556a3e8 client: improve draw behaviour
Bernhard Reiter <bernhard@intevation.de>
parents: 705
diff changeset
156 });
705
6aa09d12157f client: add detection of drawend
Bernhard Reiter <bernhard@intevation.de>
parents: 703
diff changeset
157 draw.on("drawend", this.drawEnd);
6aa09d12157f client: add detection of drawend
Bernhard Reiter <bernhard@intevation.de>
parents: 703
diff changeset
158 return draw;
649
83081ba6c9c1 feat: Linetool added
Thomas Junk <thomas.junk@intevation.de>
parents: 630
diff changeset
159 },
706
d47fa556a3e8 client: improve draw behaviour
Bernhard Reiter <bernhard@intevation.de>
parents: 705
diff changeset
160 drawEnd(event) {
1063
7ec2133c6404 client: add area measurement. simpify code
Bernhard Reiter <bernhard@intevation.de>
parents: 1062
diff changeset
161 if (this.drawMode === "Polygon") {
7ec2133c6404 client: add area measurement. simpify code
Bernhard Reiter <bernhard@intevation.de>
parents: 1062
diff changeset
162 const areaSize = getArea(event.feature.getGeometry());
7ec2133c6404 client: add area measurement. simpify code
Bernhard Reiter <bernhard@intevation.de>
parents: 1062
diff changeset
163 // also place the a rounded areaSize in a property,
7ec2133c6404 client: add area measurement. simpify code
Bernhard Reiter <bernhard@intevation.de>
parents: 1062
diff changeset
164 // so identify will show it
7ec2133c6404 client: add area measurement. simpify code
Bernhard Reiter <bernhard@intevation.de>
parents: 1062
diff changeset
165 event.feature.set("area (km²)", Math.round(areaSize) / 1000);
7ec2133c6404 client: add area measurement. simpify code
Bernhard Reiter <bernhard@intevation.de>
parents: 1062
diff changeset
166 }
7ec2133c6404 client: add area measurement. simpify code
Bernhard Reiter <bernhard@intevation.de>
parents: 1062
diff changeset
167 if (this.drawMode === "LineString") {
7ec2133c6404 client: add area measurement. simpify code
Bernhard Reiter <bernhard@intevation.de>
parents: 1062
diff changeset
168 const length = getLength(event.feature.getGeometry());
7ec2133c6404 client: add area measurement. simpify code
Bernhard Reiter <bernhard@intevation.de>
parents: 1062
diff changeset
169 this.$store.commit("identifystore/setCurrentMeasurement", length);
7ec2133c6404 client: add area measurement. simpify code
Bernhard Reiter <bernhard@intevation.de>
parents: 1062
diff changeset
170 // also place the a rounded length in a property,
7ec2133c6404 client: add area measurement. simpify code
Bernhard Reiter <bernhard@intevation.de>
parents: 1062
diff changeset
171 // so identify will show it
7ec2133c6404 client: add area measurement. simpify code
Bernhard Reiter <bernhard@intevation.de>
parents: 1062
diff changeset
172 event.feature.set("length (m)", Math.round(length * 10) / 10);
7ec2133c6404 client: add area measurement. simpify code
Bernhard Reiter <bernhard@intevation.de>
parents: 1062
diff changeset
173 }
793
073394629ec6 client: add measurement and improve identify
Bernhard Reiter <bernhard@intevation.de>
parents: 790
diff changeset
174
829
797063af6dc8 client: complete simple survey selection
Bernhard Reiter <bernhard@intevation.de>
parents: 810
diff changeset
175 // if a survey has been selected, request a profile
797063af6dc8 client: complete simple survey selection
Bernhard Reiter <bernhard@intevation.de>
parents: 810
diff changeset
176 // TODO an improvement could be to check if the line intersects
797063af6dc8 client: complete simple survey selection
Bernhard Reiter <bernhard@intevation.de>
parents: 810
diff changeset
177 // with the bottleneck area's polygon before trying the server request
957
93364f153da4 Backed out changeset c2b03f4755b6
Thomas Junk <thomas.junk@intevation.de>
parents: 956
diff changeset
178 if (this.selectedMorph) {
93364f153da4 Backed out changeset c2b03f4755b6
Thomas Junk <thomas.junk@intevation.de>
parents: 956
diff changeset
179 console.log("requesting profile for", this.selectedMorph);
1020
e89be4af3a9f restructure surveyrequest
Thomas Junk <thomas.junk@intevation.de>
parents: 1019
diff changeset
180 const inputLineString = event.feature.getGeometry().clone();
e89be4af3a9f restructure surveyrequest
Thomas Junk <thomas.junk@intevation.de>
parents: 1019
diff changeset
181 inputLineString.transform("EPSG:3857", "EPSG:4326");
1041
7e3c620a5639 rounding cut coordinates
Markus Kottlaender <markus@intevation.de>
parents: 1029
diff changeset
182 const [start, end] = inputLineString
7e3c620a5639 rounding cut coordinates
Markus Kottlaender <markus@intevation.de>
parents: 1029
diff changeset
183 .getCoordinates()
7e3c620a5639 rounding cut coordinates
Markus Kottlaender <markus@intevation.de>
parents: 1029
diff changeset
184 .map(coords => coords.map(coord => parseFloat(coord.toFixed(8))));
1020
e89be4af3a9f restructure surveyrequest
Thomas Junk <thomas.junk@intevation.de>
parents: 1019
diff changeset
185 this.$store.commit("fairwayprofile/setStartPoint", start);
e89be4af3a9f restructure surveyrequest
Thomas Junk <thomas.junk@intevation.de>
parents: 1019
diff changeset
186 this.$store.commit("fairwayprofile/setEndPoint", end);
1028
dd67e46366ef refac: loading of profile data via fairwayprofile store
Thomas Junk <thomas.junk@intevation.de>
parents: 1027
diff changeset
187 const profileLine = new LineString([start, end]);
dd67e46366ef refac: loading of profile data via fairwayprofile store
Thomas Junk <thomas.junk@intevation.de>
parents: 1027
diff changeset
188 this.$store
dd67e46366ef refac: loading of profile data via fairwayprofile store
Thomas Junk <thomas.junk@intevation.de>
parents: 1027
diff changeset
189 .dispatch("fairwayprofile/loadProfile", this.selectedMorph.date_info)
dd67e46366ef refac: loading of profile data via fairwayprofile store
Thomas Junk <thomas.junk@intevation.de>
parents: 1027
diff changeset
190 .then(() => {
dd67e46366ef refac: loading of profile data via fairwayprofile store
Thomas Junk <thomas.junk@intevation.de>
parents: 1027
diff changeset
191 var vectorSource = this.getLayerByName(
dd67e46366ef refac: loading of profile data via fairwayprofile store
Thomas Junk <thomas.junk@intevation.de>
parents: 1027
diff changeset
192 "Fairway Dimensions"
dd67e46366ef refac: loading of profile data via fairwayprofile store
Thomas Junk <thomas.junk@intevation.de>
parents: 1027
diff changeset
193 ).data.getSource();
dd67e46366ef refac: loading of profile data via fairwayprofile store
Thomas Junk <thomas.junk@intevation.de>
parents: 1027
diff changeset
194 this.calculateIntersection(vectorSource, profileLine);
dd67e46366ef refac: loading of profile data via fairwayprofile store
Thomas Junk <thomas.junk@intevation.de>
parents: 1027
diff changeset
195 })
dd67e46366ef refac: loading of profile data via fairwayprofile store
Thomas Junk <thomas.junk@intevation.de>
parents: 1027
diff changeset
196 .then(() => {
dd67e46366ef refac: loading of profile data via fairwayprofile store
Thomas Junk <thomas.junk@intevation.de>
parents: 1027
diff changeset
197 this.$store.commit("application/openSplitScreen");
dd67e46366ef refac: loading of profile data via fairwayprofile store
Thomas Junk <thomas.junk@intevation.de>
parents: 1027
diff changeset
198 })
dd67e46366ef refac: loading of profile data via fairwayprofile store
Thomas Junk <thomas.junk@intevation.de>
parents: 1027
diff changeset
199 .catch(error => {
dd67e46366ef refac: loading of profile data via fairwayprofile store
Thomas Junk <thomas.junk@intevation.de>
parents: 1027
diff changeset
200 const { status, data } = error.response;
dd67e46366ef refac: loading of profile data via fairwayprofile store
Thomas Junk <thomas.junk@intevation.de>
parents: 1027
diff changeset
201 displayError({
dd67e46366ef refac: loading of profile data via fairwayprofile store
Thomas Junk <thomas.junk@intevation.de>
parents: 1027
diff changeset
202 title: "Backend Error",
dd67e46366ef refac: loading of profile data via fairwayprofile store
Thomas Junk <thomas.junk@intevation.de>
parents: 1027
diff changeset
203 message: `${status}: ${data.message || data}`
dd67e46366ef refac: loading of profile data via fairwayprofile store
Thomas Junk <thomas.junk@intevation.de>
parents: 1027
diff changeset
204 });
1025
a55f20dc8d8d refac: store profiles by date
Thomas Junk <thomas.junk@intevation.de>
parents: 1022
diff changeset
205 });
1028
dd67e46366ef refac: loading of profile data via fairwayprofile store
Thomas Junk <thomas.junk@intevation.de>
parents: 1027
diff changeset
206 }
706
d47fa556a3e8 client: improve draw behaviour
Bernhard Reiter <bernhard@intevation.de>
parents: 705
diff changeset
207 },
1022
74229d9f7028 refac: restructure maptool for understandability
Thomas Junk <thomas.junk@intevation.de>
parents: 1020
diff changeset
208 calculateIntersection(vectorSource, profileLine) {
74229d9f7028 refac: restructure maptool for understandability
Thomas Junk <thomas.junk@intevation.de>
parents: 1020
diff changeset
209 const transformedLine = profileLine
74229d9f7028 refac: restructure maptool for understandability
Thomas Junk <thomas.junk@intevation.de>
parents: 1020
diff changeset
210 .clone()
74229d9f7028 refac: restructure maptool for understandability
Thomas Junk <thomas.junk@intevation.de>
parents: 1020
diff changeset
211 .transform("EPSG:4326", "EPSG:3857")
74229d9f7028 refac: restructure maptool for understandability
Thomas Junk <thomas.junk@intevation.de>
parents: 1020
diff changeset
212 .getExtent();
74229d9f7028 refac: restructure maptool for understandability
Thomas Junk <thomas.junk@intevation.de>
parents: 1020
diff changeset
213 const featureCallback = feature => {
74229d9f7028 refac: restructure maptool for understandability
Thomas Junk <thomas.junk@intevation.de>
parents: 1020
diff changeset
214 // transform back to prepare for usage
74229d9f7028 refac: restructure maptool for understandability
Thomas Junk <thomas.junk@intevation.de>
parents: 1020
diff changeset
215 var intersectingPolygon = feature
74229d9f7028 refac: restructure maptool for understandability
Thomas Junk <thomas.junk@intevation.de>
parents: 1020
diff changeset
216 .getGeometry()
74229d9f7028 refac: restructure maptool for understandability
Thomas Junk <thomas.junk@intevation.de>
parents: 1020
diff changeset
217 .clone()
74229d9f7028 refac: restructure maptool for understandability
Thomas Junk <thomas.junk@intevation.de>
parents: 1020
diff changeset
218 .transform("EPSG:3857", "EPSG:4326");
1029
1fdeb9404afb refac: extract calculation of fairway coordinates
Thomas Junk <thomas.junk@intevation.de>
parents: 1028
diff changeset
219 const fairwayCoordinates = calculateFairwayCoordinates(
1022
74229d9f7028 refac: restructure maptool for understandability
Thomas Junk <thomas.junk@intevation.de>
parents: 1020
diff changeset
220 profileLine,
74229d9f7028 refac: restructure maptool for understandability
Thomas Junk <thomas.junk@intevation.de>
parents: 1020
diff changeset
221 intersectingPolygon,
74229d9f7028 refac: restructure maptool for understandability
Thomas Junk <thomas.junk@intevation.de>
parents: 1020
diff changeset
222 DEMODATA
74229d9f7028 refac: restructure maptool for understandability
Thomas Junk <thomas.junk@intevation.de>
parents: 1020
diff changeset
223 );
74229d9f7028 refac: restructure maptool for understandability
Thomas Junk <thomas.junk@intevation.de>
parents: 1020
diff changeset
224 this.$store.commit(
74229d9f7028 refac: restructure maptool for understandability
Thomas Junk <thomas.junk@intevation.de>
parents: 1020
diff changeset
225 "fairwayprofile/setFairwayCoordinates",
74229d9f7028 refac: restructure maptool for understandability
Thomas Junk <thomas.junk@intevation.de>
parents: 1020
diff changeset
226 fairwayCoordinates
74229d9f7028 refac: restructure maptool for understandability
Thomas Junk <thomas.junk@intevation.de>
parents: 1020
diff changeset
227 );
74229d9f7028 refac: restructure maptool for understandability
Thomas Junk <thomas.junk@intevation.de>
parents: 1020
diff changeset
228 };
74229d9f7028 refac: restructure maptool for understandability
Thomas Junk <thomas.junk@intevation.de>
parents: 1020
diff changeset
229 vectorSource.forEachFeatureIntersectingExtent(
74229d9f7028 refac: restructure maptool for understandability
Thomas Junk <thomas.junk@intevation.de>
parents: 1020
diff changeset
230 // need to use EPSG:3857 which is the proj of vectorSource
74229d9f7028 refac: restructure maptool for understandability
Thomas Junk <thomas.junk@intevation.de>
parents: 1020
diff changeset
231 transformedLine,
74229d9f7028 refac: restructure maptool for understandability
Thomas Junk <thomas.junk@intevation.de>
parents: 1020
diff changeset
232 featureCallback
74229d9f7028 refac: restructure maptool for understandability
Thomas Junk <thomas.junk@intevation.de>
parents: 1020
diff changeset
233 );
74229d9f7028 refac: restructure maptool for understandability
Thomas Junk <thomas.junk@intevation.de>
parents: 1020
diff changeset
234 },
649
83081ba6c9c1 feat: Linetool added
Thomas Junk <thomas.junk@intevation.de>
parents: 630
diff changeset
235 activateInteraction() {
83081ba6c9c1 feat: Linetool added
Thomas Junk <thomas.junk@intevation.de>
parents: 630
diff changeset
236 const interaction = this.createInteraction(this.drawMode);
83081ba6c9c1 feat: Linetool added
Thomas Junk <thomas.junk@intevation.de>
parents: 630
diff changeset
237 this.interaction = interaction;
957
93364f153da4 Backed out changeset c2b03f4755b6
Thomas Junk <thomas.junk@intevation.de>
parents: 956
diff changeset
238 this.openLayersMap.addInteraction(interaction);
701
8149772c62d6 client: add bbox loading strategy to riverkilometre
Bernhard Reiter <bernhard@intevation.de>
parents: 690
diff changeset
239 },
764
a6a8fe89eb84 client: add hooks for identify mode
Bernhard Reiter <bernhard@intevation.de>
parents: 754
diff changeset
240 activateIdentifyMode() {
957
93364f153da4 Backed out changeset c2b03f4755b6
Thomas Junk <thomas.junk@intevation.de>
parents: 956
diff changeset
241 this.openLayersMap.on("singleclick", event => {
1063
7ec2133c6404 client: add area measurement. simpify code
Bernhard Reiter <bernhard@intevation.de>
parents: 1062
diff changeset
242 this.identify(event.coordinate, event.pixel);
7ec2133c6404 client: add area measurement. simpify code
Bernhard Reiter <bernhard@intevation.de>
parents: 1062
diff changeset
243 });
7ec2133c6404 client: add area measurement. simpify code
Bernhard Reiter <bernhard@intevation.de>
parents: 1062
diff changeset
244 this.openLayersMap.on("dblclick", event => {
765
c1baaff348b0 client: add code to identify WFS features
Bernhard Reiter <bernhard@intevation.de>
parents: 764
diff changeset
245 this.identify(event.coordinate, event.pixel);
764
a6a8fe89eb84 client: add hooks for identify mode
Bernhard Reiter <bernhard@intevation.de>
parents: 754
diff changeset
246 });
a6a8fe89eb84 client: add hooks for identify mode
Bernhard Reiter <bernhard@intevation.de>
parents: 754
diff changeset
247 },
765
c1baaff348b0 client: add code to identify WFS features
Bernhard Reiter <bernhard@intevation.de>
parents: 764
diff changeset
248 identify(coordinate, pixel) {
975
3da707172772 refac: removed technical debt
Thomas Junk <thomas.junk@intevation.de>
parents: 957
diff changeset
249 this.$store.commit("identifystore/setIdentifiedFeatures", []);
765
c1baaff348b0 client: add code to identify WFS features
Bernhard Reiter <bernhard@intevation.de>
parents: 764
diff changeset
250 // checking our WFS layers
957
93364f153da4 Backed out changeset c2b03f4755b6
Thomas Junk <thomas.junk@intevation.de>
parents: 956
diff changeset
251 var features = this.openLayersMap.getFeaturesAtPixel(pixel);
975
3da707172772 refac: removed technical debt
Thomas Junk <thomas.junk@intevation.de>
parents: 957
diff changeset
252 this.$store.commit("identifystore/setIdentifiedFeatures", features);
770
c12ec7fde3f2 client: add simple identify top area box
Bernhard Reiter <bernhard@intevation.de>
parents: 767
diff changeset
253
c12ec7fde3f2 client: add simple identify top area box
Bernhard Reiter <bernhard@intevation.de>
parents: 767
diff changeset
254 // DEBUG output and example how to remove the GeometryName
c12ec7fde3f2 client: add simple identify top area box
Bernhard Reiter <bernhard@intevation.de>
parents: 767
diff changeset
255 /*
765
c1baaff348b0 client: add code to identify WFS features
Bernhard Reiter <bernhard@intevation.de>
parents: 764
diff changeset
256 for (let feature of features) {
c1baaff348b0 client: add code to identify WFS features
Bernhard Reiter <bernhard@intevation.de>
parents: 764
diff changeset
257 console.log("Identified:", feature.getId());
c1baaff348b0 client: add code to identify WFS features
Bernhard Reiter <bernhard@intevation.de>
parents: 764
diff changeset
258 for (let key of feature.getKeys()) {
c1baaff348b0 client: add code to identify WFS features
Bernhard Reiter <bernhard@intevation.de>
parents: 764
diff changeset
259 if (key != feature.getGeometryName()) {
c1baaff348b0 client: add code to identify WFS features
Bernhard Reiter <bernhard@intevation.de>
parents: 764
diff changeset
260 console.log(key, feature.get(key));
c1baaff348b0 client: add code to identify WFS features
Bernhard Reiter <bernhard@intevation.de>
parents: 764
diff changeset
261 }
c1baaff348b0 client: add code to identify WFS features
Bernhard Reiter <bernhard@intevation.de>
parents: 764
diff changeset
262 }
c1baaff348b0 client: add code to identify WFS features
Bernhard Reiter <bernhard@intevation.de>
parents: 764
diff changeset
263 }
770
c12ec7fde3f2 client: add simple identify top area box
Bernhard Reiter <bernhard@intevation.de>
parents: 767
diff changeset
264 */
765
c1baaff348b0 client: add code to identify WFS features
Bernhard Reiter <bernhard@intevation.de>
parents: 764
diff changeset
265
c1baaff348b0 client: add code to identify WFS features
Bernhard Reiter <bernhard@intevation.de>
parents: 764
diff changeset
266 // trying the GetFeatureInfo way for WMS
957
93364f153da4 Backed out changeset c2b03f4755b6
Thomas Junk <thomas.junk@intevation.de>
parents: 956
diff changeset
267 var wmsSource = this.getLayerByName(
765
c1baaff348b0 client: add code to identify WFS features
Bernhard Reiter <bernhard@intevation.de>
parents: 764
diff changeset
268 "Inland ECDIS chart Danube"
c1baaff348b0 client: add code to identify WFS features
Bernhard Reiter <bernhard@intevation.de>
parents: 764
diff changeset
269 ).data.getSource();
764
a6a8fe89eb84 client: add hooks for identify mode
Bernhard Reiter <bernhard@intevation.de>
parents: 754
diff changeset
270 var url = wmsSource.getGetFeatureInfoUrl(
a6a8fe89eb84 client: add hooks for identify mode
Bernhard Reiter <bernhard@intevation.de>
parents: 754
diff changeset
271 coordinate,
765
c1baaff348b0 client: add code to identify WFS features
Bernhard Reiter <bernhard@intevation.de>
parents: 764
diff changeset
272 100 /* resolution */,
764
a6a8fe89eb84 client: add hooks for identify mode
Bernhard Reiter <bernhard@intevation.de>
parents: 754
diff changeset
273 "EPSG:3857",
a6a8fe89eb84 client: add hooks for identify mode
Bernhard Reiter <bernhard@intevation.de>
parents: 754
diff changeset
274 // { INFO_FORMAT: "application/vnd.ogc.gml" } // not allowed by d4d
a6a8fe89eb84 client: add hooks for identify mode
Bernhard Reiter <bernhard@intevation.de>
parents: 754
diff changeset
275 { INFO_FORMAT: "text/plain" }
a6a8fe89eb84 client: add hooks for identify mode
Bernhard Reiter <bernhard@intevation.de>
parents: 754
diff changeset
276 );
a6a8fe89eb84 client: add hooks for identify mode
Bernhard Reiter <bernhard@intevation.de>
parents: 754
diff changeset
277
a6a8fe89eb84 client: add hooks for identify mode
Bernhard Reiter <bernhard@intevation.de>
parents: 754
diff changeset
278 if (url) {
a6a8fe89eb84 client: add hooks for identify mode
Bernhard Reiter <bernhard@intevation.de>
parents: 754
diff changeset
279 // cannot directly query here because of SOP
765
c1baaff348b0 client: add code to identify WFS features
Bernhard Reiter <bernhard@intevation.de>
parents: 764
diff changeset
280 console.log("GetFeatureInfo url:", url);
764
a6a8fe89eb84 client: add hooks for identify mode
Bernhard Reiter <bernhard@intevation.de>
parents: 754
diff changeset
281 }
a6a8fe89eb84 client: add hooks for identify mode
Bernhard Reiter <bernhard@intevation.de>
parents: 754
diff changeset
282 },
701
8149772c62d6 client: add bbox loading strategy to riverkilometre
Bernhard Reiter <bernhard@intevation.de>
parents: 690
diff changeset
283 buildVectorLoader(featureRequestOptions, endpoint, vectorSource) {
8149772c62d6 client: add bbox loading strategy to riverkilometre
Bernhard Reiter <bernhard@intevation.de>
parents: 690
diff changeset
284 // build a function to be used for VectorSource.setLoader()
8149772c62d6 client: add bbox loading strategy to riverkilometre
Bernhard Reiter <bernhard@intevation.de>
parents: 690
diff changeset
285 // make use of WFS().writeGetFeature to build the request
8149772c62d6 client: add bbox loading strategy to riverkilometre
Bernhard Reiter <bernhard@intevation.de>
parents: 690
diff changeset
286 // and use our HTTP library to actually do it
703
e9c28c42c927 client: improve WFS loader
Bernhard Reiter <bernhard@intevation.de>
parents: 702
diff changeset
287 // NOTE: a) the geometryName has to be given in featureRequestOptions,
e9c28c42c927 client: improve WFS loader
Bernhard Reiter <bernhard@intevation.de>
parents: 702
diff changeset
288 // because we want to load depending on the bbox
e9c28c42c927 client: improve WFS loader
Bernhard Reiter <bernhard@intevation.de>
parents: 702
diff changeset
289 // b) the VectorSource has to have the option strategy: bbox
701
8149772c62d6 client: add bbox loading strategy to riverkilometre
Bernhard Reiter <bernhard@intevation.de>
parents: 690
diff changeset
290 featureRequestOptions["outputFormat"] = "application/json";
702
aaf5dbfb9512 client: improve loading of WFS features
Bernhard Reiter <bernhard@intevation.de>
parents: 701
diff changeset
291 var loader = function(extent, resolution, projection) {
701
8149772c62d6 client: add bbox loading strategy to riverkilometre
Bernhard Reiter <bernhard@intevation.de>
parents: 690
diff changeset
292 featureRequestOptions["bbox"] = extent;
702
aaf5dbfb9512 client: improve loading of WFS features
Bernhard Reiter <bernhard@intevation.de>
parents: 701
diff changeset
293 featureRequestOptions["srsName"] = projection.getCode();
701
8149772c62d6 client: add bbox loading strategy to riverkilometre
Bernhard Reiter <bernhard@intevation.de>
parents: 690
diff changeset
294 var featureRequest = new WFS().writeGetFeature(featureRequestOptions);
8149772c62d6 client: add bbox loading strategy to riverkilometre
Bernhard Reiter <bernhard@intevation.de>
parents: 690
diff changeset
295 // DEBUG console.log(featureRequest);
8149772c62d6 client: add bbox loading strategy to riverkilometre
Bernhard Reiter <bernhard@intevation.de>
parents: 690
diff changeset
296 HTTP.post(
8149772c62d6 client: add bbox loading strategy to riverkilometre
Bernhard Reiter <bernhard@intevation.de>
parents: 690
diff changeset
297 endpoint,
8149772c62d6 client: add bbox loading strategy to riverkilometre
Bernhard Reiter <bernhard@intevation.de>
parents: 690
diff changeset
298 new XMLSerializer().serializeToString(featureRequest),
8149772c62d6 client: add bbox loading strategy to riverkilometre
Bernhard Reiter <bernhard@intevation.de>
parents: 690
diff changeset
299 {
8149772c62d6 client: add bbox loading strategy to riverkilometre
Bernhard Reiter <bernhard@intevation.de>
parents: 690
diff changeset
300 headers: {
8149772c62d6 client: add bbox loading strategy to riverkilometre
Bernhard Reiter <bernhard@intevation.de>
parents: 690
diff changeset
301 "X-Gemma-Auth": localStorage.getItem("token"),
8149772c62d6 client: add bbox loading strategy to riverkilometre
Bernhard Reiter <bernhard@intevation.de>
parents: 690
diff changeset
302 "Content-type": "text/xml; charset=UTF-8"
8149772c62d6 client: add bbox loading strategy to riverkilometre
Bernhard Reiter <bernhard@intevation.de>
parents: 690
diff changeset
303 }
8149772c62d6 client: add bbox loading strategy to riverkilometre
Bernhard Reiter <bernhard@intevation.de>
parents: 690
diff changeset
304 }
8149772c62d6 client: add bbox loading strategy to riverkilometre
Bernhard Reiter <bernhard@intevation.de>
parents: 690
diff changeset
305 )
8149772c62d6 client: add bbox loading strategy to riverkilometre
Bernhard Reiter <bernhard@intevation.de>
parents: 690
diff changeset
306 .then(response => {
8149772c62d6 client: add bbox loading strategy to riverkilometre
Bernhard Reiter <bernhard@intevation.de>
parents: 690
diff changeset
307 var features = new GeoJSON().readFeatures(
8149772c62d6 client: add bbox loading strategy to riverkilometre
Bernhard Reiter <bernhard@intevation.de>
parents: 690
diff changeset
308 JSON.stringify(response.data)
8149772c62d6 client: add bbox loading strategy to riverkilometre
Bernhard Reiter <bernhard@intevation.de>
parents: 690
diff changeset
309 );
8149772c62d6 client: add bbox loading strategy to riverkilometre
Bernhard Reiter <bernhard@intevation.de>
parents: 690
diff changeset
310 vectorSource.addFeatures(features);
754
105c421f99b1 refac: small improvements to code structure
Thomas Junk <thomas.junk@intevation.de>
parents: 752
diff changeset
311 // console.log(
105c421f99b1 refac: small improvements to code structure
Thomas Junk <thomas.junk@intevation.de>
parents: 752
diff changeset
312 // "loaded",
105c421f99b1 refac: small improvements to code structure
Thomas Junk <thomas.junk@intevation.de>
parents: 752
diff changeset
313 // features.length,
105c421f99b1 refac: small improvements to code structure
Thomas Junk <thomas.junk@intevation.de>
parents: 752
diff changeset
314 // featureRequestOptions.featureTypes,
105c421f99b1 refac: small improvements to code structure
Thomas Junk <thomas.junk@intevation.de>
parents: 752
diff changeset
315 // "features"
105c421f99b1 refac: small improvements to code structure
Thomas Junk <thomas.junk@intevation.de>
parents: 752
diff changeset
316 // );
701
8149772c62d6 client: add bbox loading strategy to riverkilometre
Bernhard Reiter <bernhard@intevation.de>
parents: 690
diff changeset
317 // DEBUG console.log("loaded ", features, "for", vectorSource);
8149772c62d6 client: add bbox loading strategy to riverkilometre
Bernhard Reiter <bernhard@intevation.de>
parents: 690
diff changeset
318 // eslint-disable-next-line
713
badbc0207418 feat: systeminformation feature added
Thomas Junk <thomas.junk@intevation.de>
parents: 709
diff changeset
319 })
badbc0207418 feat: systeminformation feature added
Thomas Junk <thomas.junk@intevation.de>
parents: 709
diff changeset
320 .catch(() => {
701
8149772c62d6 client: add bbox loading strategy to riverkilometre
Bernhard Reiter <bernhard@intevation.de>
parents: 690
diff changeset
321 vectorSource.removeLoadedExtent(extent);
8149772c62d6 client: add bbox loading strategy to riverkilometre
Bernhard Reiter <bernhard@intevation.de>
parents: 690
diff changeset
322 });
8149772c62d6 client: add bbox loading strategy to riverkilometre
Bernhard Reiter <bernhard@intevation.de>
parents: 690
diff changeset
323 };
8149772c62d6 client: add bbox loading strategy to riverkilometre
Bernhard Reiter <bernhard@intevation.de>
parents: 690
diff changeset
324 return loader;
842
ee6f127f573c client: add first prototype for bottleneck iso layer
Bernhard Reiter <bernhard@intevation.de>
parents: 832
diff changeset
325 },
860
38b682eaa7b1 client: add updateing of bottleneck filter
Bernhard Reiter <bernhard@intevation.de>
parents: 859
diff changeset
326 updateBottleneckFilter(bottleneck_id, datestr) {
38b682eaa7b1 client: add updateing of bottleneck filter
Bernhard Reiter <bernhard@intevation.de>
parents: 859
diff changeset
327 console.log("updating filter with", bottleneck_id, datestr);
957
93364f153da4 Backed out changeset c2b03f4755b6
Thomas Junk <thomas.junk@intevation.de>
parents: 956
diff changeset
328 var layer = this.getLayerByName("Bottleneck isolines");
918
054561be4d68 Switch bottleneck isolines layer off, when selection is empty.
Sascha Wilde <wilde@intevation.de>
parents: 902
diff changeset
329 var wmsSrc = layer.data.getSource();
054561be4d68 Switch bottleneck isolines layer off, when selection is empty.
Sascha Wilde <wilde@intevation.de>
parents: 902
diff changeset
330
054561be4d68 Switch bottleneck isolines layer off, when selection is empty.
Sascha Wilde <wilde@intevation.de>
parents: 902
diff changeset
331 if (bottleneck_id != "does_not_exist") {
054561be4d68 Switch bottleneck isolines layer off, when selection is empty.
Sascha Wilde <wilde@intevation.de>
parents: 902
diff changeset
332 wmsSrc.updateParams({
054561be4d68 Switch bottleneck isolines layer off, when selection is empty.
Sascha Wilde <wilde@intevation.de>
parents: 902
diff changeset
333 cql_filter:
054561be4d68 Switch bottleneck isolines layer off, when selection is empty.
Sascha Wilde <wilde@intevation.de>
parents: 902
diff changeset
334 "date_info='" +
054561be4d68 Switch bottleneck isolines layer off, when selection is empty.
Sascha Wilde <wilde@intevation.de>
parents: 902
diff changeset
335 datestr +
054561be4d68 Switch bottleneck isolines layer off, when selection is empty.
Sascha Wilde <wilde@intevation.de>
parents: 902
diff changeset
336 "' AND bottleneck_id='" +
054561be4d68 Switch bottleneck isolines layer off, when selection is empty.
Sascha Wilde <wilde@intevation.de>
parents: 902
diff changeset
337 bottleneck_id +
054561be4d68 Switch bottleneck isolines layer off, when selection is empty.
Sascha Wilde <wilde@intevation.de>
parents: 902
diff changeset
338 "'"
054561be4d68 Switch bottleneck isolines layer off, when selection is empty.
Sascha Wilde <wilde@intevation.de>
parents: 902
diff changeset
339 });
054561be4d68 Switch bottleneck isolines layer off, when selection is empty.
Sascha Wilde <wilde@intevation.de>
parents: 902
diff changeset
340 layer.isVisible = true;
054561be4d68 Switch bottleneck isolines layer off, when selection is empty.
Sascha Wilde <wilde@intevation.de>
parents: 902
diff changeset
341 layer.data.setVisible(true);
054561be4d68 Switch bottleneck isolines layer off, when selection is empty.
Sascha Wilde <wilde@intevation.de>
parents: 902
diff changeset
342 } else {
054561be4d68 Switch bottleneck isolines layer off, when selection is empty.
Sascha Wilde <wilde@intevation.de>
parents: 902
diff changeset
343 layer.isVisible = false;
054561be4d68 Switch bottleneck isolines layer off, when selection is empty.
Sascha Wilde <wilde@intevation.de>
parents: 902
diff changeset
344 layer.data.setVisible(false);
054561be4d68 Switch bottleneck isolines layer off, when selection is empty.
Sascha Wilde <wilde@intevation.de>
parents: 902
diff changeset
345 }
879
52fe3e20f750 client: improve print styling
Bernhard Reiter <bernhard@intevation.de>
parents: 865
diff changeset
346 },
52fe3e20f750 client: improve print styling
Bernhard Reiter <bernhard@intevation.de>
parents: 865
diff changeset
347 onBeforePrint(/* evt */) {
52fe3e20f750 client: improve print styling
Bernhard Reiter <bernhard@intevation.de>
parents: 865
diff changeset
348 // console.log("onBeforePrint(", evt ,")");
52fe3e20f750 client: improve print styling
Bernhard Reiter <bernhard@intevation.de>
parents: 865
diff changeset
349 //
52fe3e20f750 client: improve print styling
Bernhard Reiter <bernhard@intevation.de>
parents: 865
diff changeset
350 // the following code shows how to get the current map canvas
52fe3e20f750 client: improve print styling
Bernhard Reiter <bernhard@intevation.de>
parents: 865
diff changeset
351 // and change it, however this does not work well enough, as
52fe3e20f750 client: improve print styling
Bernhard Reiter <bernhard@intevation.de>
parents: 865
diff changeset
352 // another mechanism seems to update the size again before the rendering
52fe3e20f750 client: improve print styling
Bernhard Reiter <bernhard@intevation.de>
parents: 865
diff changeset
353 // for printing is done:
957
93364f153da4 Backed out changeset c2b03f4755b6
Thomas Junk <thomas.junk@intevation.de>
parents: 956
diff changeset
354 // console.log(this.openLayersMap.getViewport());
93364f153da4 Backed out changeset c2b03f4755b6
Thomas Junk <thomas.junk@intevation.de>
parents: 956
diff changeset
355 // var canvas = this.openLayersMap.getViewport().getElementsByTagName("canvas")[0];
879
52fe3e20f750 client: improve print styling
Bernhard Reiter <bernhard@intevation.de>
parents: 865
diff changeset
356 // console.log(canvas);
52fe3e20f750 client: improve print styling
Bernhard Reiter <bernhard@intevation.de>
parents: 865
diff changeset
357 // canvas.width=1000;
52fe3e20f750 client: improve print styling
Bernhard Reiter <bernhard@intevation.de>
parents: 865
diff changeset
358 // canvas.height=1414;
52fe3e20f750 client: improve print styling
Bernhard Reiter <bernhard@intevation.de>
parents: 865
diff changeset
359 //
52fe3e20f750 client: improve print styling
Bernhard Reiter <bernhard@intevation.de>
parents: 865
diff changeset
360 // An experiment which also did not work:
957
93364f153da4 Backed out changeset c2b03f4755b6
Thomas Junk <thomas.junk@intevation.de>
parents: 956
diff changeset
361 // this.openLayersMap.setSize([1000, 1414]); // estimate portait DIN A4
879
52fe3e20f750 client: improve print styling
Bernhard Reiter <bernhard@intevation.de>
parents: 865
diff changeset
362 //
52fe3e20f750 client: improve print styling
Bernhard Reiter <bernhard@intevation.de>
parents: 865
diff changeset
363 // according to documentation
52fe3e20f750 client: improve print styling
Bernhard Reiter <bernhard@intevation.de>
parents: 865
diff changeset
364 // http://openlayers.org/en/latest/apidoc/module-ol_PluggableMap-PluggableMap.html#updateSize
52fe3e20f750 client: improve print styling
Bernhard Reiter <bernhard@intevation.de>
parents: 865
diff changeset
365 // "Force a recalculation of the map viewport size. This should be called when third-party code changes the size of the map viewport."
52fe3e20f750 client: improve print styling
Bernhard Reiter <bernhard@intevation.de>
parents: 865
diff changeset
366 // but did not help
957
93364f153da4 Backed out changeset c2b03f4755b6
Thomas Junk <thomas.junk@intevation.de>
parents: 956
diff changeset
367 // this.openLayersMap.updateSize();
879
52fe3e20f750 client: improve print styling
Bernhard Reiter <bernhard@intevation.de>
parents: 865
diff changeset
368 },
52fe3e20f750 client: improve print styling
Bernhard Reiter <bernhard@intevation.de>
parents: 865
diff changeset
369 onAfterPrint(/* evt */) {
52fe3e20f750 client: improve print styling
Bernhard Reiter <bernhard@intevation.de>
parents: 865
diff changeset
370 // could be used to undo changes that have been done for printing
52fe3e20f750 client: improve print styling
Bernhard Reiter <bernhard@intevation.de>
parents: 865
diff changeset
371 // though https://www.tjvantoll.com/2012/06/15/detecting-print-requests-with-javascript/
52fe3e20f750 client: improve print styling
Bernhard Reiter <bernhard@intevation.de>
parents: 865
diff changeset
372 // reported that this was not feasable (back then).
52fe3e20f750 client: improve print styling
Bernhard Reiter <bernhard@intevation.de>
parents: 865
diff changeset
373 // console.log("onAfterPrint(", evt, ")");
649
83081ba6c9c1 feat: Linetool added
Thomas Junk <thomas.junk@intevation.de>
parents: 630
diff changeset
374 }
83081ba6c9c1 feat: Linetool added
Thomas Junk <thomas.junk@intevation.de>
parents: 630
diff changeset
375 },
593
c4a4dc612191 feat: Toggleable fairway profile
Thomas Junk <thomas.junk@intevation.de>
parents: 585
diff changeset
376 watch: {
1063
7ec2133c6404 client: add area measurement. simpify code
Bernhard Reiter <bernhard@intevation.de>
parents: 1062
diff changeset
377 drawMode(newValue) {
649
83081ba6c9c1 feat: Linetool added
Thomas Junk <thomas.junk@intevation.de>
parents: 630
diff changeset
378 if (this.interaction) {
83081ba6c9c1 feat: Linetool added
Thomas Junk <thomas.junk@intevation.de>
parents: 630
diff changeset
379 this.removeCurrentInteraction();
1063
7ec2133c6404 client: add area measurement. simpify code
Bernhard Reiter <bernhard@intevation.de>
parents: 1062
diff changeset
380 }
7ec2133c6404 client: add area measurement. simpify code
Bernhard Reiter <bernhard@intevation.de>
parents: 1062
diff changeset
381 if (newValue) {
649
83081ba6c9c1 feat: Linetool added
Thomas Junk <thomas.junk@intevation.de>
parents: 630
diff changeset
382 this.activateInteraction();
83081ba6c9c1 feat: Linetool added
Thomas Junk <thomas.junk@intevation.de>
parents: 630
diff changeset
383 }
83081ba6c9c1 feat: Linetool added
Thomas Junk <thomas.junk@intevation.de>
parents: 630
diff changeset
384 },
593
c4a4dc612191 feat: Toggleable fairway profile
Thomas Junk <thomas.junk@intevation.de>
parents: 585
diff changeset
385 split() {
957
93364f153da4 Backed out changeset c2b03f4755b6
Thomas Junk <thomas.junk@intevation.de>
parents: 956
diff changeset
386 const map = this.openLayersMap;
594
6987b5c926b8 fix: leveraging vue.nexttick instead of timeout
Thomas Junk <thomas.junk@intevation.de>
parents: 593
diff changeset
387 this.$nextTick(() => {
593
c4a4dc612191 feat: Toggleable fairway profile
Thomas Junk <thomas.junk@intevation.de>
parents: 585
diff changeset
388 map.updateSize();
594
6987b5c926b8 fix: leveraging vue.nexttick instead of timeout
Thomas Junk <thomas.junk@intevation.de>
parents: 593
diff changeset
389 });
860
38b682eaa7b1 client: add updateing of bottleneck filter
Bernhard Reiter <bernhard@intevation.de>
parents: 859
diff changeset
390 },
38b682eaa7b1 client: add updateing of bottleneck filter
Bernhard Reiter <bernhard@intevation.de>
parents: 859
diff changeset
391 selectedMorph(newSelectedMorph) {
861
aa4aaf04d41e client: improve update of bottleneck filters
Bernhard Reiter <bernhard@intevation.de>
parents: 860
diff changeset
392 if (newSelectedMorph) {
aa4aaf04d41e client: improve update of bottleneck filters
Bernhard Reiter <bernhard@intevation.de>
parents: 860
diff changeset
393 this.updateBottleneckFilter(
aa4aaf04d41e client: improve update of bottleneck filters
Bernhard Reiter <bernhard@intevation.de>
parents: 860
diff changeset
394 newSelectedMorph.bottleneck_id,
aa4aaf04d41e client: improve update of bottleneck filters
Bernhard Reiter <bernhard@intevation.de>
parents: 860
diff changeset
395 newSelectedMorph.date_info
aa4aaf04d41e client: improve update of bottleneck filters
Bernhard Reiter <bernhard@intevation.de>
parents: 860
diff changeset
396 );
aa4aaf04d41e client: improve update of bottleneck filters
Bernhard Reiter <bernhard@intevation.de>
parents: 860
diff changeset
397 } else {
aa4aaf04d41e client: improve update of bottleneck filters
Bernhard Reiter <bernhard@intevation.de>
parents: 860
diff changeset
398 this.updateBottleneckFilter("does_not_exist", "1999-10-01");
aa4aaf04d41e client: improve update of bottleneck filters
Bernhard Reiter <bernhard@intevation.de>
parents: 860
diff changeset
399 }
593
c4a4dc612191 feat: Toggleable fairway profile
Thomas Junk <thomas.junk@intevation.de>
parents: 585
diff changeset
400 }
c4a4dc612191 feat: Toggleable fairway profile
Thomas Junk <thomas.junk@intevation.de>
parents: 585
diff changeset
401 },
585
ef307bd6b5d8 refac: restructured client application
Thomas Junk <thomas.junk@intevation.de>
parents:
diff changeset
402 mounted() {
649
83081ba6c9c1 feat: Linetool added
Thomas Junk <thomas.junk@intevation.de>
parents: 630
diff changeset
403 this.createVectorSource();
83081ba6c9c1 feat: Linetool added
Thomas Junk <thomas.junk@intevation.de>
parents: 630
diff changeset
404 this.createVectorLayer();
783
ab9604a46075 client: add move after clicking search result
Bernhard Reiter <bernhard@intevation.de>
parents: 782
diff changeset
405 let map = new Map({
585
ef307bd6b5d8 refac: restructured client application
Thomas Junk <thomas.junk@intevation.de>
parents:
diff changeset
406 layers: this.layerData,
ef307bd6b5d8 refac: restructured client application
Thomas Junk <thomas.junk@intevation.de>
parents:
diff changeset
407 target: "map",
649
83081ba6c9c1 feat: Linetool added
Thomas Junk <thomas.junk@intevation.de>
parents: 630
diff changeset
408 controls: [],
585
ef307bd6b5d8 refac: restructured client application
Thomas Junk <thomas.junk@intevation.de>
parents:
diff changeset
409 view: new View({
ef307bd6b5d8 refac: restructured client application
Thomas Junk <thomas.junk@intevation.de>
parents:
diff changeset
410 center: [this.long, this.lat],
ef307bd6b5d8 refac: restructured client application
Thomas Junk <thomas.junk@intevation.de>
parents:
diff changeset
411 zoom: this.zoom,
ef307bd6b5d8 refac: restructured client application
Thomas Junk <thomas.junk@intevation.de>
parents:
diff changeset
412 projection: this.projection
ef307bd6b5d8 refac: restructured client application
Thomas Junk <thomas.junk@intevation.de>
parents:
diff changeset
413 })
ef307bd6b5d8 refac: restructured client application
Thomas Junk <thomas.junk@intevation.de>
parents:
diff changeset
414 });
957
93364f153da4 Backed out changeset c2b03f4755b6
Thomas Junk <thomas.junk@intevation.de>
parents: 956
diff changeset
415 this.$store.commit("mapstore/setOpenLayersMap", map);
585
ef307bd6b5d8 refac: restructured client application
Thomas Junk <thomas.junk@intevation.de>
parents:
diff changeset
416
733
e57955c1996f client: improve code structure
Bernhard Reiter <bernhard@intevation.de>
parents: 716
diff changeset
417 // TODO make display of layers more dynamic, e.g. from a list
e57955c1996f client: improve code structure
Bernhard Reiter <bernhard@intevation.de>
parents: 716
diff changeset
418
e57955c1996f client: improve code structure
Bernhard Reiter <bernhard@intevation.de>
parents: 716
diff changeset
419 // loading the full WFS layer, by not setting the loader function
e57955c1996f client: improve code structure
Bernhard Reiter <bernhard@intevation.de>
parents: 716
diff changeset
420 // and without bboxStrategy
628
ef9c733cc6aa client: show more wfs layers
Bernhard Reiter <bernhard@intevation.de>
parents: 626
diff changeset
421 var featureRequest2 = new WFS().writeGetFeature({
585
ef307bd6b5d8 refac: restructured client application
Thomas Junk <thomas.junk@intevation.de>
parents:
diff changeset
422 srsName: "EPSG:3857",
ef307bd6b5d8 refac: restructured client application
Thomas Junk <thomas.junk@intevation.de>
parents:
diff changeset
423 featureNS: "gemma",
ef307bd6b5d8 refac: restructured client application
Thomas Junk <thomas.junk@intevation.de>
parents:
diff changeset
424 featurePrefix: "gemma",
ef307bd6b5d8 refac: restructured client application
Thomas Junk <thomas.junk@intevation.de>
parents:
diff changeset
425 featureTypes: ["fairway_dimensions"],
ef307bd6b5d8 refac: restructured client application
Thomas Junk <thomas.junk@intevation.de>
parents:
diff changeset
426 outputFormat: "application/json"
ef307bd6b5d8 refac: restructured client application
Thomas Junk <thomas.junk@intevation.de>
parents:
diff changeset
427 });
ef307bd6b5d8 refac: restructured client application
Thomas Junk <thomas.junk@intevation.de>
parents:
diff changeset
428
733
e57955c1996f client: improve code structure
Bernhard Reiter <bernhard@intevation.de>
parents: 716
diff changeset
429 // NOTE: loading the full fairway_dimensions makes sure
e57955c1996f client: improve code structure
Bernhard Reiter <bernhard@intevation.de>
parents: 716
diff changeset
430 // that all are available for the intersection with the profile
585
ef307bd6b5d8 refac: restructured client application
Thomas Junk <thomas.junk@intevation.de>
parents:
diff changeset
431 HTTP.post(
ef307bd6b5d8 refac: restructured client application
Thomas Junk <thomas.junk@intevation.de>
parents:
diff changeset
432 "/internal/wfs",
628
ef9c733cc6aa client: show more wfs layers
Bernhard Reiter <bernhard@intevation.de>
parents: 626
diff changeset
433 new XMLSerializer().serializeToString(featureRequest2),
585
ef307bd6b5d8 refac: restructured client application
Thomas Junk <thomas.junk@intevation.de>
parents:
diff changeset
434 {
ef307bd6b5d8 refac: restructured client application
Thomas Junk <thomas.junk@intevation.de>
parents:
diff changeset
435 headers: {
ef307bd6b5d8 refac: restructured client application
Thomas Junk <thomas.junk@intevation.de>
parents:
diff changeset
436 "X-Gemma-Auth": localStorage.getItem("token"),
ef307bd6b5d8 refac: restructured client application
Thomas Junk <thomas.junk@intevation.de>
parents:
diff changeset
437 "Content-type": "text/xml; charset=UTF-8"
ef307bd6b5d8 refac: restructured client application
Thomas Junk <thomas.junk@intevation.de>
parents:
diff changeset
438 }
ef307bd6b5d8 refac: restructured client application
Thomas Junk <thomas.junk@intevation.de>
parents:
diff changeset
439 }
649
83081ba6c9c1 feat: Linetool added
Thomas Junk <thomas.junk@intevation.de>
parents: 630
diff changeset
440 ).then(response => {
585
ef307bd6b5d8 refac: restructured client application
Thomas Junk <thomas.junk@intevation.de>
parents:
diff changeset
441 var features = new GeoJSON().readFeatures(JSON.stringify(response.data));
957
93364f153da4 Backed out changeset c2b03f4755b6
Thomas Junk <thomas.junk@intevation.de>
parents: 956
diff changeset
442 var vectorSrc = this.getLayerByName(
733
e57955c1996f client: improve code structure
Bernhard Reiter <bernhard@intevation.de>
parents: 716
diff changeset
443 "Fairway Dimensions"
e57955c1996f client: improve code structure
Bernhard Reiter <bernhard@intevation.de>
parents: 716
diff changeset
444 ).data.getSource();
585
ef307bd6b5d8 refac: restructured client application
Thomas Junk <thomas.junk@intevation.de>
parents:
diff changeset
445 vectorSrc.addFeatures(features);
ef307bd6b5d8 refac: restructured client application
Thomas Junk <thomas.junk@intevation.de>
parents:
diff changeset
446 // would scale to the extend of all resulting features
957
93364f153da4 Backed out changeset c2b03f4755b6
Thomas Junk <thomas.junk@intevation.de>
parents: 956
diff changeset
447 // this.openLayersMap.getView().fit(vectorSrc.getExtent());
585
ef307bd6b5d8 refac: restructured client application
Thomas Junk <thomas.junk@intevation.de>
parents:
diff changeset
448 });
620
ef00684e021f client: add showing special buoys
Bernhard Reiter <bernhard@intevation.de>
parents: 594
diff changeset
449
733
e57955c1996f client: improve code structure
Bernhard Reiter <bernhard@intevation.de>
parents: 716
diff changeset
450 // load following layers with bboxStrategy (using our request builder)
e57955c1996f client: improve code structure
Bernhard Reiter <bernhard@intevation.de>
parents: 716
diff changeset
451 var layer = null;
620
ef00684e021f client: add showing special buoys
Bernhard Reiter <bernhard@intevation.de>
parents: 594
diff changeset
452
957
93364f153da4 Backed out changeset c2b03f4755b6
Thomas Junk <thomas.junk@intevation.de>
parents: 956
diff changeset
453 layer = this.getLayerByName("Waterway Area");
733
e57955c1996f client: improve code structure
Bernhard Reiter <bernhard@intevation.de>
parents: 716
diff changeset
454 layer.data.getSource().setLoader(
e57955c1996f client: improve code structure
Bernhard Reiter <bernhard@intevation.de>
parents: 716
diff changeset
455 this.buildVectorLoader(
e57955c1996f client: improve code structure
Bernhard Reiter <bernhard@intevation.de>
parents: 716
diff changeset
456 {
e57955c1996f client: improve code structure
Bernhard Reiter <bernhard@intevation.de>
parents: 716
diff changeset
457 featurePrefix: "ws-wamos",
e57955c1996f client: improve code structure
Bernhard Reiter <bernhard@intevation.de>
parents: 716
diff changeset
458 featureTypes: ["ienc_wtware"],
e57955c1996f client: improve code structure
Bernhard Reiter <bernhard@intevation.de>
parents: 716
diff changeset
459 geometryName: "geom"
e57955c1996f client: improve code structure
Bernhard Reiter <bernhard@intevation.de>
parents: 716
diff changeset
460 },
e57955c1996f client: improve code structure
Bernhard Reiter <bernhard@intevation.de>
parents: 716
diff changeset
461 "/external/d4d",
e57955c1996f client: improve code structure
Bernhard Reiter <bernhard@intevation.de>
parents: 716
diff changeset
462 layer.data.getSource()
e57955c1996f client: improve code structure
Bernhard Reiter <bernhard@intevation.de>
parents: 716
diff changeset
463 )
e57955c1996f client: improve code structure
Bernhard Reiter <bernhard@intevation.de>
parents: 716
diff changeset
464 );
628
ef9c733cc6aa client: show more wfs layers
Bernhard Reiter <bernhard@intevation.de>
parents: 626
diff changeset
465
957
93364f153da4 Backed out changeset c2b03f4755b6
Thomas Junk <thomas.junk@intevation.de>
parents: 956
diff changeset
466 layer = this.getLayerByName("Waterway Axis");
733
e57955c1996f client: improve code structure
Bernhard Reiter <bernhard@intevation.de>
parents: 716
diff changeset
467 layer.data.getSource().setLoader(
e57955c1996f client: improve code structure
Bernhard Reiter <bernhard@intevation.de>
parents: 716
diff changeset
468 this.buildVectorLoader(
e57955c1996f client: improve code structure
Bernhard Reiter <bernhard@intevation.de>
parents: 716
diff changeset
469 {
e57955c1996f client: improve code structure
Bernhard Reiter <bernhard@intevation.de>
parents: 716
diff changeset
470 featurePrefix: "ws-wamos",
e57955c1996f client: improve code structure
Bernhard Reiter <bernhard@intevation.de>
parents: 716
diff changeset
471 featureTypes: ["ienc_wtwaxs"],
e57955c1996f client: improve code structure
Bernhard Reiter <bernhard@intevation.de>
parents: 716
diff changeset
472 geometryName: "geom"
e57955c1996f client: improve code structure
Bernhard Reiter <bernhard@intevation.de>
parents: 716
diff changeset
473 },
e57955c1996f client: improve code structure
Bernhard Reiter <bernhard@intevation.de>
parents: 716
diff changeset
474 "/external/d4d",
e57955c1996f client: improve code structure
Bernhard Reiter <bernhard@intevation.de>
parents: 716
diff changeset
475 layer.data.getSource()
e57955c1996f client: improve code structure
Bernhard Reiter <bernhard@intevation.de>
parents: 716
diff changeset
476 )
e57955c1996f client: improve code structure
Bernhard Reiter <bernhard@intevation.de>
parents: 716
diff changeset
477 );
628
ef9c733cc6aa client: show more wfs layers
Bernhard Reiter <bernhard@intevation.de>
parents: 626
diff changeset
478
957
93364f153da4 Backed out changeset c2b03f4755b6
Thomas Junk <thomas.junk@intevation.de>
parents: 956
diff changeset
479 layer = this.getLayerByName("Distance marks");
733
e57955c1996f client: improve code structure
Bernhard Reiter <bernhard@intevation.de>
parents: 716
diff changeset
480 layer.data.getSource().setLoader(
e57955c1996f client: improve code structure
Bernhard Reiter <bernhard@intevation.de>
parents: 716
diff changeset
481 this.buildVectorLoader(
e57955c1996f client: improve code structure
Bernhard Reiter <bernhard@intevation.de>
parents: 716
diff changeset
482 {
e57955c1996f client: improve code structure
Bernhard Reiter <bernhard@intevation.de>
parents: 716
diff changeset
483 featurePrefix: "ws-wamos",
e57955c1996f client: improve code structure
Bernhard Reiter <bernhard@intevation.de>
parents: 716
diff changeset
484 featureTypes: ["ienc_dismar"],
e57955c1996f client: improve code structure
Bernhard Reiter <bernhard@intevation.de>
parents: 716
diff changeset
485 geometryName: "geom" //,
e57955c1996f client: improve code structure
Bernhard Reiter <bernhard@intevation.de>
parents: 716
diff changeset
486 /* restrict loading approximately to extend of danube in Austria */
e57955c1996f client: improve code structure
Bernhard Reiter <bernhard@intevation.de>
parents: 716
diff changeset
487 // filter: bboxFilter("geom", [13.3, 48.0, 17.1, 48.6], "EPSG:4326")
e57955c1996f client: improve code structure
Bernhard Reiter <bernhard@intevation.de>
parents: 716
diff changeset
488 },
e57955c1996f client: improve code structure
Bernhard Reiter <bernhard@intevation.de>
parents: 716
diff changeset
489 "/external/d4d",
e57955c1996f client: improve code structure
Bernhard Reiter <bernhard@intevation.de>
parents: 716
diff changeset
490 layer.data.getSource()
e57955c1996f client: improve code structure
Bernhard Reiter <bernhard@intevation.de>
parents: 716
diff changeset
491 )
e57955c1996f client: improve code structure
Bernhard Reiter <bernhard@intevation.de>
parents: 716
diff changeset
492 );
e57955c1996f client: improve code structure
Bernhard Reiter <bernhard@intevation.de>
parents: 716
diff changeset
493 layer.data.setVisible(layer.isVisible);
628
ef9c733cc6aa client: show more wfs layers
Bernhard Reiter <bernhard@intevation.de>
parents: 626
diff changeset
494
957
93364f153da4 Backed out changeset c2b03f4755b6
Thomas Junk <thomas.junk@intevation.de>
parents: 956
diff changeset
495 layer = this.getLayerByName("Distance marks, Axis");
733
e57955c1996f client: improve code structure
Bernhard Reiter <bernhard@intevation.de>
parents: 716
diff changeset
496 layer.data.getSource().setLoader(
e57955c1996f client: improve code structure
Bernhard Reiter <bernhard@intevation.de>
parents: 716
diff changeset
497 this.buildVectorLoader(
e57955c1996f client: improve code structure
Bernhard Reiter <bernhard@intevation.de>
parents: 716
diff changeset
498 {
e57955c1996f client: improve code structure
Bernhard Reiter <bernhard@intevation.de>
parents: 716
diff changeset
499 featureNS: "gemma",
e57955c1996f client: improve code structure
Bernhard Reiter <bernhard@intevation.de>
parents: 716
diff changeset
500 featurePrefix: "gemma",
e57955c1996f client: improve code structure
Bernhard Reiter <bernhard@intevation.de>
parents: 716
diff changeset
501 featureTypes: ["distance_marks_geoserver"],
e57955c1996f client: improve code structure
Bernhard Reiter <bernhard@intevation.de>
parents: 716
diff changeset
502 geometryName: "geom"
e57955c1996f client: improve code structure
Bernhard Reiter <bernhard@intevation.de>
parents: 716
diff changeset
503 },
e57955c1996f client: improve code structure
Bernhard Reiter <bernhard@intevation.de>
parents: 716
diff changeset
504 "/internal/wfs",
e57955c1996f client: improve code structure
Bernhard Reiter <bernhard@intevation.de>
parents: 716
diff changeset
505 layer.data.getSource()
e57955c1996f client: improve code structure
Bernhard Reiter <bernhard@intevation.de>
parents: 716
diff changeset
506 )
e57955c1996f client: improve code structure
Bernhard Reiter <bernhard@intevation.de>
parents: 716
diff changeset
507 );
745
f2691e0d4970 client: add wfs layer for named waterway areas.
Bernhard Reiter <bernhard@intevation.de>
parents: 738
diff changeset
508
957
93364f153da4 Backed out changeset c2b03f4755b6
Thomas Junk <thomas.junk@intevation.de>
parents: 956
diff changeset
509 layer = this.getLayerByName("Waterway Area, named");
745
f2691e0d4970 client: add wfs layer for named waterway areas.
Bernhard Reiter <bernhard@intevation.de>
parents: 738
diff changeset
510 layer.data.getSource().setLoader(
f2691e0d4970 client: add wfs layer for named waterway areas.
Bernhard Reiter <bernhard@intevation.de>
parents: 738
diff changeset
511 this.buildVectorLoader(
f2691e0d4970 client: add wfs layer for named waterway areas.
Bernhard Reiter <bernhard@intevation.de>
parents: 738
diff changeset
512 {
f2691e0d4970 client: add wfs layer for named waterway areas.
Bernhard Reiter <bernhard@intevation.de>
parents: 738
diff changeset
513 featureNS: "gemma",
f2691e0d4970 client: add wfs layer for named waterway areas.
Bernhard Reiter <bernhard@intevation.de>
parents: 738
diff changeset
514 featurePrefix: "gemma",
f2691e0d4970 client: add wfs layer for named waterway areas.
Bernhard Reiter <bernhard@intevation.de>
parents: 738
diff changeset
515 featureTypes: ["hydro_seaare"],
f2691e0d4970 client: add wfs layer for named waterway areas.
Bernhard Reiter <bernhard@intevation.de>
parents: 738
diff changeset
516 geometryName: "geom"
f2691e0d4970 client: add wfs layer for named waterway areas.
Bernhard Reiter <bernhard@intevation.de>
parents: 738
diff changeset
517 },
f2691e0d4970 client: add wfs layer for named waterway areas.
Bernhard Reiter <bernhard@intevation.de>
parents: 738
diff changeset
518 "/external/d4d",
f2691e0d4970 client: add wfs layer for named waterway areas.
Bernhard Reiter <bernhard@intevation.de>
parents: 738
diff changeset
519 layer.data.getSource()
f2691e0d4970 client: add wfs layer for named waterway areas.
Bernhard Reiter <bernhard@intevation.de>
parents: 738
diff changeset
520 )
f2691e0d4970 client: add wfs layer for named waterway areas.
Bernhard Reiter <bernhard@intevation.de>
parents: 738
diff changeset
521 );
f2691e0d4970 client: add wfs layer for named waterway areas.
Bernhard Reiter <bernhard@intevation.de>
parents: 738
diff changeset
522 layer.data.setVisible(layer.isVisible);
764
a6a8fe89eb84 client: add hooks for identify mode
Bernhard Reiter <bernhard@intevation.de>
parents: 754
diff changeset
523
957
93364f153da4 Backed out changeset c2b03f4755b6
Thomas Junk <thomas.junk@intevation.de>
parents: 956
diff changeset
524 layer = this.getLayerByName("Bottlenecks");
790
1b82ae5e637e client: add bottleneck layer with first styling
Bernhard Reiter <bernhard@intevation.de>
parents: 783
diff changeset
525 layer.data.getSource().setLoader(
1b82ae5e637e client: add bottleneck layer with first styling
Bernhard Reiter <bernhard@intevation.de>
parents: 783
diff changeset
526 this.buildVectorLoader(
1b82ae5e637e client: add bottleneck layer with first styling
Bernhard Reiter <bernhard@intevation.de>
parents: 783
diff changeset
527 {
1b82ae5e637e client: add bottleneck layer with first styling
Bernhard Reiter <bernhard@intevation.de>
parents: 783
diff changeset
528 featureNS: "gemma",
1b82ae5e637e client: add bottleneck layer with first styling
Bernhard Reiter <bernhard@intevation.de>
parents: 783
diff changeset
529 featurePrefix: "gemma",
1b82ae5e637e client: add bottleneck layer with first styling
Bernhard Reiter <bernhard@intevation.de>
parents: 783
diff changeset
530 featureTypes: ["bottlenecks"],
1b82ae5e637e client: add bottleneck layer with first styling
Bernhard Reiter <bernhard@intevation.de>
parents: 783
diff changeset
531 geometryName: "area"
1b82ae5e637e client: add bottleneck layer with first styling
Bernhard Reiter <bernhard@intevation.de>
parents: 783
diff changeset
532 },
1b82ae5e637e client: add bottleneck layer with first styling
Bernhard Reiter <bernhard@intevation.de>
parents: 783
diff changeset
533 "/internal/wfs",
1b82ae5e637e client: add bottleneck layer with first styling
Bernhard Reiter <bernhard@intevation.de>
parents: 783
diff changeset
534 layer.data.getSource()
1b82ae5e637e client: add bottleneck layer with first styling
Bernhard Reiter <bernhard@intevation.de>
parents: 783
diff changeset
535 )
1b82ae5e637e client: add bottleneck layer with first styling
Bernhard Reiter <bernhard@intevation.de>
parents: 783
diff changeset
536 );
858
e5ac0fb0c1c5 map styling: Very ugly hack to read bottleneck style from server.
Sascha Wilde <wilde@intevation.de>
parents: 848
diff changeset
537 HTTP.get("/system/style/Bottlenecks/stroke", {
e5ac0fb0c1c5 map styling: Very ugly hack to read bottleneck style from server.
Sascha Wilde <wilde@intevation.de>
parents: 848
diff changeset
538 headers: { "X-Gemma-Auth": localStorage.getItem("token") }
e5ac0fb0c1c5 map styling: Very ugly hack to read bottleneck style from server.
Sascha Wilde <wilde@intevation.de>
parents: 848
diff changeset
539 })
e5ac0fb0c1c5 map styling: Very ugly hack to read bottleneck style from server.
Sascha Wilde <wilde@intevation.de>
parents: 848
diff changeset
540 .then(response => {
e5ac0fb0c1c5 map styling: Very ugly hack to read bottleneck style from server.
Sascha Wilde <wilde@intevation.de>
parents: 848
diff changeset
541 this.btlnStrokeC = response.data.code;
e5ac0fb0c1c5 map styling: Very ugly hack to read bottleneck style from server.
Sascha Wilde <wilde@intevation.de>
parents: 848
diff changeset
542 HTTP.get("/system/style/Bottlenecks/fill", {
e5ac0fb0c1c5 map styling: Very ugly hack to read bottleneck style from server.
Sascha Wilde <wilde@intevation.de>
parents: 848
diff changeset
543 headers: { "X-Gemma-Auth": localStorage.getItem("token") }
e5ac0fb0c1c5 map styling: Very ugly hack to read bottleneck style from server.
Sascha Wilde <wilde@intevation.de>
parents: 848
diff changeset
544 })
e5ac0fb0c1c5 map styling: Very ugly hack to read bottleneck style from server.
Sascha Wilde <wilde@intevation.de>
parents: 848
diff changeset
545 .then(response => {
e5ac0fb0c1c5 map styling: Very ugly hack to read bottleneck style from server.
Sascha Wilde <wilde@intevation.de>
parents: 848
diff changeset
546 this.btlnFillC = response.data.code;
e5ac0fb0c1c5 map styling: Very ugly hack to read bottleneck style from server.
Sascha Wilde <wilde@intevation.de>
parents: 848
diff changeset
547 var newstyle = new Style({
e5ac0fb0c1c5 map styling: Very ugly hack to read bottleneck style from server.
Sascha Wilde <wilde@intevation.de>
parents: 848
diff changeset
548 stroke: new Stroke({
e5ac0fb0c1c5 map styling: Very ugly hack to read bottleneck style from server.
Sascha Wilde <wilde@intevation.de>
parents: 848
diff changeset
549 color: this.btlnStrokeC,
e5ac0fb0c1c5 map styling: Very ugly hack to read bottleneck style from server.
Sascha Wilde <wilde@intevation.de>
parents: 848
diff changeset
550 width: 4
e5ac0fb0c1c5 map styling: Very ugly hack to read bottleneck style from server.
Sascha Wilde <wilde@intevation.de>
parents: 848
diff changeset
551 }),
e5ac0fb0c1c5 map styling: Very ugly hack to read bottleneck style from server.
Sascha Wilde <wilde@intevation.de>
parents: 848
diff changeset
552 fill: new Fill({
e5ac0fb0c1c5 map styling: Very ugly hack to read bottleneck style from server.
Sascha Wilde <wilde@intevation.de>
parents: 848
diff changeset
553 color: this.btlnFillC
e5ac0fb0c1c5 map styling: Very ugly hack to read bottleneck style from server.
Sascha Wilde <wilde@intevation.de>
parents: 848
diff changeset
554 })
e5ac0fb0c1c5 map styling: Very ugly hack to read bottleneck style from server.
Sascha Wilde <wilde@intevation.de>
parents: 848
diff changeset
555 });
e5ac0fb0c1c5 map styling: Very ugly hack to read bottleneck style from server.
Sascha Wilde <wilde@intevation.de>
parents: 848
diff changeset
556 layer.data.setStyle(newstyle);
e5ac0fb0c1c5 map styling: Very ugly hack to read bottleneck style from server.
Sascha Wilde <wilde@intevation.de>
parents: 848
diff changeset
557 })
e5ac0fb0c1c5 map styling: Very ugly hack to read bottleneck style from server.
Sascha Wilde <wilde@intevation.de>
parents: 848
diff changeset
558 .catch(error => {
e5ac0fb0c1c5 map styling: Very ugly hack to read bottleneck style from server.
Sascha Wilde <wilde@intevation.de>
parents: 848
diff changeset
559 console.log(error);
e5ac0fb0c1c5 map styling: Very ugly hack to read bottleneck style from server.
Sascha Wilde <wilde@intevation.de>
parents: 848
diff changeset
560 });
848
22f7d33eee65 Make eslint happy again.
Sascha Wilde <wilde@intevation.de>
parents: 843
diff changeset
561 })
858
e5ac0fb0c1c5 map styling: Very ugly hack to read bottleneck style from server.
Sascha Wilde <wilde@intevation.de>
parents: 848
diff changeset
562 .catch(error => {
e5ac0fb0c1c5 map styling: Very ugly hack to read bottleneck style from server.
Sascha Wilde <wilde@intevation.de>
parents: 848
diff changeset
563 console.log(error);
e5ac0fb0c1c5 map styling: Very ugly hack to read bottleneck style from server.
Sascha Wilde <wilde@intevation.de>
parents: 848
diff changeset
564 });
790
1b82ae5e637e client: add bottleneck layer with first styling
Bernhard Reiter <bernhard@intevation.de>
parents: 783
diff changeset
565
879
52fe3e20f750 client: improve print styling
Bernhard Reiter <bernhard@intevation.de>
parents: 865
diff changeset
566 window.addEventListener("beforeprint", this.onBeforePrint);
52fe3e20f750 client: improve print styling
Bernhard Reiter <bernhard@intevation.de>
parents: 865
diff changeset
567 window.addEventListener("afterprint", this.onAfterPrint);
52fe3e20f750 client: improve print styling
Bernhard Reiter <bernhard@intevation.de>
parents: 865
diff changeset
568
842
ee6f127f573c client: add first prototype for bottleneck iso layer
Bernhard Reiter <bernhard@intevation.de>
parents: 832
diff changeset
569 // so none is shown
938
fe923c8ef08f client: add static legend image to contour_lines
Bernhard Reiter <bernhard@intevation.de>
parents: 918
diff changeset
570 this.updateBottleneckFilter("does_not_exist", "1999-10-01");
764
a6a8fe89eb84 client: add hooks for identify mode
Bernhard Reiter <bernhard@intevation.de>
parents: 754
diff changeset
571 this.activateIdentifyMode();
585
ef307bd6b5d8 refac: restructured client application
Thomas Junk <thomas.junk@intevation.de>
parents:
diff changeset
572 }
ef307bd6b5d8 refac: restructured client application
Thomas Junk <thomas.junk@intevation.de>
parents:
diff changeset
573 };
ef307bd6b5d8 refac: restructured client application
Thomas Junk <thomas.junk@intevation.de>
parents:
diff changeset
574 </script>