summaryrefslogtreecommitdiffstats
path: root/kostely.js
diff options
context:
space:
mode:
Diffstat (limited to 'kostely.js')
-rw-r--r--kostely.js49
1 files changed, 46 insertions, 3 deletions
diff --git a/kostely.js b/kostely.js
index 7dba9d2..49ceadf 100644
--- a/kostely.js
+++ b/kostely.js
@@ -75,13 +75,56 @@ httpRequest.onreadystatechange = function(data) {
httpRequest.open('GET', 'kostely.tsv');
httpRequest.send();
+ol.control.WMSLegend = function(opt_options) {
+ var options = opt_options || {};
+ this.options = options;
+ this.div = document.createElement('div');
+ var legendP = document.createElement('p');
+ legendP.innerHTML = 'Legend:';
+ this.div.className = this.options.class + ' ol-unselectable';
+ this.div.appendChild(legendP);
+ ol.control.Control.call(this, {
+ element: this.div
+ });
+};
+ol.inherits(ol.control.WMSLegend, ol.control.Control);
+
+ol.control.WMSLegend.prototype.drawLegendItem = function(layer) {
+ if (layer.get('showLegend') === true) {
+ try {
+ var url = layer.getSource().getUrls()[0];
+ }
+ catch(err) {
+ var url = layer.getSource().getUrl();
+ }
+ var legendImg = document.createElement('img');
+ legendImg.src = url + '&version=' + this.options.wmsVersion + '&service=WMS&request=GetLegendGraphic&sld_version=1.1.0&layer=' + layer.getSource().getParams().layers + '&format=' + this.options.format;
+ this.div.appendChild(legendImg);
+ }
+}
+
+ol.control.WMSLegend.prototype.setMap = function(map){
+ ol.control.Control.prototype.setMap.call(this, map);
+ this.options.wmsVersion = this.options.wmsVersion || '1.3.0';
+ this.options.format = this.options.format || 'image/png';
+ var layers = map.getLayers().getArray();
+ for (var i=0; i<layers.length; i++) {
+ if (layers[i] instanceof ol.layer.Group) {
+ var layersFromGroup = layers[i].getLayers().getArray();
+ for (var j=0;j<layersFromGroup.length;j++) {
+ this.drawLegendItem(layersFromGroup[j]);
+ }
+ } else {
+ this.drawLegendItem(layers[i]);
+ }
+ }
+};
+
map.controls = ol.control.defaults({ attribution: false });
map.controls.extend([
new ol.control.Attribution({
collapsible: true
- })
-]);
-map.controls.extend([
+ }),
new ol.control.MousePosition()
]);