@eeacms/volto-eea-map 0.1.27 → 0.1.29
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md
CHANGED
|
@@ -4,14 +4,23 @@ All notable changes to this project will be documented in this file. Dates are d
|
|
|
4
4
|
|
|
5
5
|
Generated by [`auto-changelog`](https://github.com/CookPete/auto-changelog).
|
|
6
6
|
|
|
7
|
-
### [0.1.
|
|
7
|
+
### [0.1.29](https://github.com/eea/volto-eea-map/compare/0.1.28...0.1.29) - 19 October 2022
|
|
8
|
+
|
|
9
|
+
#### :hammer_and_wrench: Others
|
|
10
|
+
|
|
11
|
+
- Enable opacity control [andreiggr - [`bb88b89`](https://github.com/eea/volto-eea-map/commit/bb88b89857169fd5b8174dcbeaeeba448a7c7d0c)]
|
|
12
|
+
### [0.1.28](https://github.com/eea/volto-eea-map/compare/0.1.27...0.1.28) - 7 October 2022
|
|
13
|
+
|
|
14
|
+
#### :hammer_and_wrench: Others
|
|
15
|
+
|
|
16
|
+
- Clear [andreiggr - [`cef77e6`](https://github.com/eea/volto-eea-map/commit/cef77e6bf85f919c4968d5001f342c7d6c0e63f5)]
|
|
17
|
+
### [0.1.27](https://github.com/eea/volto-eea-map/compare/0.1.26...0.1.27) - 7 October 2022
|
|
8
18
|
|
|
9
19
|
#### :hammer_and_wrench: Others
|
|
10
20
|
|
|
11
21
|
- privacy policy inherit height of map [andreiggr - [`dee7281`](https://github.com/eea/volto-eea-map/commit/dee7281caf834d017af8b99da1455c956bc663fe)]
|
|
12
22
|
- set default legend, sources, privacy on [andreiggr - [`fb66ff8`](https://github.com/eea/volto-eea-map/commit/fb66ff8863d13b569955d7a774a9f1ab14729a29)]
|
|
13
23
|
- clear console [andreiggr - [`e1d2841`](https://github.com/eea/volto-eea-map/commit/e1d28419dea2586c98b4df1c9e6dc1d6a4b987b6)]
|
|
14
|
-
- use a custom basemap [andreiggr - [`b11fc62`](https://github.com/eea/volto-eea-map/commit/b11fc62a54730c0fb2229448c438f39f51db494d)]
|
|
15
24
|
### [0.1.26](https://github.com/eea/volto-eea-map/compare/0.1.25...0.1.26) - 4 October 2022
|
|
16
25
|
|
|
17
26
|
#### :hammer_and_wrench: Others
|
package/package.json
CHANGED
|
@@ -146,41 +146,48 @@ const Webmap = (props) => {
|
|
|
146
146
|
map_layers && map_layers.length > 0
|
|
147
147
|
? map_layers
|
|
148
148
|
.filter(({ map_service_url, layer }) => map_service_url && layer)
|
|
149
|
-
.map(
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
:
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
149
|
+
.map(
|
|
150
|
+
(
|
|
151
|
+
{ map_service_url, layer, fullLayer, query = '', opacity = 1 },
|
|
152
|
+
index,
|
|
153
|
+
) => {
|
|
154
|
+
const url = `${map_service_url}/${layer?.id}`;
|
|
155
|
+
let mapLayer;
|
|
156
|
+
switch (layer.type) {
|
|
157
|
+
case 'Raster Layer':
|
|
158
|
+
mapLayer = new MapImageLayer({
|
|
159
|
+
url: map_service_url,
|
|
160
|
+
sublayers: [
|
|
161
|
+
{
|
|
162
|
+
id: layer.id,
|
|
163
|
+
minScale: layer?.minScale,
|
|
164
|
+
maxScale: layer?.maxScale,
|
|
165
|
+
opacity: opacity ? parseFloat(opacity) : 1,
|
|
166
|
+
definitionExpression: query
|
|
167
|
+
? formatQuery(query, 'sql')
|
|
168
|
+
: '',
|
|
169
|
+
},
|
|
170
|
+
],
|
|
171
|
+
});
|
|
172
|
+
break;
|
|
173
|
+
case 'Feature Layer':
|
|
174
|
+
mapLayer = new FeatureLayer({
|
|
175
|
+
layerId: layer.id,
|
|
176
|
+
url,
|
|
177
|
+
definitionExpression: query
|
|
178
|
+
? formatQuery(query, 'sql')
|
|
179
|
+
: '',
|
|
180
|
+
minScale: layer?.minScale,
|
|
181
|
+
maxScale: layer?.maxScale,
|
|
182
|
+
opacity: opacity ? parseFloat(opacity) : 1,
|
|
183
|
+
});
|
|
184
|
+
break;
|
|
185
|
+
default:
|
|
186
|
+
break;
|
|
187
|
+
}
|
|
188
|
+
return mapLayer;
|
|
189
|
+
},
|
|
190
|
+
)
|
|
184
191
|
: [];
|
|
185
192
|
|
|
186
193
|
const mapBaseLayer = new WebTileLayer({
|
|
@@ -207,8 +214,25 @@ const Webmap = (props) => {
|
|
|
207
214
|
return basemap;
|
|
208
215
|
};
|
|
209
216
|
|
|
217
|
+
const setCustomBasemap = (urlTemplate) => {
|
|
218
|
+
const mapBaseLayer = new WebTileLayer({
|
|
219
|
+
urlTemplate,
|
|
220
|
+
});
|
|
221
|
+
|
|
222
|
+
// Create a Basemap with the WebTileLayer.
|
|
223
|
+
const customBase = new Basemap({
|
|
224
|
+
baseLayers: [mapBaseLayer],
|
|
225
|
+
title: 'Custom Base Layer',
|
|
226
|
+
id: 'custom-base',
|
|
227
|
+
});
|
|
228
|
+
return customBase;
|
|
229
|
+
};
|
|
230
|
+
|
|
210
231
|
const map = new Map({
|
|
211
|
-
basemap:
|
|
232
|
+
basemap:
|
|
233
|
+
data?.base?.use_custom_base && data?.base?.custom_base_layer
|
|
234
|
+
? setCustomBasemap(data?.base?.custom_base_layer)
|
|
235
|
+
: setBasemap(base_layer),
|
|
212
236
|
layers,
|
|
213
237
|
});
|
|
214
238
|
const view = new MapView({
|
|
@@ -2,22 +2,39 @@ import { base_layers } from '../../constants';
|
|
|
2
2
|
|
|
3
3
|
const customBaselayers = [['positron-composite', 'positron-composite']];
|
|
4
4
|
|
|
5
|
-
const BaseLayerSchema = {
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
5
|
+
const BaseLayerSchema = ({ data = {} }) => {
|
|
6
|
+
const useCustomBase = data?.map_data?.base?.use_custom_base;
|
|
7
|
+
return {
|
|
8
|
+
title: 'Base Layer',
|
|
9
|
+
fieldsets: [
|
|
10
|
+
{
|
|
11
|
+
id: 'base',
|
|
12
|
+
title: 'Base Layer',
|
|
13
|
+
fields: [
|
|
14
|
+
'use_custom_base',
|
|
15
|
+
...(useCustomBase ? ['custom_base_layer'] : ['base_layer']),
|
|
16
|
+
],
|
|
17
|
+
},
|
|
18
|
+
],
|
|
19
|
+
properties: {
|
|
20
|
+
use_custom_base: {
|
|
21
|
+
title: 'Use custom Base Layer',
|
|
22
|
+
description:
|
|
23
|
+
'Switch between default base layers and defining your custom service base layer',
|
|
24
|
+
type: 'boolean',
|
|
25
|
+
},
|
|
26
|
+
base_layer: {
|
|
27
|
+
title: 'Base Layer',
|
|
28
|
+
choices: [...customBaselayers, ...base_layers],
|
|
29
|
+
},
|
|
30
|
+
custom_base_layer: {
|
|
31
|
+
title: 'Base Layer',
|
|
32
|
+
description:
|
|
33
|
+
'Add an URL Template to import your own base layer from an external service',
|
|
34
|
+
},
|
|
18
35
|
},
|
|
19
|
-
|
|
20
|
-
|
|
36
|
+
required: [],
|
|
37
|
+
};
|
|
21
38
|
};
|
|
22
39
|
|
|
23
40
|
const LayerSchema = {
|
|
@@ -127,6 +144,7 @@ const GeneralSchema = ({ data = {} }) => {
|
|
|
127
144
|
|
|
128
145
|
export default ({ data = {} }) => {
|
|
129
146
|
const generalSchema = GeneralSchema({ data });
|
|
147
|
+
const baseLayerSchema = BaseLayerSchema({ data });
|
|
130
148
|
|
|
131
149
|
return {
|
|
132
150
|
title: 'Map Editor',
|
|
@@ -148,7 +166,7 @@ export default ({ data = {} }) => {
|
|
|
148
166
|
},
|
|
149
167
|
{
|
|
150
168
|
id: 'base',
|
|
151
|
-
schema:
|
|
169
|
+
schema: baseLayerSchema,
|
|
152
170
|
},
|
|
153
171
|
{
|
|
154
172
|
id: 'layers',
|
|
@@ -172,6 +172,13 @@ const LayerSelectWidget = (props) => {
|
|
|
172
172
|
}
|
|
173
173
|
};
|
|
174
174
|
|
|
175
|
+
const handleOpacityChange = (val) => {
|
|
176
|
+
onChange(id, {
|
|
177
|
+
...value,
|
|
178
|
+
opacity: val,
|
|
179
|
+
});
|
|
180
|
+
};
|
|
181
|
+
|
|
175
182
|
const handleChangeServiceUrl = (value) => {
|
|
176
183
|
setServiceUrlError('');
|
|
177
184
|
setCheckColor('');
|
|
@@ -285,6 +292,27 @@ const LayerSelectWidget = (props) => {
|
|
|
285
292
|
)}
|
|
286
293
|
{availableLayers && availableLayers.length > 0 && selectedLayer && (
|
|
287
294
|
<div className="spaced-row">
|
|
295
|
+
<Grid.Row stretched>
|
|
296
|
+
<h5>Opacity:</h5>
|
|
297
|
+
<input
|
|
298
|
+
className="map-number-input"
|
|
299
|
+
type="number"
|
|
300
|
+
min={0}
|
|
301
|
+
max={1}
|
|
302
|
+
step={0.1}
|
|
303
|
+
value={value?.opacity ? value?.opacity : 1}
|
|
304
|
+
onChange={(e) => handleOpacityChange(e.target.value)}
|
|
305
|
+
/>
|
|
306
|
+
<input
|
|
307
|
+
className="map-range-input"
|
|
308
|
+
type="range"
|
|
309
|
+
min={0}
|
|
310
|
+
max={1}
|
|
311
|
+
step={0.1}
|
|
312
|
+
value={value?.opacity ? value?.opacity : 1}
|
|
313
|
+
onChange={(e) => handleOpacityChange(e.target.value)}
|
|
314
|
+
/>
|
|
315
|
+
</Grid.Row>
|
|
288
316
|
<Grid.Row stretched>
|
|
289
317
|
<h5 style={{ padding: '0', margin: '15px 0px 5px 0px' }}>
|
|
290
318
|
Description
|
package/src/styles/map.css
CHANGED