-
Notifications
You must be signed in to change notification settings - Fork 3
/
Copy pathiframeWmsFeatureInfoView.js
73 lines (66 loc) · 1.88 KB
/
iframeWmsFeatureInfoView.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
import { get as getOlProj } from 'ol/proj.js';
import AbstractFeatureInfoView from './abstractFeatureInfoView.js';
import IframeComponent from './IframeComponent.vue';
/**
* @typedef {import("./abstractFeatureInfoView.js").FeatureInfoViewOptions & { infoFormat: string, title?: string }} IframeWmsFeatureInfoViewOptions
* @property {string} infoFormat - Specifies the response format of WMS GetFeatureInfo
* @property {string} [title] - optional title for the <iframe>
*/
/**
* @class
* @description An iframe view.
* @extends {AbstractFeatureInfoView}
*/
class IframeWmsFeatureInfoView extends AbstractFeatureInfoView {
/**
* @type {string}
*/
static get className() {
return 'IframeWmsFeatureInfoView';
}
/**
* @param {IframeWmsFeatureInfoViewOptions} options
*/
constructor(options) {
super(options, IframeComponent);
/**
* @type {string}
*/
this.infoFormat = options.infoFormat || 'text/html';
/**
* @type {string|undefined}
*/
this.title = options.title || undefined;
}
/**
* Gets feature info from WMS GetFeatureInfo in html/text format
* @param {import("./featureInfo.js").FeatureInfoEvent} featureInfo
* @param {import("@vcmap/core").WMSLayer} layer
* @returns {import("./iframeFeatureInfoView.js").IframeFeatureInfoViewProps}
*/
getProperties(featureInfo, layer) {
return {
src: layer.featureProvider.wmsSource.getFeatureInfoUrl(
featureInfo.position,
1,
getOlProj('EPSG:3857'),
{ INFO_FORMAT: this.infoFormat },
),
title: this.title,
};
}
/**
* @returns {IframeWmsFeatureInfoViewOptions}
*/
toJSON() {
const config = super.toJSON();
if (this.infoFormat) {
config.infoFormat = this.infoFormat;
}
if (this.title) {
config.title = this.title;
}
return config;
}
}
export default IframeWmsFeatureInfoView;