|
/* Copyright (c) 2006-2010 by OpenLayers Contributors (see authors.txt for |
|
* full list of contributors). Published under the Clear BSD license. |
|
* See http://svn.openlayers.org/trunk/openlayers/license.txt for the |
|
* full text of the license. */ |
|
|
|
/** |
|
* @requires OpenLayers/Control.js |
|
*/ |
|
|
|
/** |
|
* Class: OpenLayers.Control.Attribution |
|
* The attribution control adds attribution from layers to the map display. |
|
* It uses 'attribution' property of each layer. |
|
* |
|
* Inherits from: |
|
* - <OpenLayers.Control> |
|
*/ |
|
OpenLayers.Control.Attribution = |
|
OpenLayers.Class(OpenLayers.Control, { |
|
|
|
/** |
|
* APIProperty: seperator |
|
* {String} String used to seperate layers. |
|
*/ |
|
separator: ", ", |
|
|
|
/** |
|
* Constructor: OpenLayers.Control.Attribution |
|
* |
|
* Parameters: |
|
* options - {Object} Options for control. |
|
*/ |
|
initialize: function(options) { |
|
OpenLayers.Control.prototype.initialize.apply(this, arguments); |
|
}, |
|
|
|
/** |
|
* Method: destroy |
|
* Destroy control. |
|
*/ |
|
destroy: function() { |
|
this.map.events.un({ |
|
"removelayer": this.updateAttribution, |
|
"addlayer": this.updateAttribution, |
|
"changelayer": this.updateAttribution, |
|
"changebaselayer": this.updateAttribution, |
|
scope: this |
|
}); |
|
|
|
OpenLayers.Control.prototype.destroy.apply(this, arguments); |
|
}, |
|
|
|
/** |
|
* Method: draw |
|
* Initialize control. |
|
* |
|
* Returns: |
|
* {DOMElement} A reference to the DIV DOMElement containing the control |
|
*/ |
|
draw: function() { |
|
OpenLayers.Control.prototype.draw.apply(this, arguments); |
|
|
|
this.map.events.on({ |
|
'changebaselayer': this.updateAttribution, |
|
'changelayer': this.updateAttribution, |
|
'addlayer': this.updateAttribution, |
|
'removelayer': this.updateAttribution, |
|
scope: this |
|
}); |
|
this.updateAttribution(); |
|
|
|
return this.div; |
|
}, |
|
|
|
/** |
|
* Method: updateAttribution |
|
* Update attribution string. |
|
*/ |
|
updateAttribution: function() { |
|
var attributions = []; |
|
if (this.map && this.map.layers) { |
|
for(var i=0, len=this.map.layers.length; i<len; i++) { |
|
var layer = this.map.layers[i]; |
|
if (layer.attribution && layer.getVisibility()) { |
|
// add attribution only if attribution text is unique |
|
if (OpenLayers.Util.indexOf( |
|
attributions, layer.attribution) === -1) { |
|
attributions.push( layer.attribution ); |
|
} |
|
} |
|
} |
|
this.div.innerHTML = attributions.join(this.separator); |
|
} |
|
}, |
|
|
|
CLASS_NAME: "OpenLayers.Control.Attribution" |
|
}); |
|
|