Skip to content

Commit 9366729

Browse files
authoredSep 15, 2020
Merge pull request CesiumGS#9143 from zoran995/fix-wms-1.3.0-get-feature-info
Fix wms 1.3.0 get feature info
2 parents 883dfe4 + 8323540 commit 9366729

File tree

3 files changed

+134
-2
lines changed

3 files changed

+134
-2
lines changed
 

‎CONTRIBUTORS.md

+1
Original file line numberDiff line numberDiff line change
@@ -277,3 +277,4 @@ See [CONTRIBUTING.md](CONTRIBUTING.md) for details on how to contribute to Cesiu
277277
- [Yonatan Kra](https://github.com/yonatankra)
278278
- [Gusain Vipul](https://github.com/vipulgusain)
279279
- [Sam Bakkach](https://github.com/sambakk)
280+
- [Zoran Kokeza](https://github.com/zoran995)

‎Source/Scene/WebMapServiceImageryProvider.js

+8-2
Original file line numberDiff line numberDiff line change
@@ -255,10 +255,16 @@ function WebMapServiceImageryProvider(options) {
255255

256256
var pickFeatureParams = {
257257
query_layers: options.layers,
258-
x: "{i}",
259-
y: "{j}",
260258
info_format: "{format}",
261259
};
260+
// use correct pixel coordinate identifier based on version
261+
if (parseFloat(pickFeatureResource.queryParameters.version) >= 1.3) {
262+
pickFeatureParams.i = "{i}";
263+
pickFeatureParams.j = "{j}";
264+
} else {
265+
pickFeatureParams.x = "{i}";
266+
pickFeatureParams.y = "{j}";
267+
}
262268
pickFeatureResource.setQueryParameters(pickFeatureParams, true);
263269

264270
this._resource = resource;

‎Specs/Scene/WebMapServiceImageryProviderSpec.js

+125
Original file line numberDiff line numberDiff line change
@@ -1390,6 +1390,131 @@ describe("Scene/WebMapServiceImageryProvider", function () {
13901390
});
13911391
});
13921392

1393+
it("generates correct getFeatureInfo link, WMS 1.1.1, version in getFeatureInfoParameters", function () {
1394+
var provider = new WebMapServiceImageryProvider({
1395+
url: "made/up/wms/server",
1396+
layers: "someLayer",
1397+
getFeatureInfoParameters: {
1398+
version: "1.1.1",
1399+
},
1400+
});
1401+
1402+
Resource._Implementations.loadWithXhr = function (
1403+
url,
1404+
responseType,
1405+
method,
1406+
data,
1407+
headers,
1408+
deferred,
1409+
overrideMimeType
1410+
) {
1411+
expect(url).toContain("GetFeatureInfo");
1412+
expect(url).toContain("1.1.1");
1413+
expect(url).not.toContain("1.3.0");
1414+
expect(url).toContain("&x=");
1415+
expect(url).toContain("&y=");
1416+
expect(url).not.toContain("&i=");
1417+
expect(url).not.toContain("&j=");
1418+
Resource._DefaultImplementations.loadWithXhr(
1419+
"Data/WMS/GetFeatureInfo-MapInfoMXP.xml",
1420+
responseType,
1421+
method,
1422+
data,
1423+
headers,
1424+
deferred,
1425+
overrideMimeType
1426+
);
1427+
};
1428+
1429+
return pollToPromise(function () {
1430+
return provider.ready;
1431+
}).then(function () {
1432+
return provider.pickFeatures(0, 0, 0, 0.5, 0.5);
1433+
});
1434+
});
1435+
1436+
it("generates correct getFeatureInfo link, WMS 1.3.0, version in getFeatureInfoParameters", function () {
1437+
var provider = new WebMapServiceImageryProvider({
1438+
url: "made/up/wms/server",
1439+
layers: "someLayer",
1440+
getFeatureInfoParameters: {
1441+
version: "1.3.0",
1442+
},
1443+
});
1444+
1445+
Resource._Implementations.loadWithXhr = function (
1446+
url,
1447+
responseType,
1448+
method,
1449+
data,
1450+
headers,
1451+
deferred,
1452+
overrideMimeType
1453+
) {
1454+
expect(url).toContain("GetFeatureInfo");
1455+
expect(url).not.toContain("1.1.1");
1456+
expect(url).toContain("1.3.0");
1457+
expect(url).not.toContain("&x=");
1458+
expect(url).not.toContain("&y=");
1459+
expect(url).toContain("&i=");
1460+
expect(url).toContain("&j=");
1461+
Resource._DefaultImplementations.loadWithXhr(
1462+
"Data/WMS/GetFeatureInfo-MapInfoMXP.xml",
1463+
responseType,
1464+
method,
1465+
data,
1466+
headers,
1467+
deferred,
1468+
overrideMimeType
1469+
);
1470+
};
1471+
1472+
return pollToPromise(function () {
1473+
return provider.ready;
1474+
}).then(function () {
1475+
return provider.pickFeatures(0, 0, 0, 0.5, 0.5);
1476+
});
1477+
});
1478+
1479+
it("generates correct getFeatureInfo link, WMS 1.1.1, default version", function () {
1480+
var provider = new WebMapServiceImageryProvider({
1481+
url: "made/up/wms/server",
1482+
layers: "someLayer",
1483+
});
1484+
1485+
Resource._Implementations.loadWithXhr = function (
1486+
url,
1487+
responseType,
1488+
method,
1489+
data,
1490+
headers,
1491+
deferred,
1492+
overrideMimeType
1493+
) {
1494+
expect(url).toContain("GetFeatureInfo");
1495+
expect(url).toContain("1.1.1");
1496+
expect(url).not.toContain("1.3.0");
1497+
expect(url).toContain("&x=");
1498+
expect(url).toContain("&y=");
1499+
expect(url).not.toContain("&i=");
1500+
expect(url).not.toContain("&j=");
1501+
Resource._DefaultImplementations.loadWithXhr(
1502+
"Data/WMS/GetFeatureInfo-MapInfoMXP.xml",
1503+
responseType,
1504+
method,
1505+
data,
1506+
headers,
1507+
deferred,
1508+
overrideMimeType
1509+
);
1510+
};
1511+
return pollToPromise(function () {
1512+
return provider.ready;
1513+
}).then(function () {
1514+
return provider.pickFeatures(0, 0, 0, 0.5, 0.5);
1515+
});
1516+
});
1517+
13931518
it("uses custom GetFeatureInfo handling function if specified", function () {
13941519
function fooProcessor(response) {
13951520
var json = JSON.parse(response);

0 commit comments

Comments
 (0)
Please sign in to comment.