3 votos

¿Cómo añadir la capa WMTS desde GeoServer a un mapa sin descargar el archivo xml get capabilties (en OpenLayers)?

Soy nuevo en la cartografía web y en la web en general.

Estoy añadiendo el mosaico WMTS Italia por defecto que se puede encontrar en GeoServer (nurc:mosaic) a mi mapa siguiendo estos ejemplos: http://openlayers.org/en/latest/examples/wmts-capabilities.html https://openlayers.org/en/latest/examples/wmts-layer-from-capabilities.html

Descargué el archivo wmts-getcapabilities xml desde la página de administración web de mi GeoServer, simplemente haciendo clic en WMTS's 1.0.0. Luego lo guardé dentro del mismo directorio con mi archivo Italy_mosaic_OpenLayers.html.

how the directory looks like

Y así es como se ve mi Italy_mosaic_OpenLayers.html :

var parser = new ol.format.WMTSCapabilities();

var map;

fetch('wmts-getcapabilities.xml').then(function(response) {
    return response.text();
}).then(function(text) {
    var result = parser.read(text);

    var options = ol.source.WMTS.optionsFromCapabilities(result, {
        layer: 'nurc:mosaic',
        matrixSet: 'EPSG:4326',
        format: 'image/png'
    });

    map = new ol.Map({
        layers: [
            new ol.layer.Tile({
                source: new ol.source.OSM(),
                opacity: 1
            }),
            new ol.layer.Tile({
                opacity: 0.6,
                source: new ol.source.WMTS(/** @type {!olx.source.WMTSOptions} */ (options))
            })
        ],
        target: 'map',
        view: new ol.View({
            center: ol.proj.fromLonLat([22, 42]),
            zoom: 5,
            projection:'EPSG:900913'
        })
    });
})

Este código sólo funciona cuando mi archivo "wmts-getcapabilities.xml" está en el mismo directorio que mi archivo "Italy_mosaic_OpenLayers.html". Sin embargo, si tuviera que renovar mi archivo raster del mosaico de Italia, tendría que descargar de nuevo el archivo "wmts-getcapabilities.xml" y colocarlo en el mismo directorio (junto al archivo "Italy_mosaic_OpenLayers.html").

Para evitar la sustitución del archivo xml una y otra vez, he intentado poner 'http://localhost:8081/geoserver/gwc/service/wmts?REQUEST=GetCapabilities' en lugar de 'wmts-getcapabilities-xml' en mi código, sin embargo tenía una página en blanco. También probé diferentes combinaciones matrixSet-proyección; no importaba la combinación matrixSet-proyección que probara (probé 9 posibilidades, 3 para cada una (4326,3857 y 900913)), con fetch('http://localhost:8081/geoserver/gwc/service/wmts?REQUEST=GetCapabilities') Siempre tenía una página en blanco (no gris).

Aquí está mi violín https://jsfiddle.net/qjcadvzq/15/

¿Qué me falta?

2voto

Braiam Puntos 120

En el ejemplo OL que has enlazado, el WMTSCapabilities.xml no se lee localmente sino directamente desde el servidor. No quieres ninguna intervención manual entre el servidor y la webapp, así que es mejor leer siempre el fichero desde el servidor.

 fetch('https://openlayers.org/en/v4.6.4/examples/data/WMTSCapabilities.xml').then(function(response) { ...

que puede convertirse en

fetch('http://localhost:8081/geoserver/gwc/service/wmts?request=getcapabilities').then(function(response) { ...

Usted dijo

He descargado el archivo wmts-getcapabilities xml de la web de mi GeoServer página de administración, simplemente haciendo clic en WMTS 1.0.0

Puede copiar el enlace desde allí en lugar del archivo, y utilizar este enlace como URL en el código anterior.

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X