aboutsummaryrefslogtreecommitdiffstats
path: root/view/theme/diabook/js/jquery.mapquery.legend.js
diff options
context:
space:
mode:
Diffstat (limited to 'view/theme/diabook/js/jquery.mapquery.legend.js')
-rw-r--r--view/theme/diabook/js/jquery.mapquery.legend.js87
1 files changed, 87 insertions, 0 deletions
diff --git a/view/theme/diabook/js/jquery.mapquery.legend.js b/view/theme/diabook/js/jquery.mapquery.legend.js
new file mode 100644
index 000000000..0a475408f
--- /dev/null
+++ b/view/theme/diabook/js/jquery.mapquery.legend.js
@@ -0,0 +1,87 @@
+/* Copyright (c) 2011 by MapQuery Contributors (see AUTHORS for
+ * full list of contributors). Published under the MIT license.
+ * See https://github.com/mapquery/mapquery/blob/master/LICENSE for the
+ * full text of the license. */
+
+/**
+#jquery.mapquery.legend.js
+A plugin on mapquery.core to add a legend to a layer. It will check if the layer
+is within a valid extent and zoom range. And if not will return an error message.
+*/
+
+(function($, MQ) {
+$.extend( $.fn.mapQuery.defaults.layer.all, {
+ legend: {
+ url: '',
+ msg: ''
+ }
+});
+//possible error messages to display in the legend
+LEGEND_ERRORS= ['E_ZOOMOUT', 'E_ZOOMIN', 'E_OUTSIDEBOX'];
+$.extend(MQ.Layer.prototype, {
+/**
+###**layer**.`legend([options])`
+_version added 0.1_
+####**Description**: get/set the legend of a layer
+
+**options** url:url the url to the legend image
+
+>Returns: {url:url, msg:'E\_ZOOMOUT' | 'E\_ZOOMIN' | 'E\_OUTSIDEBOX' | ''}
+
+
+The `.legend()` function allows us to attach a legend image to a layer. It will
+also check if the layer is not visible due to wrong extent or zoom level.
+It will return an error message which can be used to notify the user.
+
+
+ var legend = layer.legend(); //get the current legend
+ //set the legend url to legendimage.png
+ layer.legend({url:'legendimage.png'})
+
+ */
+ //get/set the legend object
+ legend: function(options) {
+ //get the legend object
+ var center = this.map.center();
+ if (arguments.length===0) {
+ this._checkZoom(center);
+ //if zoom = ok, check box
+ if(this.options.legend.msg==''){
+ this._checkBox(center);
+ }
+ return this.options.legend;
+ }
+ //set the legend url
+ if (options.url!==undefined) {
+ this.options.legend.url = options.url;
+ return this.options.legend;
+ }
+ },
+ //Check if the layer has a maximum box set and if the current box
+ //is outside these settings, set the legend.msg accordingly
+ _checkBox: function(center){
+ var maxExtent = this.options.maxExtent;
+ if(maxExtent!==undefined) {
+ var mapBounds = new OpenLayers.Bounds(
+ center.box[0],center.box[1],center.box[2],center.box[3]);
+ var layerBounds = new OpenLayers.Bounds(
+ maxExtent[0],maxExtent[1],maxExtent[2],maxExtent[3]);
+ var inside = layerBounds.containsBounds(mapBounds, true);
+ this.options.legend.msg = inside?'':LEGEND_ERRORS[2];
+ }
+ },
+ //Check if the layer has a minimum or maximum zoom set and if the
+ //current zoom is outside these settings, set the legend.msg accordingly
+ _checkZoom: function(center){
+ var zoom = center.zoom;
+ var maxZoom = this.options.maxZoom;
+ var minZoom = this.options.minZoom;
+ this.options.legend.msg=(
+ maxZoom!==undefined&&maxZoom<zoom)? LEGEND_ERRORS[0]:'';
+ this.options.legend.msg=(
+ minZoom!==undefined&&minZoom>zoom)? LEGEND_ERRORS[1]:'';
+ }
+
+});
+
+})(jQuery, $.MapQuery);