diff --git a/app-starter/locales/en.json b/app-starter/locales/en.json
index 825f4857..50d01ef1 100644
--- a/app-starter/locales/en.json
+++ b/app-starter/locales/en.json
@@ -57,6 +57,10 @@
"terrestris-osm-wms" : {
"name": "OSM WMS",
"attributions": "© OpenStreetMap-contributors"
+ },
+ "test_arcgisrest" : {
+ "name": "Arcgis REST test tiled layer",
+ "attributions": "© Comune di Padova"
}
},
diff --git a/app-starter/static/app-conf.json b/app-starter/static/app-conf.json
index 1b7bca7b..8d9e9e39 100644
--- a/app-starter/static/app-conf.json
+++ b/app-starter/static/app-conf.json
@@ -161,6 +161,27 @@
"opacityControl": true,
"crossOrigin": "anonymous"
},
+
+ {
+ "type": "TILEARCGIS",
+ "lid": "test_arcgisrest",
+ "format": "image/jpeg",
+ "url": "https://cartografia.comune.padova.it/server/rest/services/topo/MapServer",
+ "params": {
+ "LAYERS":"show:3,16",
+ "TRANSPARENT": true
+ },
+ "transparent": true,
+ "projection": "EPSG:3003",
+ "attribution": "Comune di padova",
+ "isBaseLayer": false,
+ "visible": false,
+ "displayInLayerList": true,
+ "legend": false,
+ "opacityControl": true,
+ "crossOrigin": "anonymous"
+ },
+
{
"type": "IMAGEWMS",
"lid": "ahocevar-imagewms",
diff --git a/docs/map-layer-configuration.md b/docs/map-layer-configuration.md
index 3b460b4a..2201633d 100644
--- a/docs/map-layer-configuration.md
+++ b/docs/map-layer-configuration.md
@@ -94,13 +94,24 @@ The following properties can be applied to all map layer types
| projection | The projection of the layer. Has to be defined in `projectionDefs` if not `EPSG:4326` or `EPSG:3857`. if not set the projection of the map is used | `"projection": "EPSG:3857"` |
| format | Image format for the WMS (has to be supported by the WMS) | `"format": "image/png"` |
| transparent | Boolean value, whether the WMS layer should be queried with a transparent background | `"transparent": true` |
-| tileGridRef | Identifier of the tile grid to use for this layer (has to be defined in `tileGridDefs` | `"tileGridRef": "dutch_rd"` |
+| tileGridRef | Identifier of the tile grid to use for this layer (has to be defined in `tileGridDefs`) | `"tileGridRef": "dutch_rd"` |
| crossOrigin | Provides support for CORS, defining how the layers source handles crossorigin requests. For more information and the supported values see [HTML attribute: crossorigin](https://developer.mozilla.org/en-US/docs/Web/HTML/Attributes/crossorigin) | `"crossOrigin": "anonymous"` |
| hoverable | Boolean value, whether the features of the layer can be hovered in order to display information in a tooltip. The WMS must support `GetFeatureInfo` requests to obtain feature information. Wegue's default hover tooltip renders a single feature attribute which has to be declared by `hoverAttribute`. You can also choose to implement a custom overlay declared by `hoverOverlay` to render multiple feature attributes in a custom tooltip. | `"hoverable": true` |
| hoverAttribute | Attribute to be shown if a feature of the layer is hovered. Only has an effect if `hoverable` is set to `true`. | `"hoverAttribute": "name"` |
| hoverOverlay | ID of a custom map overlay to display when a feature of the layer is hovered. Only has an effect if `hoverable` is set to `true`. For more information on how to implement a map overlay see the [reusable components](reusable-components?id=map-overlay) section. | `"hoverOverlay": "my-custom-overlay"` |
| params | This allows to inject custom HTTP parameters to the GetMap request of the layer. | `"params": {"FEATUREID": 1}"` |
+## Arcgis REST (tiled)
+
+| Property | Meaning | Example |
+|--------------------|:---------:|---------|
+| **type** | Indicator that the layer is `"TILEARCGIS"` | `"type": "TILEARCGIS"` |
+| **url** | The base URL of the Arcgis REST service | `"url": "https://cartografia.comune.padova.it/server/rest/services/topo/MapServer"` |
+| projection | The projection of the layer. Has to be defined in `projectionDefs` if not `EPSG:4326` or `EPSG:3857`. if not set the projection of the map is used | `"projection": "EPSG:3857"` |
+| tileGrid | Identifier of the tile grid to use for this layer (has to be defined in `tileGridDefs`) | `"tileGridRef": "dutch_rd"` |
+| crossOrigin | Provides support for CORS, defining how the layers source handles crossorigin requests. For more information and the supported values see [HTML attribute: crossorigin](https://developer.mozilla.org/en-US/docs/Web/HTML/Attributes/crossorigin) | `"crossOrigin": "anonymous"` |
+| params | ArcGIS Rest parameters. This field is optional. Service defaults will be used for any fields not specified. FORMAT is PNG32 by default. F is IMAGE by default. TRANSPARENT is true by default. BBOX, SIZE, BBOXSR, and IMAGESR will be set dynamically. Set LAYERS to override the default service layer visibility. See https://developers.arcgis.com/rest/services-reference/export-map.htm for further reference. | `params:{"LAYERS": show:1,4,5,6, "TRASPARENT": true}` |
+
## WMS (image)
Similar properties as Tiled WMS, with these exceptions:
diff --git a/src/factory/Layer.js b/src/factory/Layer.js
index 20fdb5ea..e82f48d7 100644
--- a/src/factory/Layer.js
+++ b/src/factory/Layer.js
@@ -1,6 +1,7 @@
import { Image as ImageLayer, Tile as TileLayer } from 'ol/layer';
import ImageWMS from 'ol/source/ImageWMS';
import TileWmsSource from 'ol/source/TileWMS';
+import TileArcGISRest from 'ol/source/TileArcGISRest.js';
import OsmSource from 'ol/source/OSM';
import VectorTileLayer from 'ol/layer/VectorTile'
import VectorTileSource from 'ol/source/VectorTile'
@@ -63,6 +64,8 @@ export const LayerFactory = {
// create correct layer type
if (lConf.type === 'TILEWMS') {
return this.createTileWmsLayer(lConf);
+ } else if (lConf.type === 'TILEARCGIS') {
+ return this.createTileArcGISRestLayer(lConf);
} else if (lConf.type === 'IMAGEWMS') {
return this.createImageWmsLayer(lConf);
} else if (lConf.type === 'WFS') {
@@ -165,6 +168,31 @@ export const LayerFactory = {
return layer;
},
+ /**
+ * Returns an OpenLayers Tiled Arcgis REST tiled layer instance due to given config.
+ *
+ * @param {Object} lConf Layer config object
+ * @return {ol.layer.Tile} OL Tiled Arcgis REST layer instance
+ */
+ createTileArcGISRestLayer (lConf) {
+ // apply additional HTTP params
+ const params = { LAYERS: lConf.layers };
+ ObjectUtil.mergeDeep(params, lConf.params);
+
+ const layer = new TileLayer({
+ ...this.getCommonLayerOptions(lConf),
+ source: new TileArcGISRest({
+ url: lConf.url,
+ params,
+ projection: lConf.projection,
+ crossOrigin: lConf.crossOrigin,
+ tileGrid: lConf.tileGrid
+ })
+ });
+
+ return layer;
+ },
+
/**
* Returns an OpenLayers WFS layer instance due to given config.
*