Skip to content

Commit

Permalink
Merge pull request #4151 from 3liz/backport-4149-to-release_3_6
Browse files Browse the repository at this point in the history
[Backport release_3_6] Bugfix: WMTS for layers with shortname
  • Loading branch information
rldhont authored Feb 2, 2024
2 parents 3e62fa9 + bdd1a6c commit 0b9776e
Show file tree
Hide file tree
Showing 4 changed files with 880 additions and 3 deletions.
7 changes: 4 additions & 3 deletions lizmap/modules/lizmap/classes/lizmapTiler.class.php
Original file line number Diff line number Diff line change
Expand Up @@ -424,14 +424,15 @@ public static function getLayerTileInfo($layerName, $project, $wms_xml, $tileMat
$layers = $project->getLayers();
$layer = $layers->{$layerName};

$xmlLayer = $wms_xml->xpath('//wms:Layer/wms:Name[. ="'.$layer->name.'"]/parent::*');
$wmsName = property_exists($layer, 'shortname') ? $layer->shortname : $layer->name;
$xmlLayer = $wms_xml->xpath('//wms:Layer/wms:Name[. ="'.$wmsName.'"]/parent::*');
if (!$xmlLayer || count($xmlLayer) == 0) {
return null;
}
$xmlLayer = $xmlLayer[0];
$layerExtent = null;

$xmlLayers = $wms_xml->xpath('//wms:Layer/wms:Name[. ="'.$layer->name.'"]/parent::*//wms:Layer');
$xmlLayers = $wms_xml->xpath('//wms:Layer/wms:Name[. ="'.$wmsName.'"]/parent::*//wms:Layer');
foreach ($xmlLayers as $xmlcLayer) {
if (!property_exists($xmlcLayer, 'Layer')) {
if ($layerExtent == null) {
Expand Down Expand Up @@ -560,7 +561,7 @@ public static function getLayerTileInfo($layerName, $project, $wms_xml, $tileMat

$l = (object) array(
'id' => $layer->id,
'name' => $layer->name,
'name' => $wmsName,
'title' => $layer->title,
'abstract' => $layer->abstract,
'imageFormat' => $layer->imageFormat,
Expand Down
50 changes: 50 additions & 0 deletions tests/end2end/playwright/wmts.spec.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,50 @@
import { test, expect } from '@playwright/test';

test.describe('WMTS', () => {
test('Check GetCapabilities', async ({ page }) => {
const url = '/index.php/view/map/?repository=testsrepository&project=wmts_test';
let getCapabilitiesWMTSPromise = page.waitForRequest(/SERVICE=WMTS&REQUEST=GetCapabilities/);
await page.goto(url);
let getCapabilitiesWMTSRequest = await getCapabilitiesWMTSPromise;
let getCapabilitiesWMTSResponse = await getCapabilitiesWMTSRequest.response();
let getCapabilitiesWMTSResponseText = await getCapabilitiesWMTSResponse.text();
expect(getCapabilitiesWMTSResponseText).toContain('<Layer>');
expect(getCapabilitiesWMTSResponseText).toContain('<ows:Identifier>quartiers</ows:Identifier>');
expect(getCapabilitiesWMTSResponseText).toContain('<ows:Title>quartiers fffffff</ows:Title>');
expect(getCapabilitiesWMTSResponseText).toContain('<TileMatrixSet>EPSG:2154</TileMatrixSet>');
expect(getCapabilitiesWMTSResponseText).toContain('<TileMatrixSet>EPSG:3857</TileMatrixSet>');
})
test('Check GetTile', async ({ page }) => {
const url = '/index.php/view/map/?repository=testsrepository&project=wmts_test';
await page.goto(url, { waitUntil: 'networkidle' });
// Catch GetTile request;
let GetTiles = [];
await page.route('**/service*', (route) => {
const request = route.request();
if (request.url().includes('GetTile')) {
GetTiles.push(request.url());
}
}, {times: 6});
await page.getByRole('cell', { name: 'Expand Display/Hide quartiers fffffff' }).getByRole('button', { name: 'Display/Hide' }).click();
expect(GetTiles).toHaveLength(6);
expect(GetTiles[0]).toContain('TILEMATRIX=2')
expect(GetTiles[0]).toContain('TILEROW=5')
expect(GetTiles[0]).toContain('TILECOL=7')
expect(GetTiles[1]).toContain('TILEMATRIX=2')
expect(GetTiles[1]).toContain('TILEROW=4')
expect(GetTiles[1]).toContain('TILECOL=7')
expect(GetTiles[2]).toContain('TILEMATRIX=2')
expect(GetTiles[2]).toContain('TILEROW=5')
expect(GetTiles[2]).toContain('TILECOL=6')
expect(GetTiles[3]).toContain('TILEMATRIX=2')
expect(GetTiles[3]).toContain('TILEROW=5')
expect(GetTiles[3]).toContain('TILECOL=8')
expect(GetTiles[4]).toContain('TILEMATRIX=2')
expect(GetTiles[4]).toContain('TILEROW=4')
expect(GetTiles[4]).toContain('TILECOL=6')
expect(GetTiles[5]).toContain('TILEMATRIX=2')
expect(GetTiles[5]).toContain('TILEROW=4')
expect(GetTiles[5]).toContain('TILECOL=8')
await page.unroute('**/service*')
})
})
Loading

0 comments on commit 0b9776e

Please sign in to comment.