diff --git a/dlf/ext_autoload.php b/dlf/ext_autoload.php
index 6c144381..e082c474 100644
--- a/dlf/ext_autoload.php
+++ b/dlf/ext_autoload.php
@@ -56,7 +56,8 @@ return array (
'tx_dlf_toc' => $extensionPath.'plugins/toc/class.tx_dlf_toc.php',
'tx_dlf_toolbox' => $extensionPath.'plugins/toolbox/class.tx_dlf_toolbox.php',
'tx_dlf_toolsPdf' => $extensionPath.'plugins/toolbox/tools/pdf/class.tx_dlf_toolsPdf.php',
- 'tx_dlf_validator' => $extensionPath.'plugins/validator/class.tx_dlf_validator.php'
+ 'tx_dlf_validator' => $extensionPath.'plugins/validator/class.tx_dlf_validator.php',
+ 'tx_dlf_doctype' => $extensionPath.'plugins/doctype/class.tx_dlf_doctype.php'
);
?>
diff --git a/dlf/ext_emconf.php b/dlf/ext_emconf.php
index 177a0b51..f1b19db0 100644
--- a/dlf/ext_emconf.php
+++ b/dlf/ext_emconf.php
@@ -39,7 +39,7 @@ $EM_CONF[$_EXTKEY] = array(
'modify_tables' => '',
'clearCacheOnLoad' => FALSE,
'lockType' => '',
- 'version' => '1.2.2-dev',
+ 'version' => '1.3.0',
'constraints' => array(
'depends' => array(
'php' => '5.3.0-',
diff --git a/dlf/ext_localconf.php b/dlf/ext_localconf.php
index f7659fc4..255fd111 100644
--- a/dlf/ext_localconf.php
+++ b/dlf/ext_localconf.php
@@ -68,4 +68,55 @@ $GLOBALS['TYPO3_CONF_VARS']['SC_OPTIONS']['GLOBAL']['cliKeys'][$_EXTKEY] = array
// Register AJAX eID handlers.
$GLOBALS['TYPO3_CONF_VARS']['FE']['eID_include']['tx_dlf_search_suggest'] = 'EXT:'.$_EXTKEY.'/plugins/search/class.tx_dlf_search_suggest.php';
+
+
+if (TYPO3_MODE === 'FE') {
+
+ /*
+ * docType user function to use in typoscript:
+ *
+ * STORAGEID: uid of dlf storage folder
+ * DOCTYPE: document type string to test
+ *
+ * [userFunc = user_dlf_docTypeCheck(STORAGEID:DOCTYPE)]
+ *
+ * do something different
+ *
+ * [global]
+ *
+ **/
+ function user_dlf_docTypeCheck($cmd) {
+
+ // we have to split the cmd as we cannot have two parameters.
+ // this changed in TYPO3 6.2
+ $pidCondition = explode(':', $cmd);
+
+ $conf['pages'] = $pidCondition[0];
+
+ $docType = t3lib_div::makeInstance('tx_dlf_doctype');
+
+ switch($pidCondition[1]){
+ case "periodical":
+ if ($docType->main($cObj, $conf) === "periodical")
+ return TRUE;
+ break;
+ case "newspaper_global_anchor":
+ if ($docType->main($cObj, $conf) === "newspaper_global_anchor")
+ return TRUE;
+ break;
+ case "newspaper_year_anchor":
+ if ($docType->main($cObj, $conf) === "newspaper_year_anchor")
+ return TRUE;
+ break;
+ case "newspaper_issue":
+ if ($docType->main($cObj, $conf) === "newspaper_issue")
+ return TRUE;
+ break;
+ default : return FALSE;
+ }
+ // this function has to return FALSE or TRUE nothing else
+ return FALSE;
+ }
+
+}
?>
diff --git a/dlf/lib/OpenLayers/AUTHORS.txt b/dlf/lib/OpenLayers/authors.txt
similarity index 65%
rename from dlf/lib/OpenLayers/AUTHORS.txt
rename to dlf/lib/OpenLayers/authors.txt
index b3f2a1f8..dfcd9ff2 100644
--- a/dlf/lib/OpenLayers/AUTHORS.txt
+++ b/dlf/lib/OpenLayers/authors.txt
@@ -7,7 +7,7 @@ Seb Benthall
Bruno Binet
Stéphane Brunner
Howard Butler
-Bertil Chaupis
+Bertil Chaupis
John Cole
Tim Coulter
Robert Coup
@@ -32,10 +32,10 @@ Peter William Robins
Gregers Rygg
Tim Schaub
Christopher Schmidt
-Cameron Shorter
+Cameron Shorter
Pedro Simonetti
-Paul Spencer
-Paul Smith
+Paul Spencer
+Paul Smith
Glen Stampoultzis
James Stembridge
Erik Uzureau
@@ -47,10 +47,10 @@ Steve Woodbridge
David Zwarg
Some portions of OpenLayers are used under the Apache 2.0 license, available
-in licenses/APACHE-2.0.txt.
+in doc/licenses/APACHE-2.0.txt.
-Some portions of OpenLayers are used under the MIT license, available in
-licenses/MIT-LICENSE.txt.
+Some portions of OpenLayers are used under the MIT license, availabie in
+doc/licenses/MIT-LICENSE.txt.
Some portions of OpenLayers are Copyright 2001 Robert Penner, and are used
-under the BSD license, available in licenses/BSD-LICENSE.txt
+under the BSD license, available in doc/licenses/BSD-LICENSE.txt
diff --git a/dlf/lib/OpenLayers/lib/OpenLayers.js b/dlf/lib/OpenLayers/lib/OpenLayers.js
index acd1abd2..03530c25 100644
--- a/dlf/lib/OpenLayers/lib/OpenLayers.js
+++ b/dlf/lib/OpenLayers/lib/OpenLayers.js
@@ -1,4 +1,4 @@
-/* Copyright (c) 2006-2012 by OpenLayers Contributors (see authors.txt for
+/* Copyright (c) 2006-2013 by OpenLayers Contributors (see authors.txt for
* full list of contributors). Published under the 2-clause BSD license.
* See license.txt in the OpenLayers distribution or repository for the
* full text of the license. */
@@ -132,6 +132,7 @@
jsFiles = [
"OpenLayers/BaseTypes/Class.js",
"OpenLayers/Util.js",
+ "OpenLayers/Util/vendorPrefix.js",
"OpenLayers/Animation.js",
"OpenLayers/BaseTypes.js",
"OpenLayers/BaseTypes/Bounds.js",
@@ -143,10 +144,9 @@
"OpenLayers/Console.js",
"OpenLayers/Tween.js",
"OpenLayers/Kinetic.js",
- "Rico/Corner.js",
- "Rico/Color.js",
"OpenLayers/Events.js",
"OpenLayers/Events/buttonclick.js",
+ "OpenLayers/Events/featureclick.js",
"OpenLayers/Request.js",
"OpenLayers/Request/XMLHttpRequest.js",
"OpenLayers/Projection.js",
@@ -190,7 +190,6 @@
"OpenLayers/Layer/Zoomify.js",
"OpenLayers/Layer/ArcGISCache.js",
"OpenLayers/Popup/Anchored.js",
- "OpenLayers/Popup/AnchoredBubble.js",
"OpenLayers/Popup/Framed.js",
"OpenLayers/Popup/FramedCloud.js",
"OpenLayers/Feature.js",
@@ -305,6 +304,7 @@
"OpenLayers/Format/GML/v2.js",
"OpenLayers/Format/GML/v3.js",
"OpenLayers/Format/Atom.js",
+ "OpenLayers/Format/EncodedPolyline.js",
"OpenLayers/Format/KML.js",
"OpenLayers/Format/GeoRSS.js",
"OpenLayers/Format/WFS.js",
@@ -312,6 +312,10 @@
"OpenLayers/Format/OWSCommon/v1.js",
"OpenLayers/Format/OWSCommon/v1_0_0.js",
"OpenLayers/Format/OWSCommon/v1_1_0.js",
+ "OpenLayers/Format/WCSCapabilities.js",
+ "OpenLayers/Format/WCSCapabilities/v1.js",
+ "OpenLayers/Format/WCSCapabilities/v1_0_0.js",
+ "OpenLayers/Format/WCSCapabilities/v1_1_0.js",
"OpenLayers/Format/WFSCapabilities.js",
"OpenLayers/Format/WFSCapabilities/v1.js",
"OpenLayers/Format/WFSCapabilities/v1_0_0.js",
@@ -393,7 +397,10 @@
"OpenLayers/Symbolizer/Raster.js",
"OpenLayers/Lang.js",
"OpenLayers/Lang/en.js",
- "OpenLayers/Spherical.js"
+ "OpenLayers/Spherical.js",
+ "OpenLayers/TileManager.js",
+ "OpenLayers/WPSClient.js",
+ "OpenLayers/WPSProcess.js"
]; // etc.
}
@@ -413,5 +420,10 @@
/**
* Constant: VERSION_NUMBER
+ *
+ * This constant identifies the version of OpenLayers.
+ *
+ * When asking questions or reporting issues, make sure to include the output of
+ * OpenLayers.VERSION_NUMBER in the question or issue-description.
*/
-OpenLayers.VERSION_NUMBER="Release 2.12";
+OpenLayers.VERSION_NUMBER="Release 2.13.1";
diff --git a/dlf/lib/OpenLayers/lib/OpenLayers/Animation.js b/dlf/lib/OpenLayers/lib/OpenLayers/Animation.js
index cadc14de..7b47a088 100644
--- a/dlf/lib/OpenLayers/lib/OpenLayers/Animation.js
+++ b/dlf/lib/OpenLayers/lib/OpenLayers/Animation.js
@@ -1,10 +1,11 @@
-/**
- * Copyright (c) 2006-2012 by OpenLayers Contributors (see authors.txt for
+/* Copyright (c) 2006-2013 by OpenLayers Contributors (see authors.txt for
* full list of contributors). Published under the 2-clause BSD license.
* See license.txt in the OpenLayers distribution or repository for the
- * full text of the license.
- *
+ * full text of the license. */
+
+/**
* @requires OpenLayers/SingleFile.js
+ * @requires OpenLayers/Util/vendorPrefix.js
*/
/**
@@ -19,11 +20,8 @@ OpenLayers.Animation = (function(window) {
* Property: isNative
* {Boolean} true if a native requestAnimationFrame function is available
*/
- var isNative = !!(window.requestAnimationFrame ||
- window.webkitRequestAnimationFrame ||
- window.mozRequestAnimationFrame ||
- window.oRequestAnimationFrame ||
- window.msRequestAnimationFrame);
+ var requestAnimationFrame = OpenLayers.Util.vendorPrefix.js(window, "requestAnimationFrame");
+ var isNative = !!(requestAnimationFrame);
/**
* Function: requestFrame
@@ -36,11 +34,7 @@ OpenLayers.Animation = (function(window) {
* element - {DOMElement} Optional element that visually bounds the animation.
*/
var requestFrame = (function() {
- var request = window.requestAnimationFrame ||
- window.webkitRequestAnimationFrame ||
- window.mozRequestAnimationFrame ||
- window.oRequestAnimationFrame ||
- window.msRequestAnimationFrame ||
+ var request = window[requestAnimationFrame] ||
function(callback, element) {
window.setTimeout(callback, 16);
};
diff --git a/dlf/lib/OpenLayers/lib/OpenLayers/BaseTypes.js b/dlf/lib/OpenLayers/lib/OpenLayers/BaseTypes.js
index 430cc5f5..d416b8fd 100644
--- a/dlf/lib/OpenLayers/lib/OpenLayers/BaseTypes.js
+++ b/dlf/lib/OpenLayers/lib/OpenLayers/BaseTypes.js
@@ -1,4 +1,4 @@
-/* Copyright (c) 2006-2012 by OpenLayers Contributors (see authors.txt for
+/* Copyright (c) 2006-2013 by OpenLayers Contributors (see authors.txt for
* full list of contributors). Published under the 2-clause BSD license.
* See license.txt in the OpenLayers distribution or repository for the
* full text of the license. */
@@ -127,7 +127,9 @@ OpenLayers.String = {
if (i == 0) {
replacement = context;
}
-
+ if (replacement === undefined) {
+ break;
+ }
replacement = replacement[subs[i]];
}
@@ -189,13 +191,18 @@ OpenLayers.String = {
*
* Parameters:
* value - {String}
+ * trimWhitespace - {Boolean}
*
* Returns:
* {Number|String} a Number if the passed value is a number, a String
* otherwise.
*/
- numericIf: function(value) {
- return OpenLayers.String.isNumeric(value) ? parseFloat(value) : value;
+ numericIf: function(value, trimWhitespace) {
+ var originalValue = value;
+ if (trimWhitespace === true && value != null && value.replace) {
+ value = value.replace(/^\s*|\s*$/g, "");
+ }
+ return OpenLayers.String.isNumeric(value) ? parseFloat(value) : originalValue;
}
};
@@ -290,7 +297,25 @@ OpenLayers.Number = {
str = integer + dsep + rem;
}
return str;
- }
+ },
+
+ /**
+ * Method: zeroPad
+ * Create a zero padded string optionally with a radix for casting numbers.
+ *
+ * Parameters:
+ * num - {Number} The number to be zero padded.
+ * len - {Number} The length of the string to be returned.
+ * radix - {Number} An integer between 2 and 36 specifying the base to use
+ * for representing numeric values.
+ */
+ zeroPad: function(num, len, radix) {
+ var str = num.toString(radix || 10);
+ while (str.length < len) {
+ str = "0" + str;
+ }
+ return str;
+ }
};
/**
diff --git a/dlf/lib/OpenLayers/lib/OpenLayers/BaseTypes/Bounds.js b/dlf/lib/OpenLayers/lib/OpenLayers/BaseTypes/Bounds.js
index 35f2b6e3..a828eb0c 100644
--- a/dlf/lib/OpenLayers/lib/OpenLayers/BaseTypes/Bounds.js
+++ b/dlf/lib/OpenLayers/lib/OpenLayers/BaseTypes/Bounds.js
@@ -1,4 +1,4 @@
-/* Copyright (c) 2006-2012 by OpenLayers Contributors (see authors.txt for
+/* Copyright (c) 2006-2013 by OpenLayers Contributors (see authors.txt for
* full list of contributors). Published under the 2-clause BSD license.
* See license.txt in the OpenLayers distribution or repository for the
* full text of the license. */
@@ -63,7 +63,7 @@ OpenLayers.Bounds = OpenLayers.Class({
* left - {Number} The left bounds of the box. Note that for width
* calculations, this is assumed to be less than the right value.
* bottom - {Number} The bottom bounds of the box. Note that for height
- * calculations, this is assumed to be more than the top value.
+ * calculations, this is assumed to be less than the top value.
* right - {Number} The right bounds.
* top - {Number} The top bounds.
*
@@ -128,6 +128,7 @@ OpenLayers.Bounds = OpenLayers.Class({
/**
* APIMethod: toString
+ * Returns a string representation of the bounds object.
*
* Returns:
* {String} String representation of bounds object.
@@ -138,6 +139,11 @@ OpenLayers.Bounds = OpenLayers.Class({
/**
* APIMethod: toArray
+ * Returns an array representation of the bounds object.
+ *
+ * Returns an array of left, bottom, right, top properties, or -- when the
+ * optional parameter is true -- an array of the bottom, left, top,
+ * right properties.
*
* Parameters:
* reverseAxisOrder - {Boolean} Should we reverse the axis order?
@@ -155,6 +161,7 @@ OpenLayers.Bounds = OpenLayers.Class({
/**
* APIMethod: toBBOX
+ * Returns a boundingbox-string representation of the bounds object.
*
* Parameters:
* decimal - {Integer} How many significant digits in the bbox coords?
@@ -163,7 +170,7 @@ OpenLayers.Bounds = OpenLayers.Class({
*
* Returns:
* {String} Simple String representation of bounds object.
- * (e.g. "5,42,10,45")
+ * (e.g. "5,42,10,45")
*/
toBBOX:function(decimal, reverseAxisOrder) {
if (decimal== null) {
@@ -202,9 +209,10 @@ OpenLayers.Bounds = OpenLayers.Class({
/**
* APIMethod: getWidth
+ * Returns the width of the bounds.
*
* Returns:
- * {Float} The width of the bounds
+ * {Float} The width of the bounds (right minus left).
*/
getWidth:function() {
return (this.right - this.left);
@@ -212,6 +220,7 @@ OpenLayers.Bounds = OpenLayers.Class({
/**
* APIMethod: getHeight
+ * Returns the height of the bounds.
*
* Returns:
* {Float} The height of the bounds (top minus bottom).
@@ -222,9 +231,10 @@ OpenLayers.Bounds = OpenLayers.Class({
/**
* APIMethod: getSize
+ * Returns an object of the bounds.
*
* Returns:
- * {} The size of the box.
+ * {} The size of the bounds.
*/
getSize:function() {
return new OpenLayers.Size(this.getWidth(), this.getHeight());
@@ -232,6 +242,8 @@ OpenLayers.Bounds = OpenLayers.Class({
/**
* APIMethod: getCenterPixel
+ * Returns the object which represents the center of the
+ * bounds.
*
* Returns:
* {} The center of the bounds in pixel space.
@@ -243,7 +255,9 @@ OpenLayers.Bounds = OpenLayers.Class({
/**
* APIMethod: getCenterLonLat
- *
+ * Returns the object which represents the center of the
+ * bounds.
+ *
* Returns:
* {} The center of the bounds in map space.
*/
@@ -297,11 +311,24 @@ OpenLayers.Bounds = OpenLayers.Class({
/**
* APIMethod: add
- *
+ * Shifts the coordinates of the bound by the given horizontal and vertical
+ * deltas.
+ *
+ * (start code)
+ * var bounds = new OpenLayers.Bounds(0, 0, 10, 10);
+ * bounds.toString();
+ * // => "0,0,10,10"
+ *
+ * bounds.add(-1.5, 4).toString();
+ * // => "-1.5,4,8.5,14"
+ * (end)
+ *
+ * This method will throw a TypeError if it is passed null as an argument.
+ *
* Parameters:
- * x - {Float}
- * y - {Float}
- *
+ * x - {Float} horizontal delta
+ * y - {Float} vertical delta
+ *
* Returns:
* {} A new bounds whose coordinates are the same as
* this, but shifted by the passed-in x and y values.
@@ -316,51 +343,77 @@ OpenLayers.Bounds = OpenLayers.Class({
/**
* APIMethod: extend
- * Extend the bounds to include the point, lonlat, or bounds specified.
- * Note, this function assumes that left < right and bottom < top.
- *
- * Parameters:
- * object - {Object} Can be LonLat, Point, or Bounds
+ * Extend the bounds to include the ,
+ * or specified.
+ *
+ * Please note that this function assumes that left < right and
+ * bottom < top.
+ *
+ * Parameters:
+ * object - {, or
+ * } The object to be included in the new bounds
+ * object.
*/
extend:function(object) {
- var bounds = null;
if (object) {
- // clear cached center location
switch(object.CLASS_NAME) {
- case "OpenLayers.LonLat":
- bounds = new OpenLayers.Bounds(object.lon, object.lat,
- object.lon, object.lat);
+ case "OpenLayers.LonLat":
+ this.extendXY(object.lon, object.lat);
break;
case "OpenLayers.Geometry.Point":
- bounds = new OpenLayers.Bounds(object.x, object.y,
- object.x, object.y);
+ this.extendXY(object.x, object.y);
break;
-
- case "OpenLayers.Bounds":
- bounds = object;
+
+ case "OpenLayers.Bounds":
+ // clear cached center location
+ this.centerLonLat = null;
+
+ if ( (this.left == null) || (object.left < this.left)) {
+ this.left = object.left;
+ }
+ if ( (this.bottom == null) || (object.bottom < this.bottom) ) {
+ this.bottom = object.bottom;
+ }
+ if ( (this.right == null) || (object.right > this.right) ) {
+ this.right = object.right;
+ }
+ if ( (this.top == null) || (object.top > this.top) ) {
+ this.top = object.top;
+ }
break;
}
-
- if (bounds) {
- this.centerLonLat = null;
- if ( (this.left == null) || (bounds.left < this.left)) {
- this.left = bounds.left;
- }
- if ( (this.bottom == null) || (bounds.bottom < this.bottom) ) {
- this.bottom = bounds.bottom;
- }
- if ( (this.right == null) || (bounds.right > this.right) ) {
- this.right = bounds.right;
- }
- if ( (this.top == null) || (bounds.top > this.top) ) {
- this.top = bounds.top;
- }
- }
+ }
+ },
+
+ /**
+ * APIMethod: extendXY
+ * Extend the bounds to include the XY coordinate specified.
+ *
+ * Parameters:
+ * x - {number} The X part of the the coordinate.
+ * y - {number} The Y part of the the coordinate.
+ */
+ extendXY:function(x, y) {
+ // clear cached center location
+ this.centerLonLat = null;
+
+ if ((this.left == null) || (x < this.left)) {
+ this.left = x;
+ }
+ if ((this.bottom == null) || (y < this.bottom)) {
+ this.bottom = y;
+ }
+ if ((this.right == null) || (x > this.right)) {
+ this.right = x;
+ }
+ if ((this.top == null) || (y > this.top)) {
+ this.top = y;
}
},
/**
* APIMethod: containsLonLat
+ * Returns whether the bounds object contains the given .
*
* Parameters:
* ll - {|Object} OpenLayers.LonLat or an
@@ -399,6 +452,7 @@ OpenLayers.Bounds = OpenLayers.Class({
/**
* APIMethod: containsPixel
+ * Returns whether the bounds object contains the given .
*
* Parameters:
* px - {}
@@ -414,6 +468,7 @@ OpenLayers.Bounds = OpenLayers.Class({
/**
* APIMethod: contains
+ * Returns whether the bounds object contains the given x and y.
*
* Parameters:
* x - {Float}
@@ -535,7 +590,7 @@ OpenLayers.Bounds = OpenLayers.Class({
/**
* APIMethod: containsBounds
- * Determine whether the target bounds is contained within this bounds.
+ * Returns whether the bounds object contains the given .
*
* bounds - {} The target bounds.
* partial - {Boolean} If any of the target corners is within this bounds
@@ -565,10 +620,12 @@ OpenLayers.Bounds = OpenLayers.Class({
/**
* APIMethod: determineQuadrant
- *
+ * Returns the the quadrant ("br", "tr", "tl", "bl") in which the given
+ * lies.
+ *
* Parameters:
* lonlat - {}
- *
+ *
* Returns:
* {String} The quadrant ("br" "tr" "tl" "bl") of the bounds in which the
* coordinate lies.
@@ -615,6 +672,7 @@ OpenLayers.Bounds = OpenLayers.Class({
/**
* APIMethod: wrapDateLine
+ * Wraps the bounds object around the dateline.
*
* Parameters:
* maxExtent - {}
@@ -681,12 +739,18 @@ OpenLayers.Bounds = OpenLayers.Class({
/**
* APIFunction: fromString
* Alternative constructor that builds a new OpenLayers.Bounds from a
- * parameter string
- *
+ * parameter string.
+ *
+ * (begin code)
+ * OpenLayers.Bounds.fromString("5,42,10,45");
+ * // => equivalent to ...
+ * new OpenLayers.Bounds(5, 42, 10, 45);
+ * (end)
+ *
* Parameters:
- * str - {String}Comma-separated bounds string. (e.g. "5,42,10,45")
+ * str - {String} Comma-separated bounds string. (e.g. "5,42,10,45")
* reverseAxisOrder - {Boolean} Does the string use reverse axis order?
- *
+ *
* Returns:
* {} New bounds object built from the
* passed-in String.
@@ -698,11 +762,16 @@ OpenLayers.Bounds.fromString = function(str, reverseAxisOrder) {
/**
* APIFunction: fromArray
- * Alternative constructor that builds a new OpenLayers.Bounds
- * from an array
- *
+ * Alternative constructor that builds a new OpenLayers.Bounds from an array.
+ *
+ * (begin code)
+ * OpenLayers.Bounds.fromArray( [5, 42, 10, 45] );
+ * // => equivalent to ...
+ * new OpenLayers.Bounds(5, 42, 10, 45);
+ * (end)
+ *
* Parameters:
- * bbox - {Array(Float)} Array of bounds values (e.g. [5,42,10,45])
+ * bbox - {Array(Float)} Array of bounds values (e.g. [5,42,10,45])
* reverseAxisOrder - {Boolean} Does the array use reverse axis order?
*
* Returns:
@@ -716,12 +785,17 @@ OpenLayers.Bounds.fromArray = function(bbox, reverseAxisOrder) {
/**
* APIFunction: fromSize
- * Alternative constructor that builds a new OpenLayers.Bounds
- * from a size
- *
+ * Alternative constructor that builds a new OpenLayers.Bounds from a size.
+ *
+ * (begin code)
+ * OpenLayers.Bounds.fromSize( new OpenLayers.Size(10, 20) );
+ * // => equivalent to ...
+ * new OpenLayers.Bounds(0, 20, 10, 0);
+ * (end)
+ *
* Parameters:
- * size - {|Object} OpenLayers.Size or an object with
- * a 'w' and 'h' properties.
+ * size - { or Object} or an object with
+ * both 'w' and 'h' properties.
*
* Returns:
* {} New bounds object built from the passed-in size.
@@ -737,6 +811,14 @@ OpenLayers.Bounds.fromSize = function(size) {
* Function: oppositeQuadrant
* Get the opposite quadrant for a given quadrant string.
*
+ * (begin code)
+ * OpenLayers.Bounds.oppositeQuadrant( "tl" );
+ * // => "br"
+ *
+ * OpenLayers.Bounds.oppositeQuadrant( "tr" );
+ * // => "bl"
+ * (end)
+ *
* Parameters:
* quadrant - {String} two character quadrant shortstring
*
diff --git a/dlf/lib/OpenLayers/lib/OpenLayers/BaseTypes/Class.js b/dlf/lib/OpenLayers/lib/OpenLayers/BaseTypes/Class.js
index b703464f..2be72129 100644
--- a/dlf/lib/OpenLayers/lib/OpenLayers/BaseTypes/Class.js
+++ b/dlf/lib/OpenLayers/lib/OpenLayers/BaseTypes/Class.js
@@ -1,4 +1,4 @@
-/* Copyright (c) 2006-2012 by OpenLayers Contributors (see authors.txt for
+/* Copyright (c) 2006-2013 by OpenLayers Contributors (see authors.txt for
* full list of contributors). Published under the 2-clause BSD license.
* See license.txt in the OpenLayers distribution or repository for the
* full text of the license. */
diff --git a/dlf/lib/OpenLayers/lib/OpenLayers/BaseTypes/Date.js b/dlf/lib/OpenLayers/lib/OpenLayers/BaseTypes/Date.js
index f42b713e..2646f247 100644
--- a/dlf/lib/OpenLayers/lib/OpenLayers/BaseTypes/Date.js
+++ b/dlf/lib/OpenLayers/lib/OpenLayers/BaseTypes/Date.js
@@ -1,4 +1,4 @@
-/* Copyright (c) 2006-2012 by OpenLayers Contributors (see authors.txt for
+/* Copyright (c) 2006-2013 by OpenLayers Contributors (see authors.txt for
* full list of contributors). Published under the 2-clause BSD license.
* See license.txt in the OpenLayers distribution or repository for the
* full text of the license. */
@@ -15,6 +15,14 @@
*/
OpenLayers.Date = {
+ /**
+ * APIProperty: dateRegEx
+ * The regex to be used for validating dates. You can provide your own
+ * regex for instance for adding support for years before BC. Default
+ * value is: /^(?:(\d{4})(?:-(\d{2})(?:-(\d{2}))?)?)?(?:(?:T(\d{1,2}):(\d{2}):(\d{2}(?:\.\d+)?)(Z|(?:[+-]\d{1,2}(?::(\d{2}))?)))|Z)?$/
+ */
+ dateRegEx: /^(?:(\d{4})(?:-(\d{2})(?:-(\d{2}))?)?)?(?:(?:T(\d{1,2}):(\d{2}):(\d{2}(?:\.\d+)?)(Z|(?:[+-]\d{1,2}(?::(\d{2}))?)))|Z)?$/,
+
/**
* APIMethod: toISOString
* Generates a string representing a date. The format of the string follows
@@ -41,13 +49,6 @@ OpenLayers.Date = {
return date.toISOString();
};
} else {
- function pad(num, len) {
- var str = num + "";
- while (str.length < len) {
- str = "0" + str;
- }
- return str;
- }
return function(date) {
var str;
if (isNaN(date.getTime())) {
@@ -57,12 +58,12 @@ OpenLayers.Date = {
} else {
str =
date.getUTCFullYear() + "-" +
- pad(date.getUTCMonth() + 1, 2) + "-" +
- pad(date.getUTCDate(), 2) + "T" +
- pad(date.getUTCHours(), 2) + ":" +
- pad(date.getUTCMinutes(), 2) + ":" +
- pad(date.getUTCSeconds(), 2) + "." +
- pad(date.getUTCMilliseconds(), 3) + "Z";
+ OpenLayers.Number.zeroPad(date.getUTCMonth() + 1, 2) + "-" +
+ OpenLayers.Number.zeroPad(date.getUTCDate(), 2) + "T" +
+ OpenLayers.Number.zeroPad(date.getUTCHours(), 2) + ":" +
+ OpenLayers.Number.zeroPad(date.getUTCMinutes(), 2) + ":" +
+ OpenLayers.Number.zeroPad(date.getUTCSeconds(), 2) + "." +
+ OpenLayers.Number.zeroPad(date.getUTCMilliseconds(), 3) + "Z";
}
return str;
};
@@ -91,7 +92,7 @@ OpenLayers.Date = {
*/
parse: function(str) {
var date;
- var match = str.match(/^(?:(\d{4})(?:-(\d{2})(?:-(\d{2}))?)?)?(?:(?:T(\d{1,2}):(\d{2}):(\d{2}(?:\.\d+)?)(Z|(?:[+-]\d{1,2}(?::(\d{2}))?)))|Z)?$/);
+ var match = str.match(this.dateRegEx);
if (match && (match[1] || match[7])) { // must have at least year or time
var year = parseInt(match[1], 10) || 0;
var month = (parseInt(match[2], 10) - 1) || 0;
diff --git a/dlf/lib/OpenLayers/lib/OpenLayers/BaseTypes/Element.js b/dlf/lib/OpenLayers/lib/OpenLayers/BaseTypes/Element.js
index 9a54b4dd..dc71b5c8 100644
--- a/dlf/lib/OpenLayers/lib/OpenLayers/BaseTypes/Element.js
+++ b/dlf/lib/OpenLayers/lib/OpenLayers/BaseTypes/Element.js
@@ -1,4 +1,4 @@
-/* Copyright (c) 2006-2012 by OpenLayers Contributors (see authors.txt for
+/* Copyright (c) 2006-2013 by OpenLayers Contributors (see authors.txt for
* full list of contributors). Published under the 2-clause BSD license.
* See license.txt in the OpenLayers distribution or repository for the
* full text of the license. */
diff --git a/dlf/lib/OpenLayers/lib/OpenLayers/BaseTypes/LonLat.js b/dlf/lib/OpenLayers/lib/OpenLayers/BaseTypes/LonLat.js
index 892961fd..0780dc33 100644
--- a/dlf/lib/OpenLayers/lib/OpenLayers/BaseTypes/LonLat.js
+++ b/dlf/lib/OpenLayers/lib/OpenLayers/BaseTypes/LonLat.js
@@ -1,4 +1,4 @@
-/* Copyright (c) 2006-2012 by OpenLayers Contributors (see authors.txt for
+/* Copyright (c) 2006-2013 by OpenLayers Contributors (see authors.txt for
* full list of contributors). Published under the 2-clause BSD license.
* See license.txt in the OpenLayers distribution or repository for the
* full text of the license. */
diff --git a/dlf/lib/OpenLayers/lib/OpenLayers/BaseTypes/Pixel.js b/dlf/lib/OpenLayers/lib/OpenLayers/BaseTypes/Pixel.js
index 55d07f4a..d6ac60ab 100644
--- a/dlf/lib/OpenLayers/lib/OpenLayers/BaseTypes/Pixel.js
+++ b/dlf/lib/OpenLayers/lib/OpenLayers/BaseTypes/Pixel.js
@@ -1,4 +1,4 @@
-/* Copyright (c) 2006-2012 by OpenLayers Contributors (see authors.txt for
+/* Copyright (c) 2006-2013 by OpenLayers Contributors (see authors.txt for
* full list of contributors). Published under the 2-clause BSD license.
* See license.txt in the OpenLayers distribution or repository for the
* full text of the license. */
diff --git a/dlf/lib/OpenLayers/lib/OpenLayers/BaseTypes/Size.js b/dlf/lib/OpenLayers/lib/OpenLayers/BaseTypes/Size.js
index ef4d12ad..34c7a6c8 100644
--- a/dlf/lib/OpenLayers/lib/OpenLayers/BaseTypes/Size.js
+++ b/dlf/lib/OpenLayers/lib/OpenLayers/BaseTypes/Size.js
@@ -1,4 +1,4 @@
-/* Copyright (c) 2006-2012 by OpenLayers Contributors (see authors.txt for
+/* Copyright (c) 2006-2013 by OpenLayers Contributors (see authors.txt for
* full list of contributors). Published under the 2-clause BSD license.
* See license.txt in the OpenLayers distribution or repository for the
* full text of the license. */
diff --git a/dlf/lib/OpenLayers/lib/OpenLayers/Console.js b/dlf/lib/OpenLayers/lib/OpenLayers/Console.js
index 823ba1c9..ef5029aa 100644
--- a/dlf/lib/OpenLayers/lib/OpenLayers/Console.js
+++ b/dlf/lib/OpenLayers/lib/OpenLayers/Console.js
@@ -1,4 +1,4 @@
-/* Copyright (c) 2006-2012 by OpenLayers Contributors (see authors.txt for
+/* Copyright (c) 2006-2013 by OpenLayers Contributors (see authors.txt for
* full list of contributors). Published under the 2-clause BSD license.
* See license.txt in the OpenLayers distribution or repository for the
* full text of the license. */
diff --git a/dlf/lib/OpenLayers/lib/OpenLayers/Control.js b/dlf/lib/OpenLayers/lib/OpenLayers/Control.js
index e585ce82..472a4e6e 100644
--- a/dlf/lib/OpenLayers/lib/OpenLayers/Control.js
+++ b/dlf/lib/OpenLayers/lib/OpenLayers/Control.js
@@ -1,4 +1,4 @@
-/* Copyright (c) 2006-2012 by OpenLayers Contributors (see authors.txt for
+/* Copyright (c) 2006-2013 by OpenLayers Contributors (see authors.txt for
* full list of contributors). Published under the 2-clause BSD license.
* See license.txt in the OpenLayers distribution or repository for the
* full text of the license. */
@@ -120,6 +120,12 @@ OpenLayers.Control = OpenLayers.Class({
*/
active: null,
+ /**
+ * Property: handlerOptions
+ * {Object} Used to set non-default properties on the control's handler
+ */
+ handlerOptions: null,
+
/**
* Property: handler
* {} null
diff --git a/dlf/lib/OpenLayers/lib/OpenLayers/Control/ArgParser.js b/dlf/lib/OpenLayers/lib/OpenLayers/Control/ArgParser.js
index abfd6b36..6b076f57 100644
--- a/dlf/lib/OpenLayers/lib/OpenLayers/Control/ArgParser.js
+++ b/dlf/lib/OpenLayers/lib/OpenLayers/Control/ArgParser.js
@@ -1,4 +1,4 @@
-/* Copyright (c) 2006-2012 by OpenLayers Contributors (see authors.txt for
+/* Copyright (c) 2006-2013 by OpenLayers Contributors (see authors.txt for
* full list of contributors). Published under the 2-clause BSD license.
* See license.txt in the OpenLayers distribution or repository for the
* full text of the license. */
diff --git a/dlf/lib/OpenLayers/lib/OpenLayers/Control/Attribution.js b/dlf/lib/OpenLayers/lib/OpenLayers/Control/Attribution.js
index 6e50ee60..e5ea1ce6 100644
--- a/dlf/lib/OpenLayers/lib/OpenLayers/Control/Attribution.js
+++ b/dlf/lib/OpenLayers/lib/OpenLayers/Control/Attribution.js
@@ -1,4 +1,4 @@
-/* Copyright (c) 2006-2012 by OpenLayers Contributors (see authors.txt for
+/* Copyright (c) 2006-2013 by OpenLayers Contributors (see authors.txt for
* full list of contributors). Published under the 2-clause BSD license.
* See license.txt in the OpenLayers distribution or repository for the
* full text of the license. */
@@ -19,8 +19,8 @@ OpenLayers.Control.Attribution =
OpenLayers.Class(OpenLayers.Control, {
/**
- * APIProperty: seperator
- * {String} String used to seperate layers.
+ * APIProperty: separator
+ * {String} String used to separate layers.
*/
separator: ", ",
diff --git a/dlf/lib/OpenLayers/lib/OpenLayers/Control/Button.js b/dlf/lib/OpenLayers/lib/OpenLayers/Control/Button.js
index 84699ee2..830df6d6 100644
--- a/dlf/lib/OpenLayers/lib/OpenLayers/Control/Button.js
+++ b/dlf/lib/OpenLayers/lib/OpenLayers/Control/Button.js
@@ -1,4 +1,4 @@
-/* Copyright (c) 2006-2012 by OpenLayers Contributors (see authors.txt for
+/* Copyright (c) 2006-2013 by OpenLayers Contributors (see authors.txt for
* full list of contributors). Published under the 2-clause BSD license.
* See license.txt in the OpenLayers distribution or repository for the
* full text of the license. */
diff --git a/dlf/lib/OpenLayers/lib/OpenLayers/Control/CacheRead.js b/dlf/lib/OpenLayers/lib/OpenLayers/Control/CacheRead.js
index b08928c6..7768bce2 100644
--- a/dlf/lib/OpenLayers/lib/OpenLayers/Control/CacheRead.js
+++ b/dlf/lib/OpenLayers/lib/OpenLayers/Control/CacheRead.js
@@ -1,4 +1,4 @@
-/* Copyright (c) 2006-2012 by OpenLayers Contributors (see authors.txt for
+/* Copyright (c) 2006-2013 by OpenLayers Contributors (see authors.txt for
* full list of contributors). Published under the 2-clause BSD license.
* See license.txt in the OpenLayers distribution or repository for the
* full text of the license. */
diff --git a/dlf/lib/OpenLayers/lib/OpenLayers/Control/CacheWrite.js b/dlf/lib/OpenLayers/lib/OpenLayers/Control/CacheWrite.js
index 8b4e787e..3d4ecf51 100644
--- a/dlf/lib/OpenLayers/lib/OpenLayers/Control/CacheWrite.js
+++ b/dlf/lib/OpenLayers/lib/OpenLayers/Control/CacheWrite.js
@@ -1,4 +1,4 @@
-/* Copyright (c) 2006-2012 by OpenLayers Contributors (see authors.txt for
+/* Copyright (c) 2006-2013 by OpenLayers Contributors (see authors.txt for
* full list of contributors). Published under the 2-clause BSD license.
* See license.txt in the OpenLayers distribution or repository for the
* full text of the license. */
@@ -111,7 +111,7 @@ OpenLayers.Control.CacheWrite = OpenLayers.Class(OpenLayers.Control, {
addLayer: function(evt) {
evt.layer.events.on({
tileloadstart: this.makeSameOrigin,
- tileloaded: this.cache,
+ tileloaded: this.onTileLoaded,
scope: this
});
},
@@ -128,7 +128,7 @@ OpenLayers.Control.CacheWrite = OpenLayers.Class(OpenLayers.Control, {
removeLayer: function(evt) {
evt.layer.events.un({
tileloadstart: this.makeSameOrigin,
- tileloaded: this.cache,
+ tileloaded: this.onTileLoaded,
scope: this
});
},
@@ -156,6 +156,22 @@ OpenLayers.Control.CacheWrite = OpenLayers.Class(OpenLayers.Control, {
}
},
+ /**
+ * Method: onTileLoaded
+ * Decides whether a tile can be cached and calls the cache method.
+ *
+ * Parameters:
+ * evt - {Event}
+ */
+ onTileLoaded: function(evt) {
+ if (this.active && !evt.aborted &&
+ evt.tile instanceof OpenLayers.Tile.Image &&
+ evt.tile.url.substr(0, 5) !== 'data:') {
+ this.cache({tile: evt.tile});
+ delete OpenLayers.Control.CacheWrite.urlMap[evt.tile.url];
+ }
+ },
+
/**
* Method: cache
* Adds a tile to the cache. When the cache is full, the "cachefull" event
@@ -166,29 +182,25 @@ OpenLayers.Control.CacheWrite = OpenLayers.Class(OpenLayers.Control, {
* with the data to add to the cache
*/
cache: function(obj) {
- if (this.active && window.localStorage) {
+ if (window.localStorage) {
var tile = obj.tile;
- if (tile instanceof OpenLayers.Tile.Image &&
- tile.url.substr(0, 5) !== 'data:') {
- try {
- var canvasContext = tile.getCanvasContext();
- if (canvasContext) {
- var urlMap = OpenLayers.Control.CacheWrite.urlMap;
- var url = urlMap[tile.url] || tile.url;
- window.localStorage.setItem(
- "olCache_" + url,
- canvasContext.canvas.toDataURL(this.imageFormat)
- );
- delete urlMap[tile.url];
- }
- } catch(e) {
- // local storage full or CORS violation
- var reason = e.name || e.message;
- if (reason && this.quotaRegEx.test(reason)) {
- this.events.triggerEvent("cachefull", {tile: tile});
- } else {
- OpenLayers.Console.error(e.toString());
- }
+ try {
+ var canvasContext = tile.getCanvasContext();
+ if (canvasContext) {
+ var urlMap = OpenLayers.Control.CacheWrite.urlMap;
+ var url = urlMap[tile.url] || tile.url;
+ window.localStorage.setItem(
+ "olCache_" + url,
+ canvasContext.canvas.toDataURL(this.imageFormat)
+ );
+ }
+ } catch(e) {
+ // local storage full or CORS violation
+ var reason = e.name || e.message;
+ if (reason && this.quotaRegEx.test(reason)) {
+ this.events.triggerEvent("cachefull", {tile: tile});
+ } else {
+ OpenLayers.Console.error(e.toString());
}
}
}
diff --git a/dlf/lib/OpenLayers/lib/OpenLayers/Control/DragFeature.js b/dlf/lib/OpenLayers/lib/OpenLayers/Control/DragFeature.js
index af81062e..d8fb15f9 100644
--- a/dlf/lib/OpenLayers/lib/OpenLayers/Control/DragFeature.js
+++ b/dlf/lib/OpenLayers/lib/OpenLayers/Control/DragFeature.js
@@ -1,4 +1,4 @@
-/* Copyright (c) 2006-2012 by OpenLayers Contributors (see authors.txt for
+/* Copyright (c) 2006-2013 by OpenLayers Contributors (see authors.txt for
* full list of contributors). Published under the 2-clause BSD license.
* See license.txt in the OpenLayers distribution or repository for the
* full text of the license. */
diff --git a/dlf/lib/OpenLayers/lib/OpenLayers/Control/DragPan.js b/dlf/lib/OpenLayers/lib/OpenLayers/Control/DragPan.js
index 1dc3eb5c..981a649f 100644
--- a/dlf/lib/OpenLayers/lib/OpenLayers/Control/DragPan.js
+++ b/dlf/lib/OpenLayers/lib/OpenLayers/Control/DragPan.js
@@ -1,4 +1,4 @@
-/* Copyright (c) 2006-2012 by OpenLayers Contributors (see authors.txt for
+/* Copyright (c) 2006-2013 by OpenLayers Contributors (see authors.txt for
* full list of contributors). Published under the 2-clause BSD license.
* See license.txt in the OpenLayers distribution or repository for the
* full text of the license. */
@@ -32,11 +32,12 @@ OpenLayers.Control.DragPan = OpenLayers.Class(OpenLayers.Control, {
/**
* Property: interval
* {Integer} The number of milliseconds that should ellapse before
- * panning the map again. Defaults to 1 millisecond. In most cases
- * you won't want to change this value. For slow machines/devices
- * larger values can be tried out.
+ * panning the map again. Defaults to 0 milliseconds, which means that
+ * no separate cycle is used for panning. In most cases you won't want
+ * to change this value. For slow machines/devices larger values can be
+ * tried out.
*/
- interval: 1,
+ interval: 0,
/**
* APIProperty: documentDrag
@@ -56,11 +57,11 @@ OpenLayers.Control.DragPan = OpenLayers.Class(OpenLayers.Control, {
* {Boolean} Set this option to enable "kinetic dragging". Can be
* set to true or to an object. If set to an object this
* object will be passed to the {}
- * constructor. Defaults to false.
- * If you set this property, you should ensure that
- * OpenLayers/Kinetic.js is included in your build config
+ * constructor. Defaults to true.
+ * To get kinetic dragging, ensure that OpenLayers/Kinetic.js is
+ * included in your build config.
*/
- enableKinetic: false,
+ enableKinetic: true,
/**
* APIProperty: kineticInterval
@@ -77,7 +78,7 @@ OpenLayers.Control.DragPan = OpenLayers.Class(OpenLayers.Control, {
* as callbacks.
*/
draw: function() {
- if(this.enableKinetic) {
+ if (this.enableKinetic && OpenLayers.Kinetic) {
var config = {interval: this.kineticInterval};
if(typeof this.enableKinetic === "object") {
config = OpenLayers.Util.extend(config, this.enableKinetic);
diff --git a/dlf/lib/OpenLayers/lib/OpenLayers/Control/DrawFeature.js b/dlf/lib/OpenLayers/lib/OpenLayers/Control/DrawFeature.js
index 62b5fab5..b0afc71a 100644
--- a/dlf/lib/OpenLayers/lib/OpenLayers/Control/DrawFeature.js
+++ b/dlf/lib/OpenLayers/lib/OpenLayers/Control/DrawFeature.js
@@ -1,4 +1,4 @@
-/* Copyright (c) 2006-2012 by OpenLayers Contributors (see authors.txt for
+/* Copyright (c) 2006-2013 by OpenLayers Contributors (see authors.txt for
* full list of contributors). Published under the 2-clause BSD license.
* See license.txt in the OpenLayers distribution or repository for the
* full text of the license. */
@@ -62,7 +62,6 @@ OpenLayers.Control.DrawFeature = OpenLayers.Class(OpenLayers.Control, {
* APIProperty: handlerOptions
* {Object} Used to set non-default properties on the control's handler
*/
- handlerOptions: null,
/**
* Constructor: OpenLayers.Control.DrawFeature
diff --git a/dlf/lib/OpenLayers/lib/OpenLayers/Control/EditingToolbar.js b/dlf/lib/OpenLayers/lib/OpenLayers/Control/EditingToolbar.js
index 4cd4f855..ba7ca401 100644
--- a/dlf/lib/OpenLayers/lib/OpenLayers/Control/EditingToolbar.js
+++ b/dlf/lib/OpenLayers/lib/OpenLayers/Control/EditingToolbar.js
@@ -1,4 +1,4 @@
-/* Copyright (c) 2006-2012 by OpenLayers Contributors (see authors.txt for
+/* Copyright (c) 2006-2013 by OpenLayers Contributors (see authors.txt for
* full list of contributors). Published under the 2-clause BSD license.
* See license.txt in the OpenLayers distribution or repository for the
* full text of the license. */
diff --git a/dlf/lib/OpenLayers/lib/OpenLayers/Control/Geolocate.js b/dlf/lib/OpenLayers/lib/OpenLayers/Control/Geolocate.js
index 0a1e18e3..4b5b4395 100644
--- a/dlf/lib/OpenLayers/lib/OpenLayers/Control/Geolocate.js
+++ b/dlf/lib/OpenLayers/lib/OpenLayers/Control/Geolocate.js
@@ -1,4 +1,4 @@
-/* Copyright (c) 2006-2012 by OpenLayers Contributors (see authors.txt for
+/* Copyright (c) 2006-2013 by OpenLayers Contributors (see authors.txt for
* full list of contributors). Published under the 2-clause BSD license.
* See license.txt in the OpenLayers distribution or repository for the
* full text of the license. */
@@ -45,8 +45,15 @@ OpenLayers.Control.Geolocate = OpenLayers.Class(OpenLayers.Control, {
/**
* Property: geolocation
* {Object} The geolocation engine, as a property to be possibly mocked.
+ * This is set lazily to avoid a memory leak in IE9.
*/
- geolocation: navigator.geolocation,
+ geolocation: null,
+
+ /**
+ * Property: available
+ * {Boolean} The navigator.geolocation object is available.
+ */
+ available: ('geolocation' in navigator),
/**
* APIProperty: bind
@@ -90,6 +97,10 @@ OpenLayers.Control.Geolocate = OpenLayers.Class(OpenLayers.Control, {
* {Boolean} The control was effectively activated.
*/
activate: function () {
+ if (this.available && !this.geolocation) {
+ // set lazily to avoid IE9 memory leak
+ this.geolocation = navigator.geolocation;
+ }
if (!this.geolocation) {
this.events.triggerEvent("locationuncapable");
return false;
diff --git a/dlf/lib/OpenLayers/lib/OpenLayers/Control/GetFeature.js b/dlf/lib/OpenLayers/lib/OpenLayers/Control/GetFeature.js
index 368ea9c0..144e87fc 100644
--- a/dlf/lib/OpenLayers/lib/OpenLayers/Control/GetFeature.js
+++ b/dlf/lib/OpenLayers/lib/OpenLayers/Control/GetFeature.js
@@ -1,4 +1,4 @@
-/* Copyright (c) 2006-2012 by OpenLayers Contributors (see authors.txt for
+/* Copyright (c) 2006-2013 by OpenLayers Contributors (see authors.txt for
* full list of contributors). Published under the 2-clause BSD license.
* See license.txt in the OpenLayers distribution or repository for the
* full text of the license. */
@@ -144,7 +144,6 @@ OpenLayers.Control.GetFeature = OpenLayers.Class(OpenLayers.Control, {
* {Object} Additional options for the handlers used by this control. This
* is a hash with the keys "click", "box" and "hover".
*/
- handlerOptions: null,
/**
* Property: handlers
diff --git a/dlf/lib/OpenLayers/lib/OpenLayers/Control/Graticule.js b/dlf/lib/OpenLayers/lib/OpenLayers/Control/Graticule.js
index e393c4b1..2fce50d4 100644
--- a/dlf/lib/OpenLayers/lib/OpenLayers/Control/Graticule.js
+++ b/dlf/lib/OpenLayers/lib/OpenLayers/Control/Graticule.js
@@ -1,4 +1,4 @@
-/* Copyright (c) 2006-2012 by OpenLayers Contributors (see authors.txt for
+/* Copyright (c) 2006-2013 by OpenLayers Contributors (see authors.txt for
* full list of contributors). Published under the 2-clause BSD license.
* See license.txt in the OpenLayers distribution or repository for the
* full text of the license. */
diff --git a/dlf/lib/OpenLayers/lib/OpenLayers/Control/KeyboardDefaults.js b/dlf/lib/OpenLayers/lib/OpenLayers/Control/KeyboardDefaults.js
index b973b3d6..3af88317 100644
--- a/dlf/lib/OpenLayers/lib/OpenLayers/Control/KeyboardDefaults.js
+++ b/dlf/lib/OpenLayers/lib/OpenLayers/Control/KeyboardDefaults.js
@@ -1,4 +1,4 @@
-/* Copyright (c) 2006-2012 by OpenLayers Contributors (see authors.txt for
+/* Copyright (c) 2006-2013 by OpenLayers Contributors (see authors.txt for
* full list of contributors). Published under the 2-clause BSD license.
* See license.txt in the OpenLayers distribution or repository for the
* full text of the license. */
@@ -6,6 +6,7 @@
/**
* @requires OpenLayers/Control.js
* @requires OpenLayers/Handler/Keyboard.js
+ * @requires OpenLayers/Events.js
*/
/**
@@ -75,7 +76,16 @@ OpenLayers.Control.KeyboardDefaults = OpenLayers.Class(OpenLayers.Control, {
*/
defaultKeyPress: function (evt) {
var size, handled = true;
- switch(evt.keyCode) {
+
+ var target = OpenLayers.Event.element(evt);
+ if (target &&
+ (target.tagName == 'INPUT' ||
+ target.tagName == 'TEXTAREA' ||
+ target.tagName == 'SELECT')) {
+ return;
+ }
+
+ switch (evt.keyCode) {
case OpenLayers.Event.KEY_LEFT:
this.map.pan(-this.slideFactor, 0);
break;
diff --git a/dlf/lib/OpenLayers/lib/OpenLayers/Control/LayerSwitcher.js b/dlf/lib/OpenLayers/lib/OpenLayers/Control/LayerSwitcher.js
index b8524efe..668f5c34 100644
--- a/dlf/lib/OpenLayers/lib/OpenLayers/Control/LayerSwitcher.js
+++ b/dlf/lib/OpenLayers/lib/OpenLayers/Control/LayerSwitcher.js
@@ -1,49 +1,30 @@
-/* Copyright (c) 2006-2012 by OpenLayers Contributors (see authors.txt for
+/* Copyright (c) 2006-2013 by OpenLayers Contributors (see authors.txt for
* full list of contributors). Published under the 2-clause BSD license.
* See license.txt in the OpenLayers distribution or repository for the
* full text of the license. */
-/**
+/**
* @requires OpenLayers/Control.js
* @requires OpenLayers/Lang.js
- * @requires OpenLayers/Console.js
+ * @requires OpenLayers/Util.js
* @requires OpenLayers/Events/buttonclick.js
*/
/**
* Class: OpenLayers.Control.LayerSwitcher
- * The LayerSwitcher control displays a table of contents for the map. This
+ * The LayerSwitcher control displays a table of contents for the map. This
* allows the user interface to switch between BaseLasyers and to show or hide
- * Overlays. By default the switcher is shown minimized on the right edge of
+ * Overlays. By default the switcher is shown minimized on the right edge of
* the map, the user may expand it by clicking on the handle.
*
- * To create the LayerSwitcher outside of the map, pass the Id of a html div
+ * To create the LayerSwitcher outside of the map, pass the Id of a html div
* as the first argument to the constructor.
- *
+ *
* Inherits from:
* -
*/
-OpenLayers.Control.LayerSwitcher =
- OpenLayers.Class(OpenLayers.Control, {
+OpenLayers.Control.LayerSwitcher = OpenLayers.Class(OpenLayers.Control, {
- /**
- * APIProperty: roundedCorner
- * {Boolean} If true the Rico library is used for rounding the corners
- * of the layer switcher div, defaults to false. *Deprecated*. Use
- * CSS3's border-radius instead. If this option is set to true the
- * Rico/Corner.js script must be loaded in the page, and therefore
- * listed in the build profile.
- *
- */
- roundedCorner: false,
-
- /**
- * APIProperty: roundedCornerColor
- * {String} The color of the rounded corners, only applies if roundedCorner
- * is true, defaults to "darkblue".
- */
- roundedCornerColor: "darkblue",
-
/**
* Property: layerStates
* {Array(Object)} Basically a copy of the "state" of the map's layers
@@ -51,90 +32,85 @@ OpenLayers.Control.LayerSwitcher =
* unnecessarily redrawing the control.
*/
layerStates: null,
-
// DOM Elements
-
+
/**
* Property: layersDiv
- * {DOMElement}
+ * {DOMElement}
*/
layersDiv: null,
-
- /**
+
+ /**
* Property: baseLayersDiv
* {DOMElement}
*/
baseLayersDiv: null,
- /**
+ /**
* Property: baseLayers
* {Array(Object)}
*/
baseLayers: null,
-
-
- /**
+
+
+ /**
* Property: dataLbl
- * {DOMElement}
+ * {DOMElement}
*/
dataLbl: null,
-
- /**
+
+ /**
* Property: dataLayersDiv
- * {DOMElement}
+ * {DOMElement}
*/
dataLayersDiv: null,
- /**
+ /**
* Property: dataLayers
- * {Array(Object)}
+ * {Array(Object)}
*/
dataLayers: null,
- /**
+ /**
* Property: minimizeDiv
- * {DOMElement}
+ * {DOMElement}
*/
minimizeDiv: null,
- /**
+ /**
* Property: maximizeDiv
- * {DOMElement}
+ * {DOMElement}
*/
maximizeDiv: null,
-
+
/**
* APIProperty: ascending
- * {Boolean}
+ * {Boolean}
*/
ascending: true,
-
+
/**
* Constructor: OpenLayers.Control.LayerSwitcher
- *
+ *
* Parameters:
* options - {Object}
*/
initialize: function(options) {
OpenLayers.Control.prototype.initialize.apply(this, arguments);
this.layerStates = [];
-
- if(this.roundedCorner) {
- OpenLayers.Console.warn('roundedCorner option is deprecated');
- }
},
/**
- * APIMethod: destroy
- */
+ * APIMethod: destroy
+ */
destroy: function() {
-
- //clear out layers info and unregister their events
+
+ //clear out layers info and unregister their events
this.clearLayersArray("base");
this.clearLayersArray("data");
-
+
this.map.events.un({
buttonclick: this.onButtonClick,
addlayer: this.redraw,
@@ -144,15 +120,15 @@ OpenLayers.Control.LayerSwitcher =
scope: this
});
this.events.unregister("buttonclick", this, this.onButtonClick);
-
+
OpenLayers.Control.prototype.destroy.apply(this, arguments);
},
- /**
+ /**
* Method: setMap
*
* Properties:
- * map - {}
+ * map - {}
*/
setMap: function(map) {
OpenLayers.Control.prototype.setMap.apply(this, arguments);
@@ -176,9 +152,9 @@ OpenLayers.Control.LayerSwitcher =
* Method: draw
*
* Returns:
- * {DOMElement} A reference to the DIV DOMElement containing the
+ * {DOMElement} A reference to the DIV DOMElement containing the
* switcher tabs.
- */
+ */
draw: function() {
OpenLayers.Control.prototype.draw.apply(this);
@@ -191,7 +167,7 @@ OpenLayers.Control.LayerSwitcher =
}
// populate div with current info
- this.redraw();
+ this.redraw();
return this.div;
},
@@ -224,13 +200,13 @@ OpenLayers.Control.LayerSwitcher =
}
},
- /**
+ /**
* Method: clearLayersArray
* User specifies either "base" or "data". we then clear all the
* corresponding listeners, the div, and reinitialize a new array.
- *
+ *
* Parameters:
- * layersType - {String}
+ * layersType - {String}
*/
clearLayersArray: function(layersType) {
this[layersType + "LayersDiv"].innerHTML = "";
@@ -241,54 +217,53 @@ OpenLayers.Control.LayerSwitcher =
/**
* Method: checkRedraw
* Checks if the layer state has changed since the last redraw() call.
- *
+ *
* Returns:
- * {Boolean} The layer state changed since the last redraw() call.
+ * {Boolean} The layer state changed since the last redraw() call.
*/
checkRedraw: function() {
- var redraw = false;
if ( !this.layerStates.length ||
(this.map.layers.length != this.layerStates.length) ) {
- redraw = true;
- } else {
- for (var i=0, len=this.layerStates.length; i
labelSpan["for"] = inputElem.id;
OpenLayers.Element.addClass(labelSpan, "labelSpan olButton");
labelSpan._layer = layer.id;
@@ -350,12 +333,12 @@ OpenLayers.Control.LayerSwitcher =
labelSpan.style.color = "gray";
}
labelSpan.innerHTML = layer.name;
- labelSpan.style.verticalAlign = (baseLayer) ? "bottom"
+ labelSpan.style.verticalAlign = (baseLayer) ? "bottom"
: "baseline";
// create line break
var br = document.createElement("br");
-
-
+
+
var groupArray = (baseLayer) ? this.baseLayers
: this.dataLayers;
groupArray.push({
@@ -363,8 +346,8 @@ OpenLayers.Control.LayerSwitcher =
'inputElem': inputElem,
'labelSpan': labelSpan
});
-
-
+
+
var groupDiv = (baseLayer) ? this.baseLayersDiv
: this.dataLayersDiv;
groupDiv.appendChild(inputElem);
@@ -374,24 +357,24 @@ OpenLayers.Control.LayerSwitcher =
}
// if no overlays, dont display the overlay label
- this.dataLbl.style.display = (containsOverlays) ? "" : "none";
-
+ this.dataLbl.style.display = (containsOverlays) ? "" : "none";
+
// if no baselayers, dont display the baselayer label
- this.baseLbl.style.display = (containsBaseLayers) ? "" : "none";
+ this.baseLbl.style.display = (containsBaseLayers) ? "" : "none";
return this.div;
},
- /**
+ /**
* Method: updateMap
* Cycles through the loaded data and base layer input arrays and makes
- * the necessary calls to the Map object such that that the map's
- * visual state corresponds to what the user has selected in
+ * the necessary calls to the Map object such that that the map's
+ * visual state corresponds to what the user has selected in
* the control.
*/
updateMap: function() {
- // set the newly selected base layer
+ // set the newly selected base layer
for(var i=0, len=this.baseLayers.length; i} Events instance for listeners and triggering
* control specific events.
@@ -41,29 +41,28 @@ OpenLayers.Control.Measure = OpenLayers.Class(OpenLayers.Control, {
* APIProperty: handlerOptions
* {Object} Used to set non-default properties on the control's handler
*/
- handlerOptions: null,
-
+
/**
* Property: callbacks
* {Object} The functions that are sent to the handler for callback
*/
callbacks: null,
-
+
/**
- * Property: displaySystem
+ * APIProperty: displaySystem
* {String} Display system for output measurements. Supported values
* are 'english', 'metric', and 'geographic'. Default is 'metric'.
*/
displaySystem: 'metric',
-
+
/**
- * Property: geodesic
+ * APIProperty: geodesic
* {Boolean} Calculate geodesic metrics instead of planar metrics. This
* requires that geometries can be transformed into Geographic/WGS84
* (if that is not already the map projection). Default is false.
*/
geodesic: false,
-
+
/**
* Property: displaySystemUnits
* {Object} Units for various measurement systems. Values are arrays
@@ -112,10 +111,10 @@ OpenLayers.Control.Measure = OpenLayers.Class(OpenLayers.Control, {
/**
* Constructor: OpenLayers.Control.Measure
- *
+ *
* Parameters:
- * handler - {}
- * options - {Object}
+ * handler - {}
+ * options - {Object}
*/
initialize: function(handler, options) {
OpenLayers.Control.prototype.initialize.apply(this, [options]);
@@ -126,14 +125,14 @@ OpenLayers.Control.Measure = OpenLayers.Class(OpenLayers.Control, {
}
this.callbacks = OpenLayers.Util.extend(callbacks, this.callbacks);
- // let the handler options override, so old code that passes 'persist'
+ // let the handler options override, so old code that passes 'persist'
// directly to the handler does not need an update
this.handlerOptions = OpenLayers.Util.extend(
{persist: this.persist}, this.handlerOptions
);
this.handler = new handler(this, this.callbacks, this.handlerOptions);
},
-
+
/**
* APIMethod: deactivate
*/
@@ -165,7 +164,7 @@ OpenLayers.Control.Measure = OpenLayers.Class(OpenLayers.Control, {
delete this.callbacks.modify;
}
},
-
+
/**
* Method: updateHandler
*
@@ -195,7 +194,7 @@ OpenLayers.Control.Measure = OpenLayers.Class(OpenLayers.Control, {
this.cancelDelay();
this.measure(geometry, "measure");
},
-
+
/**
* Method: measurePartial
* Called each time a new point is added to the measurement sketch.
@@ -226,9 +225,11 @@ OpenLayers.Control.Measure = OpenLayers.Class(OpenLayers.Control, {
/**
* Method: measureImmediate
* Called each time the measurement sketch is modified.
- *
- * Parameters: point - {} The point at the
- * mouseposition. feature - {} The sketch feature.
+ *
+ * Parameters:
+ * point - {} The point at the mouse position.
+ * feature - {} The sketch feature.
+ * drawing - {Boolean} Indicates whether we're currently drawing.
*/
measureImmediate : function(point, feature, drawing) {
if (drawing && !this.handler.freehandMode(this.handler.evt)) {
@@ -271,7 +272,7 @@ OpenLayers.Control.Measure = OpenLayers.Class(OpenLayers.Control, {
geometry: geometry
});
},
-
+
/**
* Method: getBestArea
* Based on the returns the area of a geometry.
@@ -295,7 +296,7 @@ OpenLayers.Control.Measure = OpenLayers.Class(OpenLayers.Control, {
}
return [area, unit];
},
-
+
/**
* Method: getArea
*
@@ -322,7 +323,7 @@ OpenLayers.Control.Measure = OpenLayers.Class(OpenLayers.Control, {
}
return area;
},
-
+
/**
* Method: getBestLength
* Based on the returns the length of a geometry.
diff --git a/dlf/lib/OpenLayers/lib/OpenLayers/Control/ModifyFeature.js b/dlf/lib/OpenLayers/lib/OpenLayers/Control/ModifyFeature.js
index 4dc2347e..e574608c 100644
--- a/dlf/lib/OpenLayers/lib/OpenLayers/Control/ModifyFeature.js
+++ b/dlf/lib/OpenLayers/lib/OpenLayers/Control/ModifyFeature.js
@@ -1,11 +1,11 @@
-/* Copyright (c) 2006-2012 by OpenLayers Contributors (see authors.txt for
+/* Copyright (c) 2006-2013 by OpenLayers Contributors (see authors.txt for
* full list of contributors). Published under the 2-clause BSD license.
* See license.txt in the OpenLayers distribution or repository for the
* full text of the license. */
/**
- * @requires OpenLayers/Control/DragFeature.js
- * @requires OpenLayers/Control/SelectFeature.js
+ * @requires OpenLayers/Control.js
+ * @requires OpenLayers/Handler/Drag.js
* @requires OpenLayers/Handler/Keyboard.js
*/
@@ -22,6 +22,13 @@
*/
OpenLayers.Control.ModifyFeature = OpenLayers.Class(OpenLayers.Control, {
+ /**
+ * APIProperty: documentDrag
+ * {Boolean} If set to true, dragging vertices will continue even if the
+ * mouse cursor leaves the map viewport. Default is false.
+ */
+ documentDrag: false,
+
/**
* APIProperty: geometryTypes
* {Array(String)} To restrict modification to a limited set of geometry
@@ -43,7 +50,7 @@ OpenLayers.Control.ModifyFeature = OpenLayers.Class(OpenLayers.Control, {
* Default is true.
*/
toggle: true,
-
+
/**
* APIProperty: standalone
* {Boolean} Set to true to create a control without SelectFeature
@@ -60,20 +67,26 @@ OpenLayers.Control.ModifyFeature = OpenLayers.Class(OpenLayers.Control, {
* {}
*/
layer: null,
-
+
/**
* Property: feature
* {} Feature currently available for modification.
*/
feature: null,
-
+
+ /**
+ * Property: vertex
+ * {} Vertex currently being modified.
+ */
+ vertex: null,
+
/**
* Property: vertices
* {Array()} Verticies currently available
* for dragging.
*/
vertices: null,
-
+
/**
* Property: virtualVertices
* {Array()} Virtual vertices in the middle
@@ -81,24 +94,12 @@ OpenLayers.Control.ModifyFeature = OpenLayers.Class(OpenLayers.Control, {
*/
virtualVertices: null,
- /**
- * Property: selectControl
- * {}
- */
- selectControl: null,
-
- /**
- * Property: dragControl
- * {}
- */
- dragControl: null,
-
/**
* Property: handlers
* {Object}
*/
handlers: null,
-
+
/**
* APIProperty: deleteCodes
* {Array(Integer)} Keycodes for deleting verticies. Set to null to disable
@@ -113,7 +114,7 @@ OpenLayers.Control.ModifyFeature = OpenLayers.Class(OpenLayers.Control, {
* {Object} A symbolizer to be used for virtual vertices.
*/
virtualStyle: null,
-
+
/**
* APIProperty: vertexRenderIntent
* {String} The renderIntent to use for vertices. If no is
@@ -225,63 +226,50 @@ OpenLayers.Control.ModifyFeature = OpenLayers.Class(OpenLayers.Control, {
if(!(OpenLayers.Util.isArray(this.deleteCodes))) {
this.deleteCodes = [this.deleteCodes];
}
- var control = this;
-
- // configure the select control
- var selectOptions = {
- geometryTypes: this.geometryTypes,
- clickout: this.clickout,
- toggle: this.toggle,
- onBeforeSelect: this.beforeSelectFeature,
- onSelect: this.selectFeature,
- onUnselect: this.unselectFeature,
- scope: this
- };
- if(this.standalone === false) {
- this.selectControl = new OpenLayers.Control.SelectFeature(
- layer, selectOptions
- );
- }
-
- // configure the drag control
- var dragOptions = {
- geometryTypes: ["OpenLayers.Geometry.Point"],
- onStart: function(feature, pixel) {
- control.dragStart.apply(control, [feature, pixel]);
+
+ // configure the drag handler
+ var dragCallbacks = {
+ down: function(pixel) {
+ this.vertex = null;
+ var feature = this.layer.getFeatureFromEvent(
+ this.handlers.drag.evt);
+ if (feature) {
+ this.dragStart(feature);
+ } else if (this.clickout) {
+ this._unselect = this.feature;
+ }
},
- onDrag: function(feature, pixel) {
- control.dragVertex.apply(control, [feature, pixel]);
+ move: function(pixel) {
+ delete this._unselect;
+ if (this.vertex) {
+ this.dragVertex(this.vertex, pixel);
+ }
},
- onComplete: function(feature) {
- control.dragComplete.apply(control, [feature]);
+ up: function() {
+ this.handlers.drag.stopDown = false;
+ if (this._unselect) {
+ this.unselectFeature(this._unselect);
+ delete this._unselect;
+ }
},
- featureCallbacks: {
- over: function(feature) {
- /**
- * In normal mode, the feature handler is set up to allow
- * dragging of all points. In standalone mode, we only
- * want to allow dragging of sketch vertices and virtual
- * vertices - or, in the case of a modifiable point, the
- * point itself.
- */
- if(control.standalone !== true || feature._sketch ||
- control.feature === feature) {
- control.dragControl.overFeature.apply(
- control.dragControl, [feature]);
- }
+ done: function(pixel) {
+ if (this.vertex) {
+ this.dragComplete(this.vertex);
}
}
};
- this.dragControl = new OpenLayers.Control.DragFeature(
- layer, dragOptions
- );
+ var dragOptions = {
+ documentDrag: this.documentDrag,
+ stopDown: false
+ };
// configure the keyboard handler
var keyboardOptions = {
keydown: this.handleKeypress
};
this.handlers = {
- keyboard: new OpenLayers.Handler.Keyboard(this, keyboardOptions)
+ keyboard: new OpenLayers.Handler.Keyboard(this, keyboardOptions),
+ drag: new OpenLayers.Handler.Drag(this, dragCallbacks, dragOptions)
};
},
@@ -290,9 +278,14 @@ OpenLayers.Control.ModifyFeature = OpenLayers.Class(OpenLayers.Control, {
* Take care of things that are not handled in superclass.
*/
destroy: function() {
+ if (this.map) {
+ this.map.events.un({
+ "removelayer": this.handleMapEvents,
+ "changelayer": this.handleMapEvents,
+ scope: this
+ });
+ }
this.layer = null;
- this.standalone || this.selectControl.destroy();
- this.dragControl.destroy();
OpenLayers.Control.prototype.destroy.apply(this, []);
},
@@ -304,8 +297,14 @@ OpenLayers.Control.ModifyFeature = OpenLayers.Class(OpenLayers.Control, {
* {Boolean} Successfully activated the control.
*/
activate: function() {
- return ((this.standalone || this.selectControl.activate()) &&
- this.handlers.keyboard.activate() &&
+ this.moveLayerToTop();
+ this.map.events.on({
+ "removelayer": this.handleMapEvents,
+ "changelayer": this.handleMapEvents,
+ scope: this
+ });
+ return (this.handlers.keyboard.activate() &&
+ this.handlers.drag.activate() &&
OpenLayers.Control.prototype.activate.apply(this, arguments));
},
@@ -320,29 +319,26 @@ OpenLayers.Control.ModifyFeature = OpenLayers.Class(OpenLayers.Control, {
var deactivated = false;
// the return from the controls is unimportant in this case
if(OpenLayers.Control.prototype.deactivate.apply(this, arguments)) {
+ this.moveLayerBack();
+ this.map.events.un({
+ "removelayer": this.handleMapEvents,
+ "changelayer": this.handleMapEvents,
+ scope: this
+ });
this.layer.removeFeatures(this.vertices, {silent: true});
this.layer.removeFeatures(this.virtualVertices, {silent: true});
this.vertices = [];
- this.dragControl.deactivate();
- var feature = this.feature;
- var valid = feature && feature.geometry && feature.layer;
- if(this.standalone === false) {
- if(valid) {
- this.selectControl.unselect.apply(this.selectControl,
- [feature]);
- }
- this.selectControl.deactivate();
- } else {
- if(valid) {
- this.unselectFeature(feature);
- }
- }
+ this.handlers.drag.deactivate();
this.handlers.keyboard.deactivate();
+ var feature = this.feature;
+ if (feature && feature.geometry && feature.layer) {
+ this.unselectFeature(feature);
+ }
deactivated = true;
}
return deactivated;
},
-
+
/**
* Method: beforeSelectFeature
* Called before a feature is selected.
@@ -359,19 +355,28 @@ OpenLayers.Control.ModifyFeature = OpenLayers.Class(OpenLayers.Control, {
/**
* APIMethod: selectFeature
* Select a feature for modification in standalone mode. In non-standalone
- * mode, this method is called when the select feature control selects a
- * feature. Register a listener to the beforefeaturemodified event and
- * return false to prevent feature modification.
+ * mode, this method is called when a feature is selected by clicking.
+ * Register a listener to the beforefeaturemodified event and return false
+ * to prevent feature modification.
*
* Parameters:
* feature - {} the selected feature.
*/
selectFeature: function(feature) {
- if (!this.standalone || this.beforeSelectFeature(feature) !== false) {
+ if (this.feature === feature ||
+ (this.geometryTypes && OpenLayers.Util.indexOf(this.geometryTypes,
+ feature.geometry.CLASS_NAME) == -1)) {
+ return;
+ }
+ if (this.beforeSelectFeature(feature) !== false) {
+ if (this.feature) {
+ this.unselectFeature(this.feature);
+ }
this.feature = feature;
+ this.layer.selectedFeatures.push(feature);
+ this.layer.drawFeature(feature, 'select');
this.modified = false;
this.resetVertices();
- this.dragControl.activate();
this.onModificationStart(this.feature);
}
// keep track of geometry modifications
@@ -401,8 +406,9 @@ OpenLayers.Control.ModifyFeature = OpenLayers.Class(OpenLayers.Control, {
this.layer.destroyFeatures([this.radiusHandle], {silent: true});
delete this.radiusHandle;
}
+ this.layer.drawFeature(this.feature, 'default');
this.feature = null;
- this.dragControl.deactivate();
+ OpenLayers.Util.removeItem(this.layer.selectedFeatures, feature);
this.onModificationEnd(feature);
this.layer.events.triggerEvent("afterfeaturemodified", {
feature: feature,
@@ -410,64 +416,48 @@ OpenLayers.Control.ModifyFeature = OpenLayers.Class(OpenLayers.Control, {
});
this.modified = false;
},
-
+
+
/**
* Method: dragStart
- * Called by the drag feature control with before a feature is dragged.
- * This method is used to differentiate between points and vertices
- * of higher order geometries. This respects the
- * property and forces a select of points when the drag control is
- * already active (and stops events from propagating to the select
- * control).
+ * Called by the drag handler before a feature is dragged. This method is
+ * used to differentiate between points and vertices
+ * of higher order geometries.
*
* Parameters:
* feature - {} The point or vertex about to be
* dragged.
- * pixel - {} Pixel location of the mouse event.
*/
- dragStart: function(feature, pixel) {
- // only change behavior if the feature is not in the vertices array
- if(feature != this.feature && !feature.geometry.parent &&
- feature != this.dragHandle && feature != this.radiusHandle) {
- if(this.standalone === false && this.feature) {
- // unselect the currently selected feature
- this.selectControl.clickFeature.apply(this.selectControl,
- [this.feature]);
- }
- // check any constraints on the geometry type
- if(this.geometryTypes == null ||
- OpenLayers.Util.indexOf(this.geometryTypes,
- feature.geometry.CLASS_NAME) != -1) {
- // select the point
- this.standalone || this.selectControl.clickFeature.apply(
- this.selectControl, [feature]);
- /**
- * TBD: These lines improve workflow by letting the user
- * immediately start dragging after the mouse down.
- * However, it is very ugly to be messing with controls
- * and their handlers in this way. I'd like a better
- * solution if the workflow change is necessary.
- */
- // prepare the point for dragging
- this.dragControl.overFeature.apply(this.dragControl,
- [feature]);
- this.dragControl.lastPixel = pixel;
- this.dragControl.handlers.drag.started = true;
- this.dragControl.handlers.drag.start = pixel;
- this.dragControl.handlers.drag.last = pixel;
+ dragStart: function(feature) {
+ var isPoint = feature.geometry.CLASS_NAME ==
+ 'OpenLayers.Geometry.Point';
+ if (!this.standalone &&
+ ((!feature._sketch && isPoint) || !feature._sketch)) {
+ if (this.toggle && this.feature === feature) {
+ // mark feature for unselection
+ this._unselect = feature;
}
+ this.selectFeature(feature);
+ }
+ if (feature._sketch || isPoint) {
+ // feature is a drag or virtual handle or point
+ this.vertex = feature;
+ this.handlers.drag.stopDown = true;
}
},
-
+
/**
* Method: dragVertex
- * Called by the drag feature control with each drag move of a vertex.
+ * Called by the drag handler with each drag move of a vertex.
*
* Parameters:
* vertex - {} The vertex being dragged.
* pixel - {} Pixel location of the mouse event.
*/
dragVertex: function(vertex, pixel) {
+ var pos = this.map.getLonLatFromViewPortPx(pixel);
+ var geom = vertex.geometry;
+ geom.move(pos.lon - geom.x, pos.lat - geom.y);
this.modified = true;
/**
* Five cases:
@@ -479,9 +469,6 @@ OpenLayers.Control.ModifyFeature = OpenLayers.Class(OpenLayers.Control, {
*/
if(this.feature.geometry.CLASS_NAME == "OpenLayers.Geometry.Point") {
// dragging a simple point
- if(this.feature != vertex) {
- this.feature = vertex;
- }
this.layer.events.triggerEvent("vertexmodified", {
vertex: vertex.geometry,
feature: this.feature,
@@ -518,7 +505,7 @@ OpenLayers.Control.ModifyFeature = OpenLayers.Class(OpenLayers.Control, {
this.virtualVertices = [];
}
this.layer.drawFeature(this.feature, this.standalone ? undefined :
- this.selectControl.renderIntent);
+ 'select');
}
// keep the vertex on top so it gets the mouseout after dragging
// this should be removed in favor of an option to draw under or
@@ -528,7 +515,7 @@ OpenLayers.Control.ModifyFeature = OpenLayers.Class(OpenLayers.Control, {
/**
* Method: dragComplete
- * Called by the drag feature control when the feature dragging is complete.
+ * Called by the drag handler when the feature dragging is complete.
*
* Parameters:
* vertex - {} The vertex being dragged.
@@ -564,16 +551,6 @@ OpenLayers.Control.ModifyFeature = OpenLayers.Class(OpenLayers.Control, {
* Method: resetVertices
*/
resetVertices: function() {
- // if coming from a drag complete we're about to destroy the vertex
- // that was just dragged. For that reason, the drag feature control
- // will never detect a mouse-out on that vertex, meaning that the drag
- // handler won't be deactivated. This can cause errors because the drag
- // feature control still has a feature to drag but that feature is
- // destroyed. To prevent this, we call outFeature on the drag feature
- // control if the control actually has a feature to drag.
- if(this.dragControl.feature) {
- this.dragControl.outFeature(this.dragControl.feature);
- }
if(this.vertices.length > 0) {
this.layer.removeFeatures(this.vertices, {silent: true});
this.vertices = [];
@@ -624,11 +601,10 @@ OpenLayers.Control.ModifyFeature = OpenLayers.Class(OpenLayers.Control, {
// check for delete key
if(this.feature &&
OpenLayers.Util.indexOf(this.deleteCodes, code) != -1) {
- var vertex = this.dragControl.feature;
- if(vertex &&
- OpenLayers.Util.indexOf(this.vertices, vertex) != -1 &&
- !this.dragControl.handlers.drag.dragging &&
- vertex.geometry.parent) {
+ var vertex = this.layer.getFeatureFromEvent(this.handlers.drag.evt);
+ if (vertex &&
+ OpenLayers.Util.indexOf(this.vertices, vertex) != -1 &&
+ !this.handlers.drag.dragging && vertex.geometry.parent) {
// remove the vertex
vertex.geometry.parent.removeComponent(vertex.geometry);
this.layer.events.triggerEvent("vertexremoved", {
@@ -637,8 +613,7 @@ OpenLayers.Control.ModifyFeature = OpenLayers.Class(OpenLayers.Control, {
pixel: evt.xy
});
this.layer.drawFeature(this.feature, this.standalone ?
- undefined :
- this.selectControl.renderIntent);
+ undefined : 'select');
this.modified = true;
this.resetVertices();
this.setFeatureState();
@@ -792,11 +767,49 @@ OpenLayers.Control.ModifyFeature = OpenLayers.Class(OpenLayers.Control, {
* map - {} The control's map.
*/
setMap: function(map) {
- this.standalone || this.selectControl.setMap(map);
- this.dragControl.setMap(map);
+ this.handlers.drag.setMap(map);
OpenLayers.Control.prototype.setMap.apply(this, arguments);
},
+ /**
+ * Method: handleMapEvents
+ *
+ * Parameters:
+ * evt - {Object}
+ */
+ handleMapEvents: function(evt) {
+ if (evt.type == "removelayer" || evt.property == "order") {
+ this.moveLayerToTop();
+ }
+ },
+
+ /**
+ * Method: moveLayerToTop
+ * Moves the layer for this handler to the top, so mouse events can reach
+ * it.
+ */
+ moveLayerToTop: function() {
+ var index = Math.max(this.map.Z_INDEX_BASE['Feature'] - 1,
+ this.layer.getZIndex()) + 1;
+ this.layer.setZIndex(index);
+
+ },
+
+ /**
+ * Method: moveLayerBack
+ * Moves the layer back to the position determined by the map's layers
+ * array.
+ */
+ moveLayerBack: function() {
+ var index = this.layer.getZIndex() - 1;
+ if (index >= this.map.Z_INDEX_BASE['Feature']) {
+ this.layer.setZIndex(index);
+ } else {
+ this.map.setLayerZIndex(this.layer,
+ this.map.getLayerIndex(this.layer));
+ }
+ },
+
CLASS_NAME: "OpenLayers.Control.ModifyFeature"
});
diff --git a/dlf/lib/OpenLayers/lib/OpenLayers/Control/MousePosition.js b/dlf/lib/OpenLayers/lib/OpenLayers/Control/MousePosition.js
index c3b9c41f..0c88fcf8 100644
--- a/dlf/lib/OpenLayers/lib/OpenLayers/Control/MousePosition.js
+++ b/dlf/lib/OpenLayers/lib/OpenLayers/Control/MousePosition.js
@@ -1,4 +1,4 @@
-/* Copyright (c) 2006-2012 by OpenLayers Contributors (see authors.txt for
+/* Copyright (c) 2006-2013 by OpenLayers Contributors (see authors.txt for
* full list of contributors). Published under the 2-clause BSD license.
* See license.txt in the OpenLayers distribution or repository for the
* full text of the license. */
@@ -13,11 +13,23 @@
* The MousePosition control displays geographic coordinates of the mouse
* pointer, as it is moved about the map.
*
+ * You can use the - or -properties to provide more information
+ * about the displayed coordinates to the user:
+ *
+ * (code)
+ * var mousePositionCtrl = new OpenLayers.Control.MousePosition({
+ * prefix: '' +
+ * 'EPSG:4326 coordinates: '
+ * }
+ * );
+ * (end code)
+ *
* Inherits from:
* -
*/
OpenLayers.Control.MousePosition = OpenLayers.Class(OpenLayers.Control, {
-
+
/**
* APIProperty: autoActivate
* {Boolean} Activate the control when it is added to a map. Default is
@@ -25,50 +37,55 @@ OpenLayers.Control.MousePosition = OpenLayers.Class(OpenLayers.Control, {
*/
autoActivate: true,
- /**
+ /**
* Property: element
- * {DOMElement}
+ * {DOMElement}
*/
element: null,
-
- /**
+
+ /**
* APIProperty: prefix
- * {String}
+ * {String} A string to be prepended to the current pointers coordinates
+ * when it is rendered. Defaults to the empty string ''.
*/
prefix: '',
-
- /**
+
+ /**
* APIProperty: separator
- * {String}
+ * {String} A string to be used to seperate the two coordinates from each
+ * other. Defaults to the string ', ', which will result in a
+ * rendered coordinate of e.g. '42.12, 21.22'.
*/
separator: ', ',
-
- /**
+
+ /**
* APIProperty: suffix
- * {String}
+ * {String} A string to be appended to the current pointers coordinates
+ * when it is rendered. Defaults to the empty string ''.
*/
suffix: '',
-
- /**
+
+ /**
* APIProperty: numDigits
- * {Integer}
+ * {Integer} The number of digits each coordinate shall have when being
+ * rendered, Defaults to 5.
*/
numDigits: 5,
-
- /**
+
+ /**
* APIProperty: granularity
- * {Integer}
+ * {Integer}
*/
granularity: 10,
/**
- * APIProperty: emptyString
+ * APIProperty: emptyString
* {String} Set this to some value to set when the mouse is outside the
* map.
*/
emptyString: null,
-
- /**
+
+ /**
* Property: lastXy
* {}
*/
@@ -76,14 +93,14 @@ OpenLayers.Control.MousePosition = OpenLayers.Class(OpenLayers.Control, {
/**
* APIProperty: displayProjection
- * {} The projection in which the
- * mouse position is displayed
+ * {} The projection in which the mouse position is
+ * displayed.
*/
- displayProjection: null,
-
+ displayProjection: null,
+
/**
* Constructor: OpenLayers.Control.MousePosition
- *
+ *
* Parameters:
* options - {Object} Options for control.
*/
@@ -109,7 +126,7 @@ OpenLayers.Control.MousePosition = OpenLayers.Class(OpenLayers.Control, {
return false;
}
},
-
+
/**
* APIMethod: deactivate
*/
@@ -127,7 +144,7 @@ OpenLayers.Control.MousePosition = OpenLayers.Class(OpenLayers.Control, {
/**
* Method: draw
* {DOMElement}
- */
+ */
draw: function() {
OpenLayers.Control.prototype.draw.apply(this, arguments);
@@ -136,12 +153,12 @@ OpenLayers.Control.MousePosition = OpenLayers.Class(OpenLayers.Control, {
this.div.top = "";
this.element = this.div;
}
-
+
return this.div;
},
-
+
/**
- * Method: redraw
+ * Method: redraw
*/
redraw: function(evt) {
@@ -160,18 +177,18 @@ OpenLayers.Control.MousePosition = OpenLayers.Class(OpenLayers.Control, {
}
lonLat = this.map.getLonLatFromPixel(evt.xy);
- if (!lonLat) {
+ if (!lonLat) {
// map has not yet been properly initialized
return;
- }
+ }
if (this.displayProjection) {
- lonLat.transform(this.map.getProjectionObject(),
+ lonLat.transform(this.map.getProjectionObject(),
this.displayProjection );
- }
+ }
this.lastXy = evt.xy;
-
+
}
-
+
var newHtml = this.formatOutput(lonLat);
if (newHtml != this.element.innerHTML) {
@@ -200,7 +217,7 @@ OpenLayers.Control.MousePosition = OpenLayers.Class(OpenLayers.Control, {
var newHtml =
this.prefix +
lonLat.lon.toFixed(digits) +
- this.separator +
+ this.separator +
lonLat.lat.toFixed(digits) +
this.suffix;
return newHtml;
diff --git a/dlf/lib/OpenLayers/lib/OpenLayers/Control/NavToolbar.js b/dlf/lib/OpenLayers/lib/OpenLayers/Control/NavToolbar.js
index 241682fb..b6bc2aa4 100644
--- a/dlf/lib/OpenLayers/lib/OpenLayers/Control/NavToolbar.js
+++ b/dlf/lib/OpenLayers/lib/OpenLayers/Control/NavToolbar.js
@@ -1,4 +1,4 @@
-/* Copyright (c) 2006-2012 by OpenLayers Contributors (see authors.txt for
+/* Copyright (c) 2006-2013 by OpenLayers Contributors (see authors.txt for
* full list of contributors). Published under the 2-clause BSD license.
* See license.txt in the OpenLayers distribution or repository for the
* full text of the license. */
diff --git a/dlf/lib/OpenLayers/lib/OpenLayers/Control/Navigation.js b/dlf/lib/OpenLayers/lib/OpenLayers/Control/Navigation.js
index 11f1a058..d50e1312 100644
--- a/dlf/lib/OpenLayers/lib/OpenLayers/Control/Navigation.js
+++ b/dlf/lib/OpenLayers/lib/OpenLayers/Control/Navigation.js
@@ -1,4 +1,4 @@
-/* Copyright (c) 2006-2012 by OpenLayers Contributors (see authors.txt for
+/* Copyright (c) 2006-2013 by OpenLayers Contributors (see authors.txt for
* full list of contributors). Published under the 2-clause BSD license.
* See license.txt in the OpenLayers distribution or repository for the
* full text of the license. */
@@ -77,7 +77,9 @@ OpenLayers.Control.Navigation = OpenLayers.Class(OpenLayers.Control, {
/**
* Property: mouseWheelOptions
* {Object} Options passed to the MouseWheel control (only useful if
- * is set to true)
+ * is set to true). Default is no options for maps
+ * with fractionalZoom set to true, otherwise
+ * {cumulative: false, interval: 50, maxDelta: 6}
*/
mouseWheelOptions: null,
@@ -208,10 +210,15 @@ OpenLayers.Control.Navigation = OpenLayers.Class(OpenLayers.Control, {
{map: this.map, keyMask: this.zoomBoxKeyMask});
this.dragPan.draw();
this.zoomBox.draw();
+ var wheelOptions = this.map.fractionalZoom ? {} : {
+ cumulative: false,
+ interval: 50,
+ maxDelta: 6
+ };
this.handlers.wheel = new OpenLayers.Handler.MouseWheel(
- this, {"up" : this.wheelUp,
- "down": this.wheelDown},
- this.mouseWheelOptions );
+ this, {up : this.wheelUp, down: this.wheelDown},
+ OpenLayers.Util.extend(wheelOptions, this.mouseWheelOptions)
+ );
if (OpenLayers.Control.PinchZoom) {
this.pinchZoom = new OpenLayers.Control.PinchZoom(
OpenLayers.Util.extend(
@@ -238,8 +245,7 @@ OpenLayers.Control.Navigation = OpenLayers.Class(OpenLayers.Control, {
* evt - {Event}
*/
defaultDblClick: function (evt) {
- var newCenter = this.map.getLonLatFromViewPortPx( evt.xy );
- this.map.setCenter(newCenter, this.map.zoom + 1);
+ this.map.zoomTo(this.map.zoom + 1, evt.xy);
},
/**
@@ -249,8 +255,7 @@ OpenLayers.Control.Navigation = OpenLayers.Class(OpenLayers.Control, {
* evt - {Event}
*/
defaultDblRightClick: function (evt) {
- var newCenter = this.map.getLonLatFromViewPortPx( evt.xy );
- this.map.setCenter(newCenter, this.map.zoom - 1);
+ this.map.zoomTo(this.map.zoom - 1, evt.xy);
},
/**
@@ -261,22 +266,17 @@ OpenLayers.Control.Navigation = OpenLayers.Class(OpenLayers.Control, {
* deltaZ - {Integer}
*/
wheelChange: function(evt, deltaZ) {
- var currentZoom = this.map.getZoom();
- var newZoom = this.map.getZoom() + Math.round(deltaZ);
+ if (!this.map.fractionalZoom) {
+ deltaZ = Math.round(deltaZ);
+ }
+ var currentZoom = this.map.getZoom(),
+ newZoom = currentZoom + deltaZ;
newZoom = Math.max(newZoom, 0);
newZoom = Math.min(newZoom, this.map.getNumZoomLevels());
if (newZoom === currentZoom) {
return;
}
- var size = this.map.getSize();
- var deltaX = size.w/2 - evt.xy.x;
- var deltaY = evt.xy.y - size.h/2;
- var newRes = this.map.baseLayer.getResolutionForZoom(newZoom);
- var zoomPoint = this.map.getLonLatFromPixel(evt.xy);
- var newCenter = new OpenLayers.LonLat(
- zoomPoint.lon + deltaX * newRes,
- zoomPoint.lat + deltaY * newRes );
- this.map.setCenter( newCenter, newZoom );
+ this.map.zoomTo(newZoom, evt.xy);
},
/**
diff --git a/dlf/lib/OpenLayers/lib/OpenLayers/Control/NavigationHistory.js b/dlf/lib/OpenLayers/lib/OpenLayers/Control/NavigationHistory.js
index 759e9539..bf2f95af 100644
--- a/dlf/lib/OpenLayers/lib/OpenLayers/Control/NavigationHistory.js
+++ b/dlf/lib/OpenLayers/lib/OpenLayers/Control/NavigationHistory.js
@@ -1,4 +1,4 @@
-/* Copyright (c) 2006-2012 by OpenLayers Contributors (see authors.txt for
+/* Copyright (c) 2006-2013 by OpenLayers Contributors (see authors.txt for
* full list of contributors). Published under the 2-clause BSD license.
* See license.txt in the OpenLayers distribution or repository for the
* full text of the license. */
diff --git a/dlf/lib/OpenLayers/lib/OpenLayers/Control/OverviewMap.js b/dlf/lib/OpenLayers/lib/OpenLayers/Control/OverviewMap.js
index 86c07377..50b9300f 100644
--- a/dlf/lib/OpenLayers/lib/OpenLayers/Control/OverviewMap.js
+++ b/dlf/lib/OpenLayers/lib/OpenLayers/Control/OverviewMap.js
@@ -1,4 +1,4 @@
-/* Copyright (c) 2006-2012 by OpenLayers Contributors (see authors.txt for
+/* Copyright (c) 2006-2013 by OpenLayers Contributors (see authors.txt for
* full list of contributors). Published under the 2-clause BSD license.
* See license.txt in the OpenLayers distribution or repository for the
* full text of the license. */
@@ -7,6 +7,9 @@
* @requires OpenLayers/Control.js
* @requires OpenLayers/BaseTypes.js
* @requires OpenLayers/Events/buttonclick.js
+ * @requires OpenLayers/Map.js
+ * @requires OpenLayers/Handler/Click.js
+ * @requires OpenLayers/Handler/Drag.js
*/
/**
@@ -127,6 +130,20 @@ OpenLayers.Control.OverviewMap = OpenLayers.Class(OpenLayers.Control, {
*/
maximized: false,
+ /**
+ * APIProperty: maximizeTitle
+ * {String} This property is used for showing a tooltip over the
+ * maximize div. Defaults to "" (no title).
+ */
+ maximizeTitle: "",
+
+ /**
+ * APIProperty: minimizeTitle
+ * {String} This property is used for showing a tooltip over the
+ * minimize div. Defaults to "" (no title).
+ */
+ minimizeTitle: "",
+
/**
* Constructor: OpenLayers.Control.OverviewMap
* Create a new overview map
@@ -247,6 +264,9 @@ OpenLayers.Control.OverviewMap = OpenLayers.Class(OpenLayers.Control, {
'absolute');
this.maximizeDiv.style.display = 'none';
this.maximizeDiv.className = this.displayClass + 'MaximizeButton olButton';
+ if (this.maximizeTitle) {
+ this.maximizeDiv.title = this.maximizeTitle;
+ }
this.div.appendChild(this.maximizeDiv);
// minimize button div
@@ -259,6 +279,9 @@ OpenLayers.Control.OverviewMap = OpenLayers.Class(OpenLayers.Control, {
'absolute');
this.minimizeDiv.style.display = 'none';
this.minimizeDiv.className = this.displayClass + 'MinimizeButton olButton';
+ if (this.minimizeTitle) {
+ this.minimizeDiv.title = this.minimizeTitle;
+ }
this.div.appendChild(this.minimizeDiv);
this.minimizeControl();
} else {
@@ -398,8 +421,12 @@ OpenLayers.Control.OverviewMap = OpenLayers.Class(OpenLayers.Control, {
* minimize - {Boolean}
*/
showToggle: function(minimize) {
- this.maximizeDiv.style.display = minimize ? '' : 'none';
- this.minimizeDiv.style.display = minimize ? 'none' : '';
+ if (this.maximizeDiv) {
+ this.maximizeDiv.style.display = minimize ? '' : 'none';
+ }
+ if (this.minimizeDiv) {
+ this.minimizeDiv.style.display = minimize ? 'none' : '';
+ }
},
/**
@@ -426,7 +453,7 @@ OpenLayers.Control.OverviewMap = OpenLayers.Class(OpenLayers.Control, {
*/
isSuitableOverview: function() {
var mapExtent = this.map.getExtent();
- var maxExtent = this.map.maxExtent;
+ var maxExtent = this.map.getMaxExtent();
var testExtent = new OpenLayers.Bounds(
Math.max(mapExtent.left, maxExtent.left),
Math.max(mapExtent.bottom, maxExtent.bottom),
diff --git a/dlf/lib/OpenLayers/lib/OpenLayers/Control/Pan.js b/dlf/lib/OpenLayers/lib/OpenLayers/Control/Pan.js
index 2850aa83..d7fcc07c 100644
--- a/dlf/lib/OpenLayers/lib/OpenLayers/Control/Pan.js
+++ b/dlf/lib/OpenLayers/lib/OpenLayers/Control/Pan.js
@@ -1,10 +1,10 @@
-/* Copyright (c) 2006-2012 by OpenLayers Contributors (see authors.txt for
+/* Copyright (c) 2006-2013 by OpenLayers Contributors (see authors.txt for
* full list of contributors). Published under the 2-clause BSD license.
* See license.txt in the OpenLayers distribution or repository for the
* full text of the license. */
/**
- * @requires OpenLayers/Control.js
+ * @requires OpenLayers/Control/Button.js
*/
/**
@@ -15,7 +15,7 @@
* Inherits from:
* -
*/
-OpenLayers.Control.Pan = OpenLayers.Class(OpenLayers.Control, {
+OpenLayers.Control.Pan = OpenLayers.Class(OpenLayers.Control.Button, {
/**
* APIProperty: slideFactor
@@ -40,14 +40,6 @@ OpenLayers.Control.Pan = OpenLayers.Class(OpenLayers.Control, {
*/
direction: null,
- /**
- * Property: type
- * {String} The type of -- When added to a
- * , 'type' is used by the panel to determine how to
- * handle our events.
- */
- type: OpenLayers.Control.TYPE_BUTTON,
-
/**
* Constructor: OpenLayers.Control.Pan
* Control which handles the panning (in any of the cardinal directions)
@@ -70,26 +62,27 @@ OpenLayers.Control.Pan = OpenLayers.Class(OpenLayers.Control, {
* Method: trigger
*/
trigger: function(){
+ if (this.map) {
+ var getSlideFactor = OpenLayers.Function.bind(function (dim) {
+ return this.slideRatio ?
+ this.map.getSize()[dim] * this.slideRatio :
+ this.slideFactor;
+ }, this);
- var getSlideFactor = OpenLayers.Function.bind(function (dim) {
- return this.slideRatio ?
- this.map.getSize()[dim] * this.slideRatio :
- this.slideFactor;
- }, this);
-
- switch (this.direction) {
- case OpenLayers.Control.Pan.NORTH:
- this.map.pan(0, -getSlideFactor("h"));
- break;
- case OpenLayers.Control.Pan.SOUTH:
- this.map.pan(0, getSlideFactor("h"));
- break;
- case OpenLayers.Control.Pan.WEST:
- this.map.pan(-getSlideFactor("w"), 0);
- break;
- case OpenLayers.Control.Pan.EAST:
- this.map.pan(getSlideFactor("w"), 0);
- break;
+ switch (this.direction) {
+ case OpenLayers.Control.Pan.NORTH:
+ this.map.pan(0, -getSlideFactor("h"));
+ break;
+ case OpenLayers.Control.Pan.SOUTH:
+ this.map.pan(0, getSlideFactor("h"));
+ break;
+ case OpenLayers.Control.Pan.WEST:
+ this.map.pan(-getSlideFactor("w"), 0);
+ break;
+ case OpenLayers.Control.Pan.EAST:
+ this.map.pan(getSlideFactor("w"), 0);
+ break;
+ }
}
},
diff --git a/dlf/lib/OpenLayers/lib/OpenLayers/Control/PanPanel.js b/dlf/lib/OpenLayers/lib/OpenLayers/Control/PanPanel.js
index a8369b56..eeedbd0b 100644
--- a/dlf/lib/OpenLayers/lib/OpenLayers/Control/PanPanel.js
+++ b/dlf/lib/OpenLayers/lib/OpenLayers/Control/PanPanel.js
@@ -1,4 +1,4 @@
-/* Copyright (c) 2006-2012 by OpenLayers Contributors (see authors.txt for
+/* Copyright (c) 2006-2013 by OpenLayers Contributors (see authors.txt for
* full list of contributors). Published under the 2-clause BSD license.
* See license.txt in the OpenLayers distribution or repository for the
* full text of the license. */
diff --git a/dlf/lib/OpenLayers/lib/OpenLayers/Control/PanZoom.js b/dlf/lib/OpenLayers/lib/OpenLayers/Control/PanZoom.js
index 9941007e..dd007cf4 100644
--- a/dlf/lib/OpenLayers/lib/OpenLayers/Control/PanZoom.js
+++ b/dlf/lib/OpenLayers/lib/OpenLayers/Control/PanZoom.js
@@ -1,4 +1,4 @@
-/* Copyright (c) 2006-2012 by OpenLayers Contributors (see authors.txt for
+/* Copyright (c) 2006-2013 by OpenLayers Contributors (see authors.txt for
* full list of contributors). Published under the 2-clause BSD license.
* See license.txt in the OpenLayers distribution or repository for the
* full text of the license. */
diff --git a/dlf/lib/OpenLayers/lib/OpenLayers/Control/PanZoomBar.js b/dlf/lib/OpenLayers/lib/OpenLayers/Control/PanZoomBar.js
index 40b59903..ebf29647 100644
--- a/dlf/lib/OpenLayers/lib/OpenLayers/Control/PanZoomBar.js
+++ b/dlf/lib/OpenLayers/lib/OpenLayers/Control/PanZoomBar.js
@@ -1,4 +1,4 @@
-/* Copyright (c) 2006-2012 by OpenLayers Contributors (see authors.txt for
+/* Copyright (c) 2006-2013 by OpenLayers Contributors (see authors.txt for
* full list of contributors). Published under the 2-clause BSD license.
* See license.txt in the OpenLayers distribution or repository for the
* full text of the license. */
@@ -99,6 +99,7 @@ OpenLayers.Control.PanZoomBar = OpenLayers.Class(OpenLayers.Control.PanZoom, {
this.map.events.un({
"changebaselayer": this.redraw,
+ "updatesize": this.redraw,
scope: this
});
@@ -116,7 +117,11 @@ OpenLayers.Control.PanZoomBar = OpenLayers.Class(OpenLayers.Control.PanZoom, {
*/
setMap: function(map) {
OpenLayers.Control.PanZoom.prototype.setMap.apply(this, arguments);
- this.map.events.register("changebaselayer", this, this.redraw);
+ this.map.events.on({
+ "changebaselayer": this.redraw,
+ "updatesize": this.redraw,
+ scope: this
+ });
},
/**
@@ -189,6 +194,7 @@ OpenLayers.Control.PanZoomBar = OpenLayers.Class(OpenLayers.Control.PanZoom, {
_addZoomBar:function(centered) {
var imgLocation = OpenLayers.Util.getImageLocation("slider.png");
var id = this.id + "_" + this.map.id;
+ var minZoom = this.map.getMinZoom();
var zoomsToEnd = this.map.getNumZoomLevels() - 1 - this.map.getZoom();
var slider = OpenLayers.Util.createAlphaImageDiv(id,
centered.add(-1, zoomsToEnd * this.zoomStopHeight),
@@ -211,7 +217,7 @@ OpenLayers.Control.PanZoomBar = OpenLayers.Class(OpenLayers.Control.PanZoom, {
var sz = {
w: this.zoomStopWidth,
- h: this.zoomStopHeight * this.map.getNumZoomLevels()
+ h: this.zoomStopHeight * (this.map.getNumZoomLevels() - minZoom)
};
var imgLocation = OpenLayers.Util.getImageLocation("zoombar.png");
var div = null;
@@ -242,7 +248,7 @@ OpenLayers.Control.PanZoomBar = OpenLayers.Class(OpenLayers.Control.PanZoom, {
this.map.events.register("zoomend", this, this.moveZoomBar);
centered = centered.add(0,
- this.zoomStopHeight * this.map.getNumZoomLevels());
+ this.zoomStopHeight * (this.map.getNumZoomLevels() - minZoom));
return centered;
},
diff --git a/dlf/lib/OpenLayers/lib/OpenLayers/Control/Panel.js b/dlf/lib/OpenLayers/lib/OpenLayers/Control/Panel.js
index 4db0fb43..150afa70 100644
--- a/dlf/lib/OpenLayers/lib/OpenLayers/Control/Panel.js
+++ b/dlf/lib/OpenLayers/lib/OpenLayers/Control/Panel.js
@@ -1,4 +1,4 @@
-/* Copyright (c) 2006-2012 by OpenLayers Contributors (see authors.txt for
+/* Copyright (c) 2006-2013 by OpenLayers Contributors (see authors.txt for
* full list of contributors). Published under the 2-clause BSD license.
* See license.txt in the OpenLayers distribution or repository for the
* full text of the license. */
diff --git a/dlf/lib/OpenLayers/lib/OpenLayers/Control/Permalink.js b/dlf/lib/OpenLayers/lib/OpenLayers/Control/Permalink.js
index 36545655..3d5d7a28 100644
--- a/dlf/lib/OpenLayers/lib/OpenLayers/Control/Permalink.js
+++ b/dlf/lib/OpenLayers/lib/OpenLayers/Control/Permalink.js
@@ -1,4 +1,4 @@
-/* Copyright (c) 2006-2012 by OpenLayers Contributors (see authors.txt for
+/* Copyright (c) 2006-2013 by OpenLayers Contributors (see authors.txt for
* full list of contributors). Published under the 2-clause BSD license.
* See license.txt in the OpenLayers distribution or repository for the
* full text of the license. */
@@ -172,11 +172,18 @@ OpenLayers.Control.Permalink = OpenLayers.Class(OpenLayers.Control, {
updateLink: function() {
var separator = this.anchor ? '#' : '?';
var href = this.base;
+ var anchor = null;
+ if (href.indexOf("#") != -1 && this.anchor == false) {
+ anchor = href.substring( href.indexOf("#"), href.length);
+ }
if (href.indexOf(separator) != -1) {
href = href.substring( 0, href.indexOf(separator) );
}
-
- href += separator + OpenLayers.Util.getParameterString(this.createParams());
+ var splits = href.split("#");
+ href = splits[0] + separator+ OpenLayers.Util.getParameterString(this.createParams());
+ if (anchor) {
+ href += anchor;
+ }
if (this.anchor && !this.element) {
window.location.href = href;
}
diff --git a/dlf/lib/OpenLayers/lib/OpenLayers/Control/PinchZoom.js b/dlf/lib/OpenLayers/lib/OpenLayers/Control/PinchZoom.js
index 51dc44fc..13c11049 100644
--- a/dlf/lib/OpenLayers/lib/OpenLayers/Control/PinchZoom.js
+++ b/dlf/lib/OpenLayers/lib/OpenLayers/Control/PinchZoom.js
@@ -1,4 +1,4 @@
-/* Copyright (c) 2006-2012 by OpenLayers Contributors (see authors.txt for
+/* Copyright (c) 2006-2013 by OpenLayers Contributors (see authors.txt for
* full list of contributors). Published under the 2-clause BSD license.
* See license.txt in the OpenLayers distribution or repository for the
* full text of the license. */
@@ -21,12 +21,6 @@ OpenLayers.Control.PinchZoom = OpenLayers.Class(OpenLayers.Control, {
*/
type: OpenLayers.Control.TYPE_TOOL,
- /**
- * Property: containerCenter
- * {Object} Cached object representing the layer container center (in pixels).
- */
- containerCenter: null,
-
/**
* Property: pinchOrigin
* {Object} Cached object representing the pinch start (in pixels).
@@ -45,7 +39,23 @@ OpenLayers.Control.PinchZoom = OpenLayers.Class(OpenLayers.Control, {
* true.
*/
autoActivate: true,
+
+ /**
+ * APIProperty: preserveCenter
+ * {Boolean} Set this to true if you don't want the map center to change
+ * while pinching. For example you may want to set preserveCenter to
+ * true when the user location is being watched and you want to preserve
+ * the user location at the center of the map even if he zooms in or
+ * out using pinch. This property's value can be changed any time on an
+ * existing instance. Default is false.
+ */
+ preserveCenter: false,
+ /**
+ * APIProperty: handlerOptions
+ * {Object} Used to set non-default properties on the pinch handler
+ */
+
/**
* Constructor: OpenLayers.Control.PinchZoom
* Create a control for zooming with pinch gestures. This works on devices
@@ -64,57 +74,6 @@ OpenLayers.Control.PinchZoom = OpenLayers.Class(OpenLayers.Control, {
}, this.handlerOptions);
},
- /**
- * APIMethod: activate
- * Activate this control. Must be called after the control is added to a
- * map.
- *
- * Returns:
- * {Boolean} The control was successfully activated.
- */
- activate: function() {
- var activated = OpenLayers.Control.prototype.activate.apply(this,arguments);
- if (activated) {
- this.map.events.on({
- moveend: this.updateContainerCenter,
- scope: this
- });
- this.updateContainerCenter();
- }
- return activated;
- },
-
- /**
- * APIMethod: deactivate
- * Deactivate this control.
- *
- * Returns:
- * {Boolean} The control was successfully deactivated.
- */
- deactivate: function() {
- var deactivated = OpenLayers.Control.prototype.deactivate.apply(this,arguments);
- if (this.map && this.map.events) {
- this.map.events.un({
- moveend: this.updateContainerCenter,
- scope: this
- });
- }
- return deactivated;
- },
-
- /**
- * Method: updateContainerCenter
- * Must be called each time the layer container moves.
- */
- updateContainerCenter: function() {
- var container = this.map.layerContainerDiv;
- // the layer container div is a square of 100px/100px
- this.containerCenter = {
- x: parseInt(container.style.left, 10) + 50,
- y: parseInt(container.style.top, 10) + 50
- };
- },
-
/**
* Method: pinchStart
*
@@ -124,8 +83,10 @@ OpenLayers.Control.PinchZoom = OpenLayers.Class(OpenLayers.Control, {
* of the pinch gesture. This give us the current scale of the pinch.
*/
pinchStart: function(evt, pinchData) {
- this.pinchOrigin = evt.xy;
- this.currentCenter = evt.xy;
+ var xy = (this.preserveCenter) ?
+ this.map.getPixelFromLonLat(this.map.getCenter()) : evt.xy;
+ this.pinchOrigin = xy;
+ this.currentCenter = xy;
},
/**
@@ -138,29 +99,18 @@ OpenLayers.Control.PinchZoom = OpenLayers.Class(OpenLayers.Control, {
*/
pinchMove: function(evt, pinchData) {
var scale = pinchData.scale;
- var containerCenter = this.containerCenter;
+ var containerOrigin = this.map.layerContainerOriginPx;
var pinchOrigin = this.pinchOrigin;
- var current = evt.xy;
+ var current = (this.preserveCenter) ?
+ this.map.getPixelFromLonLat(this.map.getCenter()) : evt.xy;
- var dx = Math.round((current.x - pinchOrigin.x) + (scale - 1) * (containerCenter.x - pinchOrigin.x));
- var dy = Math.round((current.y - pinchOrigin.y) + (scale - 1) * (containerCenter.y - pinchOrigin.y));
+ var dx = Math.round((containerOrigin.x + current.x - pinchOrigin.x) + (scale - 1) * (containerOrigin.x - pinchOrigin.x));
+ var dy = Math.round((containerOrigin.y + current.y - pinchOrigin.y) + (scale - 1) * (containerOrigin.y - pinchOrigin.y));
- this.applyTransform(
- "translate(" + dx + "px, " + dy + "px) scale(" + scale + ")"
- );
+ this.map.applyTransform(dx, dy, scale);
this.currentCenter = current;
},
-
- /**
- * Method: applyTransform
- * Applies the given transform to layers.
- */
- applyTransform: function(transform) {
- var style = this.map.layerContainerDiv.style;
- style['-webkit-transform'] = transform;
- style['-moz-transform'] = transform;
- },
-
+
/**
* Method: pinchDone
*
@@ -172,7 +122,7 @@ OpenLayers.Control.PinchZoom = OpenLayers.Class(OpenLayers.Control, {
* of the pinch gesture. This give us the final scale of the pinch.
*/
pinchDone: function(evt, start, last) {
- this.applyTransform("");
+ this.map.applyTransform();
var zoom = this.map.getZoomForResolution(this.map.getResolution() / last.scale, true);
if (zoom !== this.map.getZoom() || !this.currentCenter.equals(this.pinchOrigin)) {
var resolution = this.map.getResolutionForZoom(zoom);
diff --git a/dlf/lib/OpenLayers/lib/OpenLayers/Control/SLDSelect.js b/dlf/lib/OpenLayers/lib/OpenLayers/Control/SLDSelect.js
index fcafdfe3..cd348a79 100644
--- a/dlf/lib/OpenLayers/lib/OpenLayers/Control/SLDSelect.js
+++ b/dlf/lib/OpenLayers/lib/OpenLayers/Control/SLDSelect.js
@@ -1,4 +1,4 @@
-/* Copyright (c) 2006-2012 by OpenLayers Contributors (see authors.txt for
+/* Copyright (c) 2006-2013 by OpenLayers Contributors (see authors.txt for
* full list of contributors). Published under the 2-clause BSD license.
* See license.txt in the OpenLayers distribution or repository for the
* full text of the license. */
@@ -82,7 +82,6 @@ OpenLayers.Control.SLDSelect = OpenLayers.Class(OpenLayers.Control, {
* APIProperty: handlerOptions
* {Object} Used to set non-default properties on the control's handler
*/
- handlerOptions: null,
/**
* APIProperty: sketchStyle
@@ -97,7 +96,7 @@ OpenLayers.Control.SLDSelect = OpenLayers.Class(OpenLayers.Control, {
* layerOptions: {
* styleMap: new OpenLayers.StyleMap({
* "default": {strokeColor: "yellow"}
- * });
+ * })
* }
* }
* });
@@ -534,12 +533,13 @@ OpenLayers.Control.SLDSelect = OpenLayers.Class(OpenLayers.Control, {
}
var selectionLayer = this.createSelectionLayer(layer);
- var sld = this.createSLD(layer, filters, geometryAttributes);
this.events.triggerEvent("selected", {
layer: layer,
filters: filters
});
+
+ var sld = this.createSLD(layer, filters, geometryAttributes);
selectionLayer.mergeNewParams({SLD_BODY: sld});
delete this._queue;
diff --git a/dlf/lib/OpenLayers/lib/OpenLayers/Control/Scale.js b/dlf/lib/OpenLayers/lib/OpenLayers/Control/Scale.js
index 3e36ad01..c9f2d2b9 100644
--- a/dlf/lib/OpenLayers/lib/OpenLayers/Control/Scale.js
+++ b/dlf/lib/OpenLayers/lib/OpenLayers/Control/Scale.js
@@ -1,4 +1,4 @@
-/* Copyright (c) 2006-2012 by OpenLayers Contributors (see authors.txt for
+/* Copyright (c) 2006-2013 by OpenLayers Contributors (see authors.txt for
* full list of contributors). Published under the 2-clause BSD license.
* See license.txt in the OpenLayers distribution or repository for the
* full text of the license. */
diff --git a/dlf/lib/OpenLayers/lib/OpenLayers/Control/ScaleLine.js b/dlf/lib/OpenLayers/lib/OpenLayers/Control/ScaleLine.js
index 2a501c28..92624142 100644
--- a/dlf/lib/OpenLayers/lib/OpenLayers/Control/ScaleLine.js
+++ b/dlf/lib/OpenLayers/lib/OpenLayers/Control/ScaleLine.js
@@ -1,4 +1,4 @@
-/* Copyright (c) 2006-2012 by OpenLayers Contributors (see authors.txt for
+/* Copyright (c) 2006-2013 by OpenLayers Contributors (see authors.txt for
* full list of contributors). Published under the 2-clause BSD license.
* See license.txt in the OpenLayers distribution or repository for the
* full text of the license. */
diff --git a/dlf/lib/OpenLayers/lib/OpenLayers/Control/SelectFeature.js b/dlf/lib/OpenLayers/lib/OpenLayers/Control/SelectFeature.js
index e5129ce9..54672671 100644
--- a/dlf/lib/OpenLayers/lib/OpenLayers/Control/SelectFeature.js
+++ b/dlf/lib/OpenLayers/lib/OpenLayers/Control/SelectFeature.js
@@ -1,4 +1,4 @@
-/* Copyright (c) 2006-2012 by OpenLayers Contributors (see authors.txt for
+/* Copyright (c) 2006-2013 by OpenLayers Contributors (see authors.txt for
* full list of contributors). Published under the 2-clause BSD license.
* See license.txt in the OpenLayers distribution or repository for the
* full text of the license. */
@@ -300,14 +300,22 @@ OpenLayers.Control.SelectFeature = OpenLayers.Class(OpenLayers.Control, {
*/
unselectAll: function(options) {
// we'll want an option to supress notification here
- var layers = this.layers || [this.layer];
- var layer, feature;
- for(var l=0; l=0; --i) {
- feature = layer.selectedFeatures[i];
- if(!options || options.except != feature) {
- this.unselect(feature);
+ numExcept = 0;
+ //layer.selectedFeatures is null when layer is destroyed and
+ //one of it's preremovelayer listener calls setLayer
+ //with another layer on this control
+ if(layer.selectedFeatures != null) {
+ while(layer.selectedFeatures.length > numExcept) {
+ feature = layer.selectedFeatures[numExcept];
+ if(!options || options.except != feature) {
+ this.unselect(feature);
+ } else {
+ ++numExcept;
+ }
}
}
}
diff --git a/dlf/lib/OpenLayers/lib/OpenLayers/Control/Snapping.js b/dlf/lib/OpenLayers/lib/OpenLayers/Control/Snapping.js
index ec75f6d6..21731147 100644
--- a/dlf/lib/OpenLayers/lib/OpenLayers/Control/Snapping.js
+++ b/dlf/lib/OpenLayers/lib/OpenLayers/Control/Snapping.js
@@ -1,4 +1,4 @@
-/* Copyright (c) 2006-2012 by OpenLayers Contributors (see authors.txt for
+/* Copyright (c) 2006-2013 by OpenLayers Contributors (see authors.txt for
* full list of contributors). Published under the 2-clause BSD license.
* See license.txt in the OpenLayers distribution or repository for the
* full text of the license. */
@@ -124,7 +124,7 @@ OpenLayers.Control.Snapping = OpenLayers.Class(OpenLayers.Control, {
* objects below. If the items in the targets list are vector layers
* (instead of configuration objects), the defaults from the
* property will apply. The editable layer itself may be a target
- * layer - allowing newly created or edited features to be snapped to
+ * layer, allowing newly created or edited features to be snapped to
* existing features from the same layer. If no targets are provided
* the layer given in the constructor (as ) will become the
* initial target.
diff --git a/dlf/lib/OpenLayers/lib/OpenLayers/Control/Split.js b/dlf/lib/OpenLayers/lib/OpenLayers/Control/Split.js
index c382eae3..de19eb7c 100644
--- a/dlf/lib/OpenLayers/lib/OpenLayers/Control/Split.js
+++ b/dlf/lib/OpenLayers/lib/OpenLayers/Control/Split.js
@@ -1,4 +1,4 @@
-/* Copyright (c) 2006-2012 by OpenLayers Contributors (see authors.txt for
+/* Copyright (c) 2006-2013 by OpenLayers Contributors (see authors.txt for
* full list of contributors). Published under the 2-clause BSD license.
* See license.txt in the OpenLayers distribution or repository for the
* full text of the license. */
@@ -240,7 +240,7 @@ OpenLayers.Control.Split = OpenLayers.Class(OpenLayers.Control, {
var deactivated = OpenLayers.Control.prototype.deactivate.call(this);
if(deactivated) {
if(this.source && this.source.events) {
- this.layer.events.un({
+ this.source.events.un({
sketchcomplete: this.onSketchComplete,
afterfeaturemodified: this.afterFeatureModified,
scope: this
diff --git a/dlf/lib/OpenLayers/lib/OpenLayers/Control/TouchNavigation.js b/dlf/lib/OpenLayers/lib/OpenLayers/Control/TouchNavigation.js
index 7ff476ea..cd5f9264 100644
--- a/dlf/lib/OpenLayers/lib/OpenLayers/Control/TouchNavigation.js
+++ b/dlf/lib/OpenLayers/lib/OpenLayers/Control/TouchNavigation.js
@@ -1,4 +1,4 @@
-/* Copyright (c) 2006-2012 by OpenLayers Contributors (see authors.txt for
+/* Copyright (c) 2006-2013 by OpenLayers Contributors (see authors.txt for
* full list of contributors). Published under the 2-clause BSD license.
* See license.txt in the OpenLayers distribution or repository for the
* full text of the license. */
@@ -175,8 +175,7 @@ OpenLayers.Control.TouchNavigation = OpenLayers.Class(OpenLayers.Control, {
* evt - {Event}
*/
defaultDblClick: function (evt) {
- var newCenter = this.map.getLonLatFromViewPortPx(evt.xy);
- this.map.setCenter(newCenter, this.map.zoom + 1);
+ this.map.zoomTo(this.map.zoom + 1, evt.xy);
},
CLASS_NAME: "OpenLayers.Control.TouchNavigation"
diff --git a/dlf/lib/OpenLayers/lib/OpenLayers/Control/TransformFeature.js b/dlf/lib/OpenLayers/lib/OpenLayers/Control/TransformFeature.js
index 85f593e8..8c214564 100644
--- a/dlf/lib/OpenLayers/lib/OpenLayers/Control/TransformFeature.js
+++ b/dlf/lib/OpenLayers/lib/OpenLayers/Control/TransformFeature.js
@@ -1,4 +1,4 @@
-/* Copyright (c) 2006-2012 by OpenLayers Contributors (see authors.txt for
+/* Copyright (c) 2006-2013 by OpenLayers Contributors (see authors.txt for
* full list of contributors). Published under the 2-clause BSD license.
* See license.txt in the OpenLayers distribution or repository for the
* full text of the license. */
diff --git a/dlf/lib/OpenLayers/lib/OpenLayers/Control/UTFGrid.js b/dlf/lib/OpenLayers/lib/OpenLayers/Control/UTFGrid.js
index 4b439ac0..79932011 100644
--- a/dlf/lib/OpenLayers/lib/OpenLayers/Control/UTFGrid.js
+++ b/dlf/lib/OpenLayers/lib/OpenLayers/Control/UTFGrid.js
@@ -1,4 +1,4 @@
-/* Copyright (c) 2006-2012 by OpenLayers Contributors (see authors.txt for
+/* Copyright (c) 2006-2013 by OpenLayers Contributors (see authors.txt for
* full list of contributors). Published under the 2-clause BSD license.
* See license.txt in the OpenLayers distribution or repository for the
* full text of the license. */
diff --git a/dlf/lib/OpenLayers/lib/OpenLayers/Control/WMSGetFeatureInfo.js b/dlf/lib/OpenLayers/lib/OpenLayers/Control/WMSGetFeatureInfo.js
index 974e7037..c9242f65 100644
--- a/dlf/lib/OpenLayers/lib/OpenLayers/Control/WMSGetFeatureInfo.js
+++ b/dlf/lib/OpenLayers/lib/OpenLayers/Control/WMSGetFeatureInfo.js
@@ -1,4 +1,4 @@
-/* Copyright (c) 2006-2012 by OpenLayers Contributors (see authors.txt for
+/* Copyright (c) 2006-2013 by OpenLayers Contributors (see authors.txt for
* full list of contributors). Published under the 2-clause BSD license.
* See license.txt in the OpenLayers distribution or repository for the
* full text of the license. */
@@ -15,10 +15,10 @@
/**
* Class: OpenLayers.Control.WMSGetFeatureInfo
* The WMSGetFeatureInfo control uses a WMS query to get information about a point on the map. The
- * information may be in a display-friendly format such as HTML, or a machine-friendly format such
- * as GML, depending on the server's capabilities and the client's configuration. This control
- * handles click or hover events, attempts to parse the results using an OpenLayers.Format, and
- * fires a 'getfeatureinfo' event with the click position, the raw body of the response, and an
+ * information may be in a display-friendly format such as HTML, or a machine-friendly format such
+ * as GML, depending on the server's capabilities and the client's configuration. This control
+ * handles click or hover events, attempts to parse the results using an OpenLayers.Format, and
+ * fires a 'getfeatureinfo' event with the click position, the raw body of the response, and an
* array of features if it successfully read the response.
*
* Inherits from:
@@ -49,23 +49,25 @@ OpenLayers.Control.WMSGetFeatureInfo = OpenLayers.Class(OpenLayers.Control, {
*/
maxFeatures: 10,
- /** APIProperty: clickCallback
- * {String} The click callback to register in the
- * {} object created when the hover
- * option is set to false. Default is "click".
+ /**
+ * APIProperty: clickCallback
+ * {String} The click callback to register in the
+ * {} object created when the hover
+ * option is set to false. Default is "click".
*/
clickCallback: "click",
-
- /** APIProperty: output
- * {String} Either "features" or "object". When triggering a
- * getfeatureinfo request should we pass on an array of features
- * or an object with with a "features" property and other properties
- * (such as the url of the WMS). Default is "features".
+
+ /**
+ * APIProperty: output
+ * {String} Either "features" or "object". When triggering a getfeatureinfo
+ * request should we pass on an array of features or an object with with
+ * a "features" property and other properties (such as the url of the
+ * WMS). Default is "features".
*/
output: "features",
-
+
/**
- * Property: layers
+ * APIProperty: layers
* {Array()} The layers to query for feature info.
* If omitted, all map WMS layers with a url that matches this or
* will be considered.
@@ -73,21 +75,21 @@ OpenLayers.Control.WMSGetFeatureInfo = OpenLayers.Class(OpenLayers.Control, {
layers: null,
/**
- * Property: queryVisible
+ * APIProperty: queryVisible
* {Boolean} If true, filter out hidden layers when searching the map for
* layers to query. Default is false.
*/
queryVisible: false,
/**
- * Property: url
+ * APIProperty: url
* {String} The URL of the WMS service to use. If not provided, the url
* of the first eligible layer will be used.
*/
url: null,
-
+
/**
- * Property: layerUrls
+ * APIProperty: layerUrls
* {Array(String)} Optional list of urls for layers that should be queried.
* This can be used when the layer url differs from the url used for
* making GetFeatureInfo requests (in the case of a layer using cached
@@ -96,18 +98,18 @@ OpenLayers.Control.WMSGetFeatureInfo = OpenLayers.Class(OpenLayers.Control, {
layerUrls: null,
/**
- * Property: infoFormat
- * {String} The mimetype to request from the server. If you are using
- * drillDown mode and have multiple servers that do not share a common
- * infoFormat, you can override the control's infoFormat by providing an
- * INFO_FORMAT parameter in your instance(s).
+ * APIProperty: infoFormat
+ * {String} The mimetype to request from the server. If you are using
+ * drillDown mode and have multiple servers that do not share a common
+ * infoFormat, you can override the control's infoFormat by providing an
+ * INFO_FORMAT parameter in your instance(s).
*/
infoFormat: 'text/html',
-
+
/**
- * Property: vendorParams
+ * APIProperty: vendorParams
* {Object} Additional parameters that will be added to the request, for
- * WMS implementations that support them. This could e.g. look like
+ * WMS implementations that support them. This could e.g. look like
* (start code)
* {
* radius: 5
@@ -115,16 +117,16 @@ OpenLayers.Control.WMSGetFeatureInfo = OpenLayers.Class(OpenLayers.Control, {
* (end)
*/
vendorParams: {},
-
+
/**
- * Property: format
+ * APIProperty: format
* {} A format for parsing GetFeatureInfo responses.
* Default is .
*/
format: null,
-
+
/**
- * Property: formatOptions
+ * APIProperty: formatOptions
* {Object} Optional properties to set on the format (if one is not provided
* in the property.
*/
@@ -140,22 +142,21 @@ OpenLayers.Control.WMSGetFeatureInfo = OpenLayers.Class(OpenLayers.Control, {
* }
* (end)
*/
- handlerOptions: null,
-
+
/**
* Property: handler
* {Object} Reference to the for this control
*/
handler: null,
-
+
/**
* Property: hoverRequest
* {} contains the currently running hover request
* (if any).
*/
hoverRequest: null,
-
- /**
+
+ /**
* APIProperty: events
* {} Events instance for listeners and triggering
* control specific events.
@@ -167,7 +168,7 @@ OpenLayers.Control.WMSGetFeatureInfo = OpenLayers.Class(OpenLayers.Control, {
*
* Supported event types (in addition to those from ):
* beforegetfeatureinfo - Triggered before the request is sent.
- * The event object has an *xy* property with the position of the
+ * The event object has an *xy* property with the position of the
* mouse click or hover event that triggers the request.
* nogetfeatureinfo - no queryable layers were found.
* getfeatureinfo - Triggered when a GetFeatureInfo response is received.
@@ -185,20 +186,20 @@ OpenLayers.Control.WMSGetFeatureInfo = OpenLayers.Class(OpenLayers.Control, {
* Constructor:
*
* Parameters:
- * options - {Object}
+ * options - {Object}
*/
initialize: function(options) {
options = options || {};
options.handlerOptions = options.handlerOptions || {};
OpenLayers.Control.prototype.initialize.apply(this, [options]);
-
+
if(!this.format) {
this.format = new OpenLayers.Format.WMSGetFeatureInfo(
options.formatOptions
);
}
-
+
if(this.drillDown === true) {
this.hover = false;
}
@@ -221,11 +222,11 @@ OpenLayers.Control.WMSGetFeatureInfo = OpenLayers.Class(OpenLayers.Control, {
},
/**
- * Method: getInfoForClick
+ * Method: getInfoForClick
* Called on click
*
* Parameters:
- * evt - {}
+ * evt - {}
*/
getInfoForClick: function(evt) {
this.events.triggerEvent("beforegetfeatureinfo", {xy: evt.xy});
@@ -234,7 +235,7 @@ OpenLayers.Control.WMSGetFeatureInfo = OpenLayers.Class(OpenLayers.Control, {
OpenLayers.Element.addClass(this.map.viewPortDiv, "olCursorWait");
this.request(evt.xy, {});
},
-
+
/**
* Method: getInfoForHover
* Pause callback for the hover handler
@@ -285,7 +286,7 @@ OpenLayers.Control.WMSGetFeatureInfo = OpenLayers.Class(OpenLayers.Control, {
}
return layers;
},
-
+
/**
* Method: urlMatches
* Test to see if the provided url matches either the control or one
@@ -384,7 +385,7 @@ OpenLayers.Control.WMSGetFeatureInfo = OpenLayers.Class(OpenLayers.Control, {
* Method: getStyleNames
* Gets the STYLES parameter for the layer. Make sure the STYLES parameter
* matches the LAYERS parameter
- *
+ *
* Parameters:
* layer - {}
*
@@ -412,12 +413,12 @@ OpenLayers.Control.WMSGetFeatureInfo = OpenLayers.Class(OpenLayers.Control, {
/**
* Method: request
* Sends a GetFeatureInfo request to the WMS
- *
+ *
* Parameters:
* clickPosition - {} The position on the map where the
* mouse event occurred.
* options - {Object} additional options for this method.
- *
+ *
* Valid options:
* - *hover* {Boolean} true if we do the request for the hover handler
*/
@@ -429,13 +430,13 @@ OpenLayers.Control.WMSGetFeatureInfo = OpenLayers.Class(OpenLayers.Control, {
OpenLayers.Element.removeClass(this.map.viewPortDiv, "olCursorWait");
return;
}
-
+
options = options || {};
if(this.drillDown === false) {
var wmsOptions = this.buildWMSOptions(this.url, layers,
- clickPosition, layers[0].params.FORMAT);
+ clickPosition, layers[0].params.FORMAT);
var request = OpenLayers.Request.GET(wmsOptions);
-
+
if (options.hover === true) {
this.hoverRequest = request;
}
@@ -459,9 +460,9 @@ OpenLayers.Control.WMSGetFeatureInfo = OpenLayers.Class(OpenLayers.Control, {
var layers;
for (var url in services) {
layers = services[url];
- var wmsOptions = this.buildWMSOptions(url, layers,
+ var wmsOptions = this.buildWMSOptions(url, layers,
clickPosition, layers[0].params.FORMAT);
- OpenLayers.Request.GET(wmsOptions);
+ OpenLayers.Request.GET(wmsOptions);
}
}
},
@@ -489,11 +490,11 @@ OpenLayers.Control.WMSGetFeatureInfo = OpenLayers.Class(OpenLayers.Control, {
// Reset the cursor.
OpenLayers.Element.removeClass(this.map.viewPortDiv, "olCursorWait");
},
-
+
/**
* Method: handleResponse
* Handler for the GetFeatureInfo response.
- *
+ *
* Parameters:
* xy - {} The position on the map where the
* mouse event occurred.
@@ -501,7 +502,7 @@ OpenLayers.Control.WMSGetFeatureInfo = OpenLayers.Class(OpenLayers.Control, {
* url - {String} The url which was used for this request.
*/
handleResponse: function(xy, request, url) {
-
+
var doc = request.responseXML;
if(!doc || !doc.documentElement) {
doc = request.responseText;
@@ -519,7 +520,7 @@ OpenLayers.Control.WMSGetFeatureInfo = OpenLayers.Class(OpenLayers.Control, {
this._features = (this._features || []).concat(features);
}
if (this._requestCount === this._numRequests) {
- this.triggerGetFeatureInfo(request, xy, this._features.concat());
+ this.triggerGetFeatureInfo(request, xy, this._features.concat());
delete this._features;
delete this._requestCount;
delete this._numRequests;
diff --git a/dlf/lib/OpenLayers/lib/OpenLayers/Control/WMTSGetFeatureInfo.js b/dlf/lib/OpenLayers/lib/OpenLayers/Control/WMTSGetFeatureInfo.js
index ac2788e8..c26f8f36 100644
--- a/dlf/lib/OpenLayers/lib/OpenLayers/Control/WMTSGetFeatureInfo.js
+++ b/dlf/lib/OpenLayers/lib/OpenLayers/Control/WMTSGetFeatureInfo.js
@@ -1,4 +1,4 @@
-/* Copyright (c) 2006-2012 by OpenLayers Contributors (see authors.txt for
+/* Copyright (c) 2006-2013 by OpenLayers Contributors (see authors.txt for
* full list of contributors). Published under the 2-clause BSD license.
* See license.txt in the OpenLayers distribution or repository for the
* full text of the license. */
@@ -120,7 +120,6 @@ OpenLayers.Control.WMTSGetFeatureInfo = OpenLayers.Class(OpenLayers.Control, {
* }
* (end)
*/
- handlerOptions: null,
/**
* Property: handler
diff --git a/dlf/lib/OpenLayers/lib/OpenLayers/Control/Zoom.js b/dlf/lib/OpenLayers/lib/OpenLayers/Control/Zoom.js
index 37ac48ce..70140f46 100644
--- a/dlf/lib/OpenLayers/lib/OpenLayers/Control/Zoom.js
+++ b/dlf/lib/OpenLayers/lib/OpenLayers/Control/Zoom.js
@@ -1,4 +1,4 @@
-/* Copyright (c) 2006-2012 by OpenLayers Contributors (see authors.txt for
+/* Copyright (c) 2006-2013 by OpenLayers Contributors (see authors.txt for
* full list of contributors). Published under the 2-clause BSD license.
* See license.txt in the OpenLayers distribution or repository for the
* full text of the license. */
@@ -37,9 +37,9 @@ OpenLayers.Control.Zoom = OpenLayers.Class(OpenLayers.Control, {
/**
* APIProperty: zoomOutText
* {String}
- * Text for zoom-out link. Default is "-".
+ * Text for zoom-out link. Default is "\u2212".
*/
- zoomOutText: "-",
+ zoomOutText: "\u2212",
/**
* APIProperty: zoomOutId
diff --git a/dlf/lib/OpenLayers/lib/OpenLayers/Control/ZoomBox.js b/dlf/lib/OpenLayers/lib/OpenLayers/Control/ZoomBox.js
index 8f407adb..9d4b2da0 100644
--- a/dlf/lib/OpenLayers/lib/OpenLayers/Control/ZoomBox.js
+++ b/dlf/lib/OpenLayers/lib/OpenLayers/Control/ZoomBox.js
@@ -1,4 +1,4 @@
-/* Copyright (c) 2006-2012 by OpenLayers Contributors (see authors.txt for
+/* Copyright (c) 2006-2013 by OpenLayers Contributors (see authors.txt for
* full list of contributors). Published under the 2-clause BSD license.
* See license.txt in the OpenLayers distribution or repository for the
* full text of the license. */
@@ -41,9 +41,17 @@ OpenLayers.Control.ZoomBox = OpenLayers.Class(OpenLayers.Control, {
/**
* APIProperty: alwaysZoom
- * {Boolean} Always zoom in/out, when box drawed
+ * {Boolean} Always zoom in/out when box drawn, even if the zoom level does
+ * not change.
*/
alwaysZoom: false,
+
+ /**
+ * APIProperty: zoomOnClick
+ * {Boolean} Should we zoom when no box was dragged, i.e. the user only
+ * clicked? Default is true.
+ */
+ zoomOnClick: true,
/**
* Method: draw
@@ -61,7 +69,8 @@ OpenLayers.Control.ZoomBox = OpenLayers.Class(OpenLayers.Control, {
*/
zoomBox: function (position) {
if (position instanceof OpenLayers.Bounds) {
- var bounds;
+ var bounds,
+ targetCenterPx = position.getCenterPixel();
if (!this.out) {
var minXY = this.map.getLonLatFromPixel({
x: position.left,
@@ -74,13 +83,12 @@ OpenLayers.Control.ZoomBox = OpenLayers.Class(OpenLayers.Control, {
bounds = new OpenLayers.Bounds(minXY.lon, minXY.lat,
maxXY.lon, maxXY.lat);
} else {
- var pixWidth = Math.abs(position.right-position.left);
- var pixHeight = Math.abs(position.top-position.bottom);
+ var pixWidth = position.right - position.left;
+ var pixHeight = position.bottom - position.top;
var zoomFactor = Math.min((this.map.size.h / pixHeight),
(this.map.size.w / pixWidth));
var extent = this.map.getExtent();
- var center = this.map.getLonLatFromPixel(
- position.getCenterPixel());
+ var center = this.map.getLonLatFromPixel(targetCenterPx);
var xmin = center.lon - (extent.getWidth()/2)*zoomFactor;
var xmax = center.lon + (extent.getWidth()/2)*zoomFactor;
var ymin = center.lat - (extent.getHeight()/2)*zoomFactor;
@@ -88,18 +96,31 @@ OpenLayers.Control.ZoomBox = OpenLayers.Class(OpenLayers.Control, {
bounds = new OpenLayers.Bounds(xmin, ymin, xmax, ymax);
}
// always zoom in/out
- var lastZoom = this.map.getZoom();
- this.map.zoomToExtent(bounds);
+ var lastZoom = this.map.getZoom(),
+ size = this.map.getSize(),
+ centerPx = {x: size.w / 2, y: size.h / 2},
+ zoom = this.map.getZoomForExtent(bounds),
+ oldRes = this.map.getResolution(),
+ newRes = this.map.getResolutionForZoom(zoom);
+ if (oldRes == newRes) {
+ this.map.setCenter(this.map.getLonLatFromPixel(targetCenterPx));
+ } else {
+ var zoomOriginPx = {
+ x: (oldRes * targetCenterPx.x - newRes * centerPx.x) /
+ (oldRes - newRes),
+ y: (oldRes * targetCenterPx.y - newRes * centerPx.y) /
+ (oldRes - newRes)
+ };
+ this.map.zoomTo(zoom, zoomOriginPx);
+ }
if (lastZoom == this.map.getZoom() && this.alwaysZoom == true){
this.map.zoomTo(lastZoom + (this.out ? -1 : 1));
}
- } else { // it's a pixel
+ } else if (this.zoomOnClick) { // it's a pixel
if (!this.out) {
- this.map.setCenter(this.map.getLonLatFromPixel(position),
- this.map.getZoom() + 1);
+ this.map.zoomTo(this.map.getZoom() + 1, position);
} else {
- this.map.setCenter(this.map.getLonLatFromPixel(position),
- this.map.getZoom() - 1);
+ this.map.zoomTo(this.map.getZoom() - 1, position);
}
}
},
diff --git a/dlf/lib/OpenLayers/lib/OpenLayers/Control/ZoomIn.js b/dlf/lib/OpenLayers/lib/OpenLayers/Control/ZoomIn.js
index 776172d2..8da1e1cf 100644
--- a/dlf/lib/OpenLayers/lib/OpenLayers/Control/ZoomIn.js
+++ b/dlf/lib/OpenLayers/lib/OpenLayers/Control/ZoomIn.js
@@ -1,10 +1,10 @@
-/* Copyright (c) 2006-2012 by OpenLayers Contributors (see authors.txt for
+/* Copyright (c) 2006-2013 by OpenLayers Contributors (see authors.txt for
* full list of contributors). Published under the 2-clause BSD license.
* See license.txt in the OpenLayers distribution or repository for the
* full text of the license. */
/**
- * @requires OpenLayers/Control.js
+ * @requires OpenLayers/Control/Button.js
*/
/**
@@ -14,21 +14,15 @@
* Inherits from:
* -
*/
-OpenLayers.Control.ZoomIn = OpenLayers.Class(OpenLayers.Control, {
+OpenLayers.Control.ZoomIn = OpenLayers.Class(OpenLayers.Control.Button, {
- /**
- * Property: type
- * {String} The type of -- When added to a
- * , 'type' is used by the panel to determine how to
- * handle our events.
- */
- type: OpenLayers.Control.TYPE_BUTTON,
-
/**
* Method: trigger
*/
trigger: function(){
- this.map.zoomIn();
+ if (this.map) {
+ this.map.zoomIn();
+ }
},
CLASS_NAME: "OpenLayers.Control.ZoomIn"
diff --git a/dlf/lib/OpenLayers/lib/OpenLayers/Control/ZoomOut.js b/dlf/lib/OpenLayers/lib/OpenLayers/Control/ZoomOut.js
index 2a538af9..72a657b3 100644
--- a/dlf/lib/OpenLayers/lib/OpenLayers/Control/ZoomOut.js
+++ b/dlf/lib/OpenLayers/lib/OpenLayers/Control/ZoomOut.js
@@ -1,10 +1,10 @@
-/* Copyright (c) 2006-2012 by OpenLayers Contributors (see authors.txt for
+/* Copyright (c) 2006-2013 by OpenLayers Contributors (see authors.txt for
* full list of contributors). Published under the 2-clause BSD license.
* See license.txt in the OpenLayers distribution or repository for the
* full text of the license. */
/**
- * @requires OpenLayers/Control.js
+ * @requires OpenLayers/Control/Button.js
*/
/**
@@ -14,21 +14,15 @@
* Inherits from:
* -
*/
-OpenLayers.Control.ZoomOut = OpenLayers.Class(OpenLayers.Control, {
+OpenLayers.Control.ZoomOut = OpenLayers.Class(OpenLayers.Control.Button, {
- /**
- * Property: type
- * {String} The type of -- When added to a
- * , 'type' is used by the panel to determine how to
- * handle our events.
- */
- type: OpenLayers.Control.TYPE_BUTTON,
-
/**
* Method: trigger
*/
trigger: function(){
- this.map.zoomOut();
+ if (this.map) {
+ this.map.zoomOut();
+ }
},
CLASS_NAME: "OpenLayers.Control.ZoomOut"
diff --git a/dlf/lib/OpenLayers/lib/OpenLayers/Control/ZoomPanel.js b/dlf/lib/OpenLayers/lib/OpenLayers/Control/ZoomPanel.js
index d08c27b5..147f6cb1 100644
--- a/dlf/lib/OpenLayers/lib/OpenLayers/Control/ZoomPanel.js
+++ b/dlf/lib/OpenLayers/lib/OpenLayers/Control/ZoomPanel.js
@@ -1,4 +1,4 @@
-/* Copyright (c) 2006-2012 by OpenLayers Contributors (see authors.txt for
+/* Copyright (c) 2006-2013 by OpenLayers Contributors (see authors.txt for
* full list of contributors). Published under the 2-clause BSD license.
* See license.txt in the OpenLayers distribution or repository for the
* full text of the license. */
diff --git a/dlf/lib/OpenLayers/lib/OpenLayers/Control/ZoomToMaxExtent.js b/dlf/lib/OpenLayers/lib/OpenLayers/Control/ZoomToMaxExtent.js
index b172c28d..bc2e7546 100644
--- a/dlf/lib/OpenLayers/lib/OpenLayers/Control/ZoomToMaxExtent.js
+++ b/dlf/lib/OpenLayers/lib/OpenLayers/Control/ZoomToMaxExtent.js
@@ -1,10 +1,10 @@
-/* Copyright (c) 2006-2012 by OpenLayers Contributors (see authors.txt for
+/* Copyright (c) 2006-2013 by OpenLayers Contributors (see authors.txt for
* full list of contributors). Published under the 2-clause BSD license.
* See license.txt in the OpenLayers distribution or repository for the
* full text of the license. */
/**
- * @requires OpenLayers/Control.js
+ * @requires OpenLayers/Control/Button.js
*/
/**
@@ -16,19 +16,14 @@
* Inherits from:
* -
*/
-OpenLayers.Control.ZoomToMaxExtent = OpenLayers.Class(OpenLayers.Control, {
+OpenLayers.Control.ZoomToMaxExtent = OpenLayers.Class(OpenLayers.Control.Button, {
/**
- * Property: type
- * {String} The type of -- When added to a
- * , 'type' is used by the panel to determine how to
- * handle our events.
- */
- type: OpenLayers.Control.TYPE_BUTTON,
-
- /*
* Method: trigger
- * Do the zoom.
+ *
+ * Called whenever this control is being rendered inside of a panel and a
+ * click occurs on this controls element. Actually zooms to the maximum
+ * extent of this controls map.
*/
trigger: function() {
if (this.map) {
diff --git a/dlf/lib/OpenLayers/lib/OpenLayers/Events.js b/dlf/lib/OpenLayers/lib/OpenLayers/Events.js
index c2b5b99d..6a4a129c 100644
--- a/dlf/lib/OpenLayers/lib/OpenLayers/Events.js
+++ b/dlf/lib/OpenLayers/lib/OpenLayers/Events.js
@@ -1,4 +1,4 @@
-/* Copyright (c) 2006-2012 by OpenLayers Contributors (see authors.txt for
+/* Copyright (c) 2006-2013 by OpenLayers Contributors (see authors.txt for
* full list of contributors). Published under the 2-clause BSD license.
* See license.txt in the OpenLayers distribution or repository for the
* full text of the license. */
@@ -167,11 +167,7 @@ OpenLayers.Event = {
stop: function(event, allowDefault) {
if (!allowDefault) {
- if (event.preventDefault) {
- event.preventDefault();
- } else {
- event.returnValue = false;
- }
+ OpenLayers.Event.preventDefault(event);
}
if (event.stopPropagation) {
@@ -181,6 +177,22 @@ OpenLayers.Event = {
}
},
+ /**
+ * Method: preventDefault
+ * Cancels the event if it is cancelable, without stopping further
+ * propagation of the event.
+ *
+ * Parameters:
+ * event - {Event}
+ */
+ preventDefault: function(event) {
+ if (event.preventDefault) {
+ event.preventDefault();
+ } else {
+ event.returnValue = false;
+ }
+ },
+
/**
* Method: findElement
*
@@ -285,11 +297,9 @@ OpenLayers.Event = {
if (elementObservers) {
for(var i = elementObservers.length-1; i >= 0; i--) {
var entry = elementObservers[i];
- var args = new Array(entry.element,
- entry.name,
- entry.observer,
- entry.useCapture);
- var removed = OpenLayers.Event.stopObserving.apply(this, args);
+ OpenLayers.Event.stopObserving.apply(this, [
+ entry.element, entry.name, entry.observer, entry.useCapture
+ ]);
}
}
},
@@ -556,6 +566,7 @@ OpenLayers.Events = OpenLayers.Class({
this.listeners = {};
this.extensions = {};
this.extensionCount = {};
+ this._msTouches = [];
// if a dom element is specified, add a listeners list
// for browser events on the element and register them
@@ -622,11 +633,16 @@ OpenLayers.Events = OpenLayers.Class({
);
}
this.element = element;
+ var msTouch = !!window.navigator.msMaxTouchPoints;
+ var type;
for (var i = 0, len = this.BROWSER_EVENTS.length; i < len; i++) {
+ type = this.BROWSER_EVENTS[i];
// register the event cross-browser
- OpenLayers.Event.observe(
- element, this.BROWSER_EVENTS[i], this.eventHandler
+ OpenLayers.Event.observe(element, type, this.eventHandler
);
+ if (msTouch && type.indexOf('touch') === 0) {
+ this.addMsTouchListener(element, type, this.eventHandler);
+ }
}
// disable dragstart in IE so that mousedown/move/up works normally
OpenLayers.Event.observe(element, "dragstart", OpenLayers.Event.stop);
@@ -824,7 +840,7 @@ OpenLayers.Events = OpenLayers.Class({
*
* Parameters:
* type - {String}
- * evt - {Event}
+ * evt - {Event || Object} will be passed to the listeners.
*
* Returns:
* {Boolean} The last listener return. If a listener returns false, the
@@ -893,7 +909,7 @@ OpenLayers.Events = OpenLayers.Class({
var num = touches.length;
var touch;
for (var i=0; i Math.floor(evt.pageY) ||
+ evt.pageX === 0 && Math.floor(x) > Math.floor(evt.pageX)) {
+ // iOS4 include scroll offset in clientX/Y
+ x = x - winPageX;
+ y = y - winPageY;
+ } else if (y < (evt.pageY - winPageY) || x < (evt.pageX - winPageX) ) {
+ // Some Android browsers have totally bogus values for clientX/Y
+ // when scrolling/zooming a page
+ x = evt.pageX - winPageX;
+ y = evt.pageY - winPageY;
+ }
+
+ evt.olClientX = x;
+ evt.olClientY = y;
+
+ return {
+ clientX: x,
+ clientY: y
+ };
+ },
+
/**
* APIMethod: clearMouseCache
* Clear cached data about the mouse position. This should be called any
@@ -915,17 +972,7 @@ OpenLayers.Events = OpenLayers.Class({
clearMouseCache: function() {
this.element.scrolls = null;
this.element.lefttop = null;
- // OpenLayers.Util.pagePosition needs to use
- // element.getBoundingClientRect to correctly calculate the offsets
- // for the iPhone, but once the page is scrolled, getBoundingClientRect
- // returns incorrect offsets. So our best bet is to not invalidate the
- // offsets once we have them, and hope that the page was not scrolled
- // when we did the initial calculation.
- var body = document.body;
- if (body && !((body.scrollTop != 0 || body.scrollLeft != 0) &&
- navigator.userAgent.match(/iPhone/i))) {
- this.element.offsets = null;
- }
+ this.element.offsets = null;
},
/**
@@ -949,8 +996,8 @@ OpenLayers.Events = OpenLayers.Class({
if (!this.element.scrolls) {
var viewportElement = OpenLayers.Util.getViewportElement();
this.element.scrolls = [
- viewportElement.scrollLeft,
- viewportElement.scrollTop
+ window.pageXOffset || viewportElement.scrollLeft,
+ window.pageYOffset || viewportElement.scrollTop
];
}
@@ -973,5 +1020,151 @@ OpenLayers.Events = OpenLayers.Class({
);
},
+ /**
+ * Method: addMsTouchListener
+ *
+ * Parameters:
+ * element - {DOMElement} The DOM element to register the listener on
+ * type - {String} The event type
+ * handler - {Function} the handler
+ */
+ addMsTouchListener: function (element, type, handler) {
+ var eventHandler = this.eventHandler;
+ var touches = this._msTouches;
+
+ function msHandler(evt) {
+ handler(OpenLayers.Util.applyDefaults({
+ stopPropagation: function() {
+ for (var i=touches.length-1; i>=0; --i) {
+ touches[i].stopPropagation();
+ }
+ },
+ preventDefault: function() {
+ for (var i=touches.length-1; i>=0; --i) {
+ touches[i].preventDefault();
+ }
+ },
+ type: type
+ }, evt));
+ }
+
+ switch (type) {
+ case 'touchstart':
+ return this.addMsTouchListenerStart(element, type, msHandler);
+ case 'touchend':
+ return this.addMsTouchListenerEnd(element, type, msHandler);
+ case 'touchmove':
+ return this.addMsTouchListenerMove(element, type, msHandler);
+ default:
+ throw 'Unknown touch event type';
+ }
+ },
+
+ /**
+ * Method: addMsTouchListenerStart
+ *
+ * Parameters:
+ * element - {DOMElement} The DOM element to register the listener on
+ * type - {String} The event type
+ * handler - {Function} the handler
+ */
+ addMsTouchListenerStart: function(element, type, handler) {
+ var touches = this._msTouches;
+
+ var cb = function(e) {
+
+ var alreadyInArray = false;
+ for (var i=0, ii=touches.length; i 0 && element);
return button;
},
+
+ /**
+ * Method: ignore
+ * Check for event target elements that should be ignored by OpenLayers.
+ *
+ * Parameters:
+ * element - {DOMElement} The event target.
+ */
+ ignore: function(element) {
+ var depth = 3,
+ ignore = false;
+ do {
+ if (element.nodeName.toLowerCase() === 'a') {
+ ignore = true;
+ break;
+ }
+ element = element.parentNode;
+ } while (--depth > 0 && element);
+ return ignore;
+ },
/**
* Method: buttonClick
@@ -150,6 +170,12 @@ OpenLayers.Events.buttonclick = OpenLayers.Class({
} else if (this.startEvt) {
if (this.completeRegEx.test(evt.type)) {
var pos = OpenLayers.Util.pagePosition(button);
+ var viewportElement = OpenLayers.Util.getViewportElement();
+ var scrollTop = window.pageYOffset || viewportElement.scrollTop;
+ var scrollLeft = window.pageXOffset || viewportElement.scrollLeft;
+ pos[0] = pos[0] - scrollLeft;
+ pos[1] = pos[1] - scrollTop;
+
this.target.triggerEvent("buttonclick", {
buttonElement: button,
buttonXY: {
@@ -170,6 +196,7 @@ OpenLayers.Events.buttonclick = OpenLayers.Class({
propagate = false;
}
} else {
+ propagate = !this.ignore(OpenLayers.Event.element(evt));
delete this.startEvt;
}
}
diff --git a/dlf/lib/OpenLayers/lib/OpenLayers/Events/featureclick.js b/dlf/lib/OpenLayers/lib/OpenLayers/Events/featureclick.js
new file mode 100644
index 00000000..9ae6ec53
--- /dev/null
+++ b/dlf/lib/OpenLayers/lib/OpenLayers/Events/featureclick.js
@@ -0,0 +1,321 @@
+/* Copyright (c) 2006-2013 by OpenLayers Contributors (see authors.txt for
+ * full list of contributors). Published under the 2-clause BSD license.
+ * See license.txt in the OpenLayers distribution or repository for the
+ * full text of the license. */
+
+/**
+ * @requires OpenLayers/Events.js
+ */
+
+/**
+ * Class: OpenLayers.Events.featureclick
+ *
+ * Extension event type for handling feature click events, including overlapping
+ * features.
+ *
+ * Event types provided by this extension:
+ * - featureclick
+ */
+OpenLayers.Events.featureclick = OpenLayers.Class({
+
+ /**
+ * Property: cache
+ * {Object} A cache of features under the mouse.
+ */
+ cache: null,
+
+ /**
+ * Property: map
+ * {} The map to register browser events on.
+ */
+ map: null,
+
+ /**
+ * Property: provides
+ * {Array(String)} The event types provided by this extension.
+ */
+ provides: ["featureclick", "nofeatureclick", "featureover", "featureout"],
+
+ /**
+ * Constructor: OpenLayers.Events.featureclick
+ * Create a new featureclick event type.
+ *
+ * Parameters:
+ * target - {} The events instance to create the events
+ * for.
+ */
+ initialize: function(target) {
+ this.target = target;
+ if (target.object instanceof OpenLayers.Map) {
+ this.setMap(target.object);
+ } else if (target.object instanceof OpenLayers.Layer.Vector) {
+ if (target.object.map) {
+ this.setMap(target.object.map);
+ } else {
+ target.object.events.register("added", this, function(evt) {
+ this.setMap(target.object.map);
+ });
+ }
+ } else {
+ throw("Listeners for '" + this.provides.join("', '") +
+ "' events can only be registered for OpenLayers.Layer.Vector " +
+ "or OpenLayers.Map instances");
+ }
+ for (var i=this.provides.length-1; i>=0; --i) {
+ target.extensions[this.provides[i]] = true;
+ }
+ },
+
+ /**
+ * Method: setMap
+ *
+ * Parameters:
+ * map - {} The map to register browser events on.
+ */
+ setMap: function(map) {
+ this.map = map;
+ this.cache = {};
+ map.events.register("mousedown", this, this.start, {extension: true});
+ map.events.register("mouseup", this, this.onClick, {extension: true});
+ map.events.register("touchstart", this, this.start, {extension: true});
+ map.events.register("touchmove", this, this.cancel, {extension: true});
+ map.events.register("touchend", this, this.onClick, {extension: true});
+ map.events.register("mousemove", this, this.onMousemove, {extension: true});
+ },
+
+ /**
+ * Method: start
+ * Sets startEvt = evt.
+ *
+ * Parameters:
+ * evt - {}
+ */
+ start: function(evt) {
+ this.startEvt = evt;
+ },
+
+ /**
+ * Method: cancel
+ * Deletes the start event.
+ *
+ * Parameters:
+ * evt - {}
+ */
+ cancel: function(evt) {
+ delete this.startEvt;
+ },
+
+ /**
+ * Method: onClick
+ * Listener for the click event.
+ *
+ * Parameters:
+ * evt - {}
+ */
+ onClick: function(evt) {
+ if (!this.startEvt || evt.type !== "touchend" &&
+ !OpenLayers.Event.isLeftClick(evt)) {
+ return;
+ }
+ var features = this.getFeatures(this.startEvt);
+ delete this.startEvt;
+ // fire featureclick events
+ var feature, layer, more, clicked = {};
+ for (var i=0, len=features.length; i}
+ */
+ onMousemove: function(evt) {
+ delete this.startEvt;
+ var features = this.getFeatures(evt);
+ var over = {}, newly = [], feature;
+ for (var i=0, len=features.length; i)} List of features at the given point.
+ */
+ getFeatures: function(evt) {
+ var x = evt.clientX, y = evt.clientY,
+ features = [], targets = [], layers = [],
+ layer, target, feature, i, len;
+ // go through all layers looking for targets
+ for (i=this.map.layers.length-1; i>=0; --i) {
+ layer = this.map.layers[i];
+ if (layer.div.style.display !== "none") {
+ if (layer.renderer instanceof OpenLayers.Renderer.Elements) {
+ if (layer instanceof OpenLayers.Layer.Vector) {
+ target = document.elementFromPoint(x, y);
+ while (target && target._featureId) {
+ feature = layer.getFeatureById(target._featureId);
+ if (feature) {
+ features.push(feature);
+ target.style.display = "none";
+ targets.push(target);
+ target = document.elementFromPoint(x, y);
+ } else {
+ // sketch, all bets off
+ target = false;
+ }
+ }
+ }
+ layers.push(layer);
+ layer.div.style.display = "none";
+ } else if (layer.renderer instanceof OpenLayers.Renderer.Canvas) {
+ feature = layer.renderer.getFeatureIdFromEvent(evt);
+ if (feature) {
+ features.push(feature);
+ layers.push(layer);
+ }
+ }
+ }
+ }
+ // restore feature visibility
+ for (i=0, len=targets.length; i=0; --i) {
+ layers[i].div.style.display = "block";
+ }
+ return features;
+ },
+
+ /**
+ * APIMethod: destroy
+ * Clean up.
+ */
+ destroy: function() {
+ for (var i=this.provides.length-1; i>=0; --i) {
+ delete this.target.extensions[this.provides[i]];
+ }
+ this.map.events.un({
+ mousemove: this.onMousemove,
+ mousedown: this.start,
+ mouseup: this.onClick,
+ touchstart: this.start,
+ touchmove: this.cancel,
+ touchend: this.onClick,
+ scope: this
+ });
+ delete this.cache;
+ delete this.map;
+ delete this.target;
+ }
+
+});
+
+/**
+ * Class: OpenLayers.Events.nofeatureclick
+ *
+ * Extension event type for handling click events that do not hit a feature.
+ *
+ * Event types provided by this extension:
+ * - nofeatureclick
+ */
+OpenLayers.Events.nofeatureclick = OpenLayers.Events.featureclick;
+
+/**
+ * Class: OpenLayers.Events.featureover
+ *
+ * Extension event type for handling hovering over a feature.
+ *
+ * Event types provided by this extension:
+ * - featureover
+ */
+OpenLayers.Events.featureover = OpenLayers.Events.featureclick;
+
+/**
+ * Class: OpenLayers.Events.featureout
+ *
+ * Extension event type for handling leaving a feature.
+ *
+ * Event types provided by this extension:
+ * - featureout
+ */
+OpenLayers.Events.featureout = OpenLayers.Events.featureclick;
diff --git a/dlf/lib/OpenLayers/lib/OpenLayers/Feature.js b/dlf/lib/OpenLayers/lib/OpenLayers/Feature.js
index 7e391d30..ed7fd167 100644
--- a/dlf/lib/OpenLayers/lib/OpenLayers/Feature.js
+++ b/dlf/lib/OpenLayers/lib/OpenLayers/Feature.js
@@ -1,4 +1,4 @@
-/* Copyright (c) 2006-2012 by OpenLayers Contributors (see authors.txt for
+/* Copyright (c) 2006-2013 by OpenLayers Contributors (see authors.txt for
* full list of contributors). Published under the 2-clause BSD license.
* See license.txt in the OpenLayers distribution or repository for the
* full text of the license. */
diff --git a/dlf/lib/OpenLayers/lib/OpenLayers/Feature/Vector.js b/dlf/lib/OpenLayers/lib/OpenLayers/Feature/Vector.js
index 6f36fec6..a6c8c70a 100644
--- a/dlf/lib/OpenLayers/lib/OpenLayers/Feature/Vector.js
+++ b/dlf/lib/OpenLayers/lib/OpenLayers/Feature/Vector.js
@@ -1,4 +1,4 @@
-/* Copyright (c) 2006-2012 by OpenLayers Contributors (see authors.txt for
+/* Copyright (c) 2006-2013 by OpenLayers Contributors (see authors.txt for
* full list of contributors). Published under the 2-clause BSD license.
* See license.txt in the OpenLayers distribution or repository for the
* full text of the license. */
@@ -403,7 +403,8 @@ OpenLayers.Feature.Vector = OpenLayers.Class(OpenLayers.Feature, {
* graphicZIndex - {Number} The integer z-index value to use in rendering.
* graphicName - {String} Named graphic to use when rendering points. Supported values include "circle" (default),
* "square", "star", "x", "cross", "triangle".
- * graphicTitle - {String} Tooltip for an external graphic.
+ * graphicTitle - {String} Tooltip when hovering over a feature. *deprecated*, use title instead
+ * title - {String} Tooltip when hovering over a feature. Not supported by the canvas renderer.
* backgroundGraphic - {String} Url to a graphic to be used as the background under an externalGraphic.
* backgroundGraphicZIndex - {Number} The integer z-index value to use in rendering the background graphic.
* backgroundXOffset - {Number} The x offset (in pixels) for the background graphic.
@@ -421,7 +422,8 @@ OpenLayers.Feature.Vector = OpenLayers.Class(OpenLayers.Feature, {
* labelSelect - {Boolean} If set to true, labels will be selectable using SelectFeature or similar controls.
* Default is false.
* labelOutlineColor - {String} The color of the label outline. Default is 'white'. Only supported by the canvas & SVG renderers.
- * labelOutlineWidth - {Number} The width of the label outline. Default is 3, set to 0 or null to disable. Only supported by the canvas & SVG renderers.
+ * labelOutlineWidth - {Number} The width of the label outline. Default is 3, set to 0 or null to disable. Only supported by the SVG renderers.
+ * labelOutlineOpacity - {Number} The opacity (0-1) of the label outline. Default is fontOpacity. Only supported by the canvas & SVG renderers.
* fontColor - {String} The font color for the label, to be provided like CSS.
* fontOpacity - {Number} Opacity (0-1) for the label
* fontFamily - {String} The font family for the label, to be provided like in CSS.
diff --git a/dlf/lib/OpenLayers/lib/OpenLayers/Filter.js b/dlf/lib/OpenLayers/lib/OpenLayers/Filter.js
index b9d8c9e3..99c04481 100644
--- a/dlf/lib/OpenLayers/lib/OpenLayers/Filter.js
+++ b/dlf/lib/OpenLayers/lib/OpenLayers/Filter.js
@@ -1,4 +1,4 @@
-/* Copyright (c) 2006-2012 by OpenLayers Contributors (see authors.txt for
+/* Copyright (c) 2006-2013 by OpenLayers Contributors (see authors.txt for
* full list of contributors). Published under the 2-clause BSD license.
* See license.txt in the OpenLayers distribution or repository for the
* full text of the license. */
diff --git a/dlf/lib/OpenLayers/lib/OpenLayers/Filter/Comparison.js b/dlf/lib/OpenLayers/lib/OpenLayers/Filter/Comparison.js
index c57c868a..6863ea8d 100644
--- a/dlf/lib/OpenLayers/lib/OpenLayers/Filter/Comparison.js
+++ b/dlf/lib/OpenLayers/lib/OpenLayers/Filter/Comparison.js
@@ -1,4 +1,4 @@
-/* Copyright (c) 2006-2012 by OpenLayers Contributors (see authors.txt for
+/* Copyright (c) 2006-2013 by OpenLayers Contributors (see authors.txt for
* full list of contributors). Published under the 2-clause BSD license.
* See license.txt in the OpenLayers distribution or repository for the
* full text of the license. */
@@ -26,7 +26,8 @@ OpenLayers.Filter.Comparison = OpenLayers.Class(OpenLayers.Filter, {
* - OpenLayers.Filter.Comparison.LESS_THAN_OR_EQUAL_TO = "<=";
* - OpenLayers.Filter.Comparison.GREATER_THAN_OR_EQUAL_TO = ">=";
* - OpenLayers.Filter.Comparison.BETWEEN = "..";
- * - OpenLayers.Filter.Comparison.LIKE = "~";
+ * - OpenLayers.Filter.Comparison.LIKE = "~";
+ * - OpenLayers.Filter.Comparison.IS_NULL = "NULL";
*/
type: null,
@@ -154,6 +155,9 @@ OpenLayers.Filter.Comparison = OpenLayers.Class(OpenLayers.Filter, {
var regexp = new RegExp(this.value, "gi");
result = regexp.test(got);
break;
+ case OpenLayers.Filter.Comparison.IS_NULL:
+ result = (got === null);
+ break;
}
return result;
},
@@ -260,3 +264,4 @@ OpenLayers.Filter.Comparison.LESS_THAN_OR_EQUAL_TO = "<=";
OpenLayers.Filter.Comparison.GREATER_THAN_OR_EQUAL_TO = ">=";
OpenLayers.Filter.Comparison.BETWEEN = "..";
OpenLayers.Filter.Comparison.LIKE = "~";
+OpenLayers.Filter.Comparison.IS_NULL = "NULL";
diff --git a/dlf/lib/OpenLayers/lib/OpenLayers/Filter/FeatureId.js b/dlf/lib/OpenLayers/lib/OpenLayers/Filter/FeatureId.js
index c9b14ab2..29276512 100644
--- a/dlf/lib/OpenLayers/lib/OpenLayers/Filter/FeatureId.js
+++ b/dlf/lib/OpenLayers/lib/OpenLayers/Filter/FeatureId.js
@@ -1,4 +1,4 @@
-/* Copyright (c) 2006-2012 by OpenLayers Contributors (see authors.txt for
+/* Copyright (c) 2006-2013 by OpenLayers Contributors (see authors.txt for
* full list of contributors). Published under the 2-clause BSD license.
* See license.txt in the OpenLayers distribution or repository for the
* full text of the license. */
diff --git a/dlf/lib/OpenLayers/lib/OpenLayers/Filter/Function.js b/dlf/lib/OpenLayers/lib/OpenLayers/Filter/Function.js
index c7d60471..0d5a7a9f 100644
--- a/dlf/lib/OpenLayers/lib/OpenLayers/Filter/Function.js
+++ b/dlf/lib/OpenLayers/lib/OpenLayers/Filter/Function.js
@@ -1,4 +1,4 @@
-/* Copyright (c) 2006-2012 by OpenLayers Contributors (see authors.txt for
+/* Copyright (c) 2006-2013 by OpenLayers Contributors (see authors.txt for
* full list of contributors). Published under the 2-clause BSD license.
* See license.txt in the OpenLayers distribution or repository for the
* full text of the license. */
diff --git a/dlf/lib/OpenLayers/lib/OpenLayers/Filter/Logical.js b/dlf/lib/OpenLayers/lib/OpenLayers/Filter/Logical.js
index b8e5c4d1..4eac5799 100644
--- a/dlf/lib/OpenLayers/lib/OpenLayers/Filter/Logical.js
+++ b/dlf/lib/OpenLayers/lib/OpenLayers/Filter/Logical.js
@@ -1,4 +1,4 @@
-/* Copyright (c) 2006-2012 by OpenLayers Contributors (see authors.txt for
+/* Copyright (c) 2006-2013 by OpenLayers Contributors (see authors.txt for
* full list of contributors). Published under the 2-clause BSD license.
* See license.txt in the OpenLayers distribution or repository for the
* full text of the license. */
diff --git a/dlf/lib/OpenLayers/lib/OpenLayers/Filter/Spatial.js b/dlf/lib/OpenLayers/lib/OpenLayers/Filter/Spatial.js
index 0aba0cfd..dd9e2a7c 100644
--- a/dlf/lib/OpenLayers/lib/OpenLayers/Filter/Spatial.js
+++ b/dlf/lib/OpenLayers/lib/OpenLayers/Filter/Spatial.js
@@ -1,4 +1,4 @@
-/* Copyright (c) 2006-2012 by OpenLayers Contributors (see authors.txt for
+/* Copyright (c) 2006-2013 by OpenLayers Contributors (see authors.txt for
* full list of contributors). Published under the 2-clause BSD license.
* See license.txt in the OpenLayers distribution or repository for the
* full text of the license. */
diff --git a/dlf/lib/OpenLayers/lib/OpenLayers/Format.js b/dlf/lib/OpenLayers/lib/OpenLayers/Format.js
index 16c5d5b0..620ecc7e 100644
--- a/dlf/lib/OpenLayers/lib/OpenLayers/Format.js
+++ b/dlf/lib/OpenLayers/lib/OpenLayers/Format.js
@@ -1,4 +1,4 @@
-/* Copyright (c) 2006-2012 by OpenLayers Contributors (see authors.txt for
+/* Copyright (c) 2006-2013 by OpenLayers Contributors (see authors.txt for
* full list of contributors). Published under the 2-clause BSD license.
* See license.txt in the OpenLayers distribution or repository for the
* full text of the license. */
diff --git a/dlf/lib/OpenLayers/lib/OpenLayers/Format/ArcXML.js b/dlf/lib/OpenLayers/lib/OpenLayers/Format/ArcXML.js
index e0affcee..9d523d1c 100644
--- a/dlf/lib/OpenLayers/lib/OpenLayers/Format/ArcXML.js
+++ b/dlf/lib/OpenLayers/lib/OpenLayers/Format/ArcXML.js
@@ -1,4 +1,4 @@
-/* Copyright (c) 2006-2012 by OpenLayers Contributors (see authors.txt for
+/* Copyright (c) 2006-2013 by OpenLayers Contributors (see authors.txt for
* full list of contributors). Published under the 2-clause BSD license.
* See license.txt in the OpenLayers distribution or repository for the
* full text of the license. */
@@ -13,7 +13,7 @@
/**
* Class: OpenLayers.Format.ArcXML
- * Read/Wite ArcXML. Create a new instance with the
+ * Read/Write ArcXML. Create a new instance with the
* constructor.
*
* Inherits from:
diff --git a/dlf/lib/OpenLayers/lib/OpenLayers/Format/ArcXML/Features.js b/dlf/lib/OpenLayers/lib/OpenLayers/Format/ArcXML/Features.js
index dc01a4a4..5b8730d9 100644
--- a/dlf/lib/OpenLayers/lib/OpenLayers/Format/ArcXML/Features.js
+++ b/dlf/lib/OpenLayers/lib/OpenLayers/Format/ArcXML/Features.js
@@ -1,4 +1,4 @@
-/* Copyright (c) 2006-2012 by OpenLayers Contributors (see authors.txt for
+/* Copyright (c) 2006-2013 by OpenLayers Contributors (see authors.txt for
* full list of contributors). Published under the 2-clause BSD license.
* See license.txt in the OpenLayers distribution or repository for the
* full text of the license. */
@@ -9,7 +9,7 @@
/**
* Class: OpenLayers.Format.ArcXML.Features
- * Read/Wite ArcXML features. Create a new instance with the
+ * Read/Write ArcXML features. Create a new instance with the
* constructor.
*
* Inherits from:
diff --git a/dlf/lib/OpenLayers/lib/OpenLayers/Format/Atom.js b/dlf/lib/OpenLayers/lib/OpenLayers/Format/Atom.js
index 7f6aaa1f..8eb57922 100644
--- a/dlf/lib/OpenLayers/lib/OpenLayers/Format/Atom.js
+++ b/dlf/lib/OpenLayers/lib/OpenLayers/Format/Atom.js
@@ -1,4 +1,4 @@
-/* Copyright (c) 2006-2012 by OpenLayers Contributors (see authors.txt for
+/* Copyright (c) 2006-2013 by OpenLayers Contributors (see authors.txt for
* full list of contributors). Published under the 2-clause BSD license.
* See license.txt in the OpenLayers distribution or repository for the
* full text of the license. */
@@ -646,7 +646,7 @@ OpenLayers.Format.Atom = OpenLayers.Class(OpenLayers.Format.XML, {
}
components.push(
new OpenLayers.Geometry.Polygon(
- [new OpenLayers.Geometry.LinearRing(components)]
+ [new OpenLayers.Geometry.LinearRing(points)]
)
);
}
diff --git a/dlf/lib/OpenLayers/lib/OpenLayers/Format/CQL.js b/dlf/lib/OpenLayers/lib/OpenLayers/Format/CQL.js
index fa88d2a7..8430a8b5 100644
--- a/dlf/lib/OpenLayers/lib/OpenLayers/Format/CQL.js
+++ b/dlf/lib/OpenLayers/lib/OpenLayers/Format/CQL.js
@@ -1,10 +1,13 @@
-/* Copyright (c) 2006-2012 by OpenLayers Contributors (see authors.txt for
+/* Copyright (c) 2006-2013 by OpenLayers Contributors (see authors.txt for
* full list of contributors). Published under the 2-clause BSD license.
* See license.txt in the OpenLayers distribution or repository for the
* full text of the license. */
/**
* @requires OpenLayers/Format/WKT.js
+ * @requires OpenLayers/Filter/Comparison.js
+ * @requires OpenLayers/Filter/Logical.js
+ * @requires OpenLayers/Filter/Spatial.js
*/
/**
@@ -25,9 +28,10 @@ OpenLayers.Format.CQL = (function() {
patterns = {
PROPERTY: /^[_a-zA-Z]\w*/,
COMPARISON: /^(=|<>|<=|<|>=|>|LIKE)/i,
+ IS_NULL: /^IS NULL/i,
COMMA: /^,/,
LOGICAL: /^(AND|OR)/i,
- VALUE: /^('\w+'|\d+(\.\d*)?|\.\d+)/,
+ VALUE: /^('([^']|'')*'|\d+(\.\d*)?|\.\d+)/,
LPAREN: /^\(/,
RPAREN: /^\)/,
SPATIAL: /^(BBOX|INTERSECTS|DWITHIN|WITHIN|CONTAINS)/i,
@@ -63,8 +67,9 @@ OpenLayers.Format.CQL = (function() {
follows = {
LPAREN: ['GEOMETRY', 'SPATIAL', 'PROPERTY', 'VALUE', 'LPAREN'],
RPAREN: ['NOT', 'LOGICAL', 'END', 'RPAREN'],
- PROPERTY: ['COMPARISON', 'BETWEEN', 'COMMA'],
+ PROPERTY: ['COMPARISON', 'BETWEEN', 'COMMA', 'IS_NULL'],
BETWEEN: ['VALUE'],
+ IS_NULL: ['END'],
COMPARISON: ['VALUE'],
COMMA: ['GEOMETRY', 'VALUE', 'PROPERTY'],
VALUE: ['LOGICAL', 'COMMA', 'RPAREN', 'END'],
@@ -82,7 +87,8 @@ OpenLayers.Format.CQL = (function() {
'>': OpenLayers.Filter.Comparison.GREATER_THAN,
'>=': OpenLayers.Filter.Comparison.GREATER_THAN_OR_EQUAL_TO,
'LIKE': OpenLayers.Filter.Comparison.LIKE,
- 'BETWEEN': OpenLayers.Filter.Comparison.BETWEEN
+ 'BETWEEN': OpenLayers.Filter.Comparison.BETWEEN,
+ 'IS NULL': OpenLayers.Filter.Comparison.IS_NULL
},
operatorReverse = {},
@@ -178,6 +184,7 @@ OpenLayers.Format.CQL = (function() {
break;
case "COMPARISON":
case "BETWEEN":
+ case "IS_NULL":
case "LOGICAL":
var p = precedence[tok.type];
@@ -254,9 +261,16 @@ OpenLayers.Format.CQL = (function() {
value: value,
type: operators[tok.text.toUpperCase()]
});
+ case "IS_NULL":
+ var property = buildTree();
+ return new OpenLayers.Filter.Comparison({
+ property: property,
+ type: operators[tok.text.toUpperCase()]
+ });
case "VALUE":
- if ((/^'.*'$/).test(tok.text)) {
- return tok.text.substr(1, tok.text.length - 2);
+ var match = tok.text.match(/^'(.*)'$/);
+ if (match) {
+ return match[1].replace(/''/g, "'");
} else {
return Number(tok.text);
}
@@ -415,14 +429,14 @@ OpenLayers.Format.CQL = (function() {
this.write(filter.lowerBoundary) + " AND " +
this.write(filter.upperBoundary);
} else {
-
- return filter.property +
+ return (filter.value !== null) ? filter.property +
" " + operatorReverse[filter.type] + " " +
- this.write(filter.value);
+ this.write(filter.value) : filter.property +
+ " " + operatorReverse[filter.type];
}
case undefined:
if (typeof filter === "string") {
- return "'" + filter + "'";
+ return "'" + filter.replace(/'/g, "''") + "'";
} else if (typeof filter === "number") {
return String(filter);
}
diff --git a/dlf/lib/OpenLayers/lib/OpenLayers/Format/CSWGetDomain.js b/dlf/lib/OpenLayers/lib/OpenLayers/Format/CSWGetDomain.js
index dd469496..18d53284 100644
--- a/dlf/lib/OpenLayers/lib/OpenLayers/Format/CSWGetDomain.js
+++ b/dlf/lib/OpenLayers/lib/OpenLayers/Format/CSWGetDomain.js
@@ -1,4 +1,4 @@
-/* Copyright (c) 2006-2012 by OpenLayers Contributors (see authors.txt for
+/* Copyright (c) 2006-2013 by OpenLayers Contributors (see authors.txt for
* full list of contributors). Published under the 2-clause BSD license.
* See license.txt in the OpenLayers distribution or repository for the
* full text of the license. */
diff --git a/dlf/lib/OpenLayers/lib/OpenLayers/Format/CSWGetDomain/v2_0_2.js b/dlf/lib/OpenLayers/lib/OpenLayers/Format/CSWGetDomain/v2_0_2.js
index 831a16e5..78200eab 100644
--- a/dlf/lib/OpenLayers/lib/OpenLayers/Format/CSWGetDomain/v2_0_2.js
+++ b/dlf/lib/OpenLayers/lib/OpenLayers/Format/CSWGetDomain/v2_0_2.js
@@ -1,4 +1,4 @@
-/* Copyright (c) 2006-2012 by OpenLayers Contributors (see authors.txt for
+/* Copyright (c) 2006-2013 by OpenLayers Contributors (see authors.txt for
* full list of contributors). Published under the 2-clause BSD license.
* See license.txt in the OpenLayers distribution or repository for the
* full text of the license. */
diff --git a/dlf/lib/OpenLayers/lib/OpenLayers/Format/CSWGetRecords.js b/dlf/lib/OpenLayers/lib/OpenLayers/Format/CSWGetRecords.js
index 74146a72..923c5487 100644
--- a/dlf/lib/OpenLayers/lib/OpenLayers/Format/CSWGetRecords.js
+++ b/dlf/lib/OpenLayers/lib/OpenLayers/Format/CSWGetRecords.js
@@ -1,4 +1,4 @@
-/* Copyright (c) 2006-2012 by OpenLayers Contributors (see authors.txt for
+/* Copyright (c) 2006-2013 by OpenLayers Contributors (see authors.txt for
* full list of contributors). Published under the 2-clause BSD license.
* See license.txt in the OpenLayers distribution or repository for the
* full text of the license. */
diff --git a/dlf/lib/OpenLayers/lib/OpenLayers/Format/CSWGetRecords/v2_0_2.js b/dlf/lib/OpenLayers/lib/OpenLayers/Format/CSWGetRecords/v2_0_2.js
index 9b2274da..3c876127 100644
--- a/dlf/lib/OpenLayers/lib/OpenLayers/Format/CSWGetRecords/v2_0_2.js
+++ b/dlf/lib/OpenLayers/lib/OpenLayers/Format/CSWGetRecords/v2_0_2.js
@@ -1,4 +1,4 @@
-/* Copyright (c) 2006-2012 by OpenLayers Contributors (see authors.txt for
+/* Copyright (c) 2006-2013 by OpenLayers Contributors (see authors.txt for
* full list of contributors). Published under the 2-clause BSD license.
* See license.txt in the OpenLayers distribution or repository for the
* full text of the license. */
diff --git a/dlf/lib/OpenLayers/lib/OpenLayers/Format/Context.js b/dlf/lib/OpenLayers/lib/OpenLayers/Format/Context.js
index 7fc2e526..73d6203d 100644
--- a/dlf/lib/OpenLayers/lib/OpenLayers/Format/Context.js
+++ b/dlf/lib/OpenLayers/lib/OpenLayers/Format/Context.js
@@ -1,4 +1,4 @@
-/* Copyright (c) 2006-2012 by OpenLayers Contributors (see authors.txt for
+/* Copyright (c) 2006-2013 by OpenLayers Contributors (see authors.txt for
* full list of contributors). Published under the 2-clause BSD license.
* See license.txt in the OpenLayers distribution or repository for the
* full text of the license. */
diff --git a/dlf/lib/OpenLayers/lib/OpenLayers/Format/EncodedPolyline.js b/dlf/lib/OpenLayers/lib/OpenLayers/Format/EncodedPolyline.js
new file mode 100644
index 00000000..e10e8b27
--- /dev/null
+++ b/dlf/lib/OpenLayers/lib/OpenLayers/Format/EncodedPolyline.js
@@ -0,0 +1,557 @@
+/* Copyright (c) 2006-2013 by OpenLayers Contributors (see authors.txt for
+ * full list of contributors). Published under the 2-clause BSD license.
+ * See license.txt in the OpenLayers distribution or repository for the
+ * full text of the license. */
+
+/**
+ * @requires OpenLayers/Format.js
+ * @requires OpenLayers/Feature/Vector.js
+ */
+
+/**
+ * Class: OpenLayers.Format.EncodedPolyline
+ * Class for reading and writing encoded polylines. Create a new instance
+ * with the constructor.
+ *
+ * Inherits from:
+ * -
+ */
+OpenLayers.Format.EncodedPolyline = OpenLayers.Class(OpenLayers.Format, {
+
+ /**
+ * APIProperty: geometryType
+ * {String} Geometry type to output. One of: linestring (default),
+ * linearring, point, multipoint or polygon. If the geometryType is
+ * point, only the first point of the string is returned.
+ */
+ geometryType: "linestring",
+
+ /**
+ * Constructor: OpenLayers.Format.EncodedPolyline
+ * Create a new parser for encoded polylines
+ *
+ * Parameters:
+ * options - {Object} An optional object whose properties will be set on
+ * this instance
+ *
+ * Returns:
+ * {} A new encoded polylines parser.
+ */
+ initialize: function(options) {
+ OpenLayers.Format.prototype.initialize.apply(this, [options]);
+ },
+
+ /**
+ * APIMethod: read
+ * Deserialize an encoded polyline string and return a vector feature.
+ *
+ * Parameters:
+ * encoded - {String} An encoded polyline string
+ *
+ * Returns:
+ * {} A vector feature with a linestring.
+ */
+ read: function(encoded) {
+ var geomType;
+ if (this.geometryType == "linestring")
+ geomType = OpenLayers.Geometry.LineString;
+ else if (this.geometryType == "linearring")
+ geomType = OpenLayers.Geometry.LinearRing;
+ else if (this.geometryType == "multipoint")
+ geomType = OpenLayers.Geometry.MultiPoint;
+ else if (this.geometryType != "point" && this.geometryType != "polygon")
+ return null;
+
+ var flatPoints = this.decodeDeltas(encoded, 2);
+ var flatPointsLength = flatPoints.length;
+
+ var pointGeometries = [];
+ for (var i = 0; i + 1 < flatPointsLength;) {
+ var y = flatPoints[i++], x = flatPoints[i++];
+ pointGeometries.push(new OpenLayers.Geometry.Point(x, y));
+ }
+
+
+ if (this.geometryType == "point")
+ return new OpenLayers.Feature.Vector(
+ pointGeometries[0]
+ );
+
+ if (this.geometryType == "polygon")
+ return new OpenLayers.Feature.Vector(
+ new OpenLayers.Geometry.Polygon([
+ new OpenLayers.Geometry.LinearRing(pointGeometries)
+ ])
+ );
+
+ return new OpenLayers.Feature.Vector(
+ new geomType(pointGeometries)
+ );
+ },
+
+ /**
+ * APIMethod: decode
+ * Deserialize an encoded string and return an array of n-dimensional
+ * points.
+ *
+ * Parameters:
+ * encoded - {String} An encoded string
+ * dims - {int} The dimension of the points that are returned
+ *
+ * Returns:
+ * {Array(Array(int))} An array containing n-dimensional arrays of
+ * coordinates.
+ */
+ decode: function(encoded, dims, opt_factor) {
+ var factor = opt_factor || 1e5;
+ var flatPoints = this.decodeDeltas(encoded, dims, factor);
+ var flatPointsLength = flatPoints.length;
+
+ var points = [];
+ for (var i = 0; i + (dims - 1) < flatPointsLength;) {
+ var point = [];
+
+ for (var dim = 0; dim < dims; ++dim) {
+ point.push(flatPoints[i++])
+ }
+
+ points.push(point);
+ }
+
+ return points;
+ },
+
+ /**
+ * APIMethod: write
+ * Serialize a feature or array of features into a WKT string.
+ *
+ * Parameters:
+ * features - {|Array} A feature or array of
+ * features
+ *
+ * Returns:
+ * {String} The WKT string representation of the input geometries
+ */
+ write: function(features) {
+ var feature;
+ if (features.constructor == Array)
+ feature = features[0];
+ else
+ feature = features;
+
+ var geometry = feature.geometry;
+ var type = geometry.CLASS_NAME.split('.')[2].toLowerCase();
+
+ var pointGeometries;
+ if (type == "point")
+ pointGeometries = new Array(geometry);
+ else if (type == "linestring" ||
+ type == "linearring" ||
+ type == "multipoint")
+ pointGeometries = geometry.components;
+ else if (type == "polygon")
+ pointGeometries = geometry.components[0].components;
+ else
+ return null;
+
+ var flatPoints = [];
+
+ var pointGeometriesLength = pointGeometries.length;
+ for (var i = 0; i < pointGeometriesLength; ++i) {
+ var pointGeometry = pointGeometries[i];
+ flatPoints.push(pointGeometry.y);
+ flatPoints.push(pointGeometry.x);
+ }
+
+ return this.encodeDeltas(flatPoints, 2);
+ },
+
+ /**
+ * APIMethod: encode
+ * Serialize an array of n-dimensional points and return an encoded string
+ *
+ * Parameters:
+ * points - {Array(Array(int))} An array containing n-dimensional
+ * arrays of coordinates
+ * dims - {int} The dimension of the points that should be read
+ *
+ * Returns:
+ * {String} An encoded string
+ */
+ encode: function (points, dims, opt_factor) {
+ var factor = opt_factor || 1e5;
+ var flatPoints = [];
+
+ var pointsLength = points.length;
+ for (var i = 0; i < pointsLength; ++i) {
+ var point = points[i];
+
+ for (var dim = 0; dim < dims; ++dim) {
+ flatPoints.push(point[dim]);
+ }
+ }
+
+ return this.encodeDeltas(flatPoints, dims, factor);
+ },
+
+ /**
+ * APIMethod: encodeDeltas
+ * Encode a list of n-dimensional points and return an encoded string
+ *
+ * Attention: This function will modify the passed array!
+ *
+ * Parameters:
+ * numbers - {Array.} A list of n-dimensional points.
+ * dimension - {number} The dimension of the points in the list.
+ * opt_factor - {number=} The factor by which the numbers will be
+ * multiplied. The remaining decimal places will get rounded away.
+ *
+ * Returns:
+ * {string} The encoded string.
+ */
+ encodeDeltas: function(numbers, dimension, opt_factor) {
+ var factor = opt_factor || 1e5;
+ var d;
+
+ var lastNumbers = new Array(dimension);
+ for (d = 0; d < dimension; ++d) {
+ lastNumbers[d] = 0;
+ }
+
+ var numbersLength = numbers.length;
+ for (var i = 0; i < numbersLength;) {
+ for (d = 0; d < dimension; ++d, ++i) {
+ var num = numbers[i];
+ var delta = num - lastNumbers[d];
+ lastNumbers[d] = num;
+
+ numbers[i] = delta;
+ }
+ }
+
+ return this.encodeFloats(numbers, factor);
+ },
+
+
+ /**
+ * APIMethod: decodeDeltas
+ * Decode a list of n-dimensional points from an encoded string
+ *
+ * Parameters:
+ * encoded - {string} An encoded string.
+ * dimension - {number} The dimension of the points in the encoded string.
+ * opt_factor - {number=} The factor by which the resulting numbers will
+ * be divided.
+ *
+ * Returns:
+ * {Array.} A list of n-dimensional points.
+ */
+ decodeDeltas: function(encoded, dimension, opt_factor) {
+ var factor = opt_factor || 1e5;
+ var d;
+
+ var lastNumbers = new Array(dimension);
+ for (d = 0; d < dimension; ++d) {
+ lastNumbers[d] = 0;
+ }
+
+ var numbers = this.decodeFloats(encoded, factor);
+
+ var numbersLength = numbers.length;
+ for (var i = 0; i < numbersLength;) {
+ for (d = 0; d < dimension; ++d, ++i) {
+ lastNumbers[d] += numbers[i];
+
+ numbers[i] = lastNumbers[d];
+ }
+ }
+
+ return numbers;
+ },
+
+
+ /**
+ * APIMethod: encodeFloats
+ * Encode a list of floating point numbers and return an encoded string
+ *
+ * Attention: This function will modify the passed array!
+ *
+ * Parameters:
+ * numbers - {Array.} A list of floating point numbers.
+ * opt_factor - {number=} The factor by which the numbers will be
+ * multiplied. The remaining decimal places will get rounded away.
+ *
+ * Returns:
+ * {string} The encoded string.
+ */
+ encodeFloats: function(numbers, opt_factor) {
+ var factor = opt_factor || 1e5;
+
+ var numbersLength = numbers.length;
+ for (var i = 0; i < numbersLength; ++i) {
+ numbers[i] = Math.round(numbers[i] * factor);
+ }
+
+ return this.encodeSignedIntegers(numbers);
+ },
+
+
+ /**
+ * APIMethod: decodeFloats
+ * Decode a list of floating point numbers from an encoded string
+ *
+ * Parameters:
+ * encoded - {string} An encoded string.
+ * opt_factor - {number=} The factor by which the result will be divided.
+ *
+ * Returns:
+ * {Array.} A list of floating point numbers.
+ */
+ decodeFloats: function(encoded, opt_factor) {
+ var factor = opt_factor || 1e5;
+
+ var numbers = this.decodeSignedIntegers(encoded);
+
+ var numbersLength = numbers.length;
+ for (var i = 0; i < numbersLength; ++i) {
+ numbers[i] /= factor;
+ }
+
+ return numbers;
+ },
+
+
+ /**
+ * APIMethod: encodeSignedIntegers
+ * Encode a list of signed integers and return an encoded string
+ *
+ * Attention: This function will modify the passed array!
+ *
+ * Parameters:
+ * numbers - {Array.} A list of signed integers.
+ *
+ * Returns:
+ * {string} The encoded string.
+ */
+ encodeSignedIntegers: function(numbers) {
+ var numbersLength = numbers.length;
+ for (var i = 0; i < numbersLength; ++i) {
+ var num = numbers[i];
+
+ var signedNum = num << 1;
+ if (num < 0) {
+ signedNum = ~(signedNum);
+ }
+
+ numbers[i] = signedNum;
+ }
+
+ return this.encodeUnsignedIntegers(numbers);
+ },
+
+
+ /**
+ * APIMethod: decodeSignedIntegers
+ * Decode a list of signed integers from an encoded string
+ *
+ * Parameters:
+ * encoded - {string} An encoded string.
+ *
+ * Returns:
+ * {Array.} A list of signed integers.
+ */
+ decodeSignedIntegers: function(encoded) {
+ var numbers = this.decodeUnsignedIntegers(encoded);
+
+ var numbersLength = numbers.length;
+ for (var i = 0; i < numbersLength; ++i) {
+ var num = numbers[i];
+ numbers[i] = (num & 1) ? ~(num >> 1) : (num >> 1);
+ }
+
+ return numbers;
+ },
+
+
+ /**
+ * APIMethod: encodeUnsignedIntegers
+ * Encode a list of unsigned integers and return an encoded string
+ *
+ * Parameters:
+ * numbers - {Array.} A list of unsigned integers.
+ *
+ * Returns:
+ * {string} The encoded string.
+ */
+ encodeUnsignedIntegers: function(numbers) {
+ var encoded = '';
+
+ var numbersLength = numbers.length;
+ for (var i = 0; i < numbersLength; ++i) {
+ encoded += this.encodeUnsignedInteger(numbers[i]);
+ }
+
+ return encoded;
+ },
+
+
+ /**
+ * APIMethod: decodeUnsignedIntegers
+ * Decode a list of unsigned integers from an encoded string
+ *
+ * Parameters:
+ * encoded - {string} An encoded string.
+ *
+ * Returns:
+ * {Array.} A list of unsigned integers.
+ */
+ decodeUnsignedIntegers: function(encoded) {
+ var numbers = [];
+
+ var current = 0;
+ var shift = 0;
+
+ var encodedLength = encoded.length;
+ for (var i = 0; i < encodedLength; ++i) {
+ var b = encoded.charCodeAt(i) - 63;
+
+ current |= (b & 0x1f) << shift;
+
+ if (b < 0x20) {
+ numbers.push(current);
+ current = 0;
+ shift = 0;
+ } else {
+ shift += 5;
+ }
+ }
+
+ return numbers;
+ },
+
+
+ /**
+ * Method: encodeFloat
+ * Encode one single floating point number and return an encoded string
+ *
+ * Parameters:
+ * num - {number} Floating point number that should be encoded.
+ * opt_factor - {number=} The factor by which num will be multiplied.
+ * The remaining decimal places will get rounded away.
+ *
+ * Returns:
+ * {string} The encoded string.
+ */
+ encodeFloat: function(num, opt_factor) {
+ num = Math.round(num * (opt_factor || 1e5));
+ return this.encodeSignedInteger(num);
+ },
+
+
+ /**
+ * Method: decodeFloat
+ * Decode one single floating point number from an encoded string
+ *
+ * Parameters:
+ * encoded - {string} An encoded string.
+ * opt_factor - {number=} The factor by which the result will be divided.
+ *
+ * Returns:
+ * {number} The decoded floating point number.
+ */
+ decodeFloat: function(encoded, opt_factor) {
+ var result = this.decodeSignedInteger(encoded);
+ return result / (opt_factor || 1e5);
+ },
+
+
+ /**
+ * Method: encodeSignedInteger
+ * Encode one single signed integer and return an encoded string
+ *
+ * Parameters:
+ * num - {number} Signed integer that should be encoded.
+ *
+ * Returns:
+ * {string} The encoded string.
+ */
+ encodeSignedInteger: function(num) {
+ var signedNum = num << 1;
+ if (num < 0) {
+ signedNum = ~(signedNum);
+ }
+
+ return this.encodeUnsignedInteger(signedNum);
+ },
+
+
+ /**
+ * Method: decodeSignedInteger
+ * Decode one single signed integer from an encoded string
+ *
+ * Parameters:
+ * encoded - {string} An encoded string.
+ *
+ * Returns:
+ * {number} The decoded signed integer.
+ */
+ decodeSignedInteger: function(encoded) {
+ var result = this.decodeUnsignedInteger(encoded);
+ return ((result & 1) ? ~(result >> 1) : (result >> 1));
+ },
+
+
+ /**
+ * Method: encodeUnsignedInteger
+ * Encode one single unsigned integer and return an encoded string
+ *
+ * Parameters:
+ * num - {number} Unsigned integer that should be encoded.
+ *
+ * Returns:
+ * {string} The encoded string.
+ */
+ encodeUnsignedInteger: function(num) {
+ var value, encoded = '';
+ while (num >= 0x20) {
+ value = (0x20 | (num & 0x1f)) + 63;
+ encoded += (String.fromCharCode(value));
+ num >>= 5;
+ }
+ value = num + 63;
+ encoded += (String.fromCharCode(value));
+ return encoded;
+ },
+
+
+ /**
+ * Method: decodeUnsignedInteger
+ * Decode one single unsigned integer from an encoded string
+ *
+ * Parameters:
+ * encoded - {string} An encoded string.
+ *
+ * Returns:
+ * {number} The decoded unsigned integer.
+ */
+ decodeUnsignedInteger: function(encoded) {
+ var result = 0;
+ var shift = 0;
+
+ var encodedLength = encoded.length;
+ for (var i = 0; i < encodedLength; ++i) {
+ var b = encoded.charCodeAt(i) - 63;
+
+ result |= (b & 0x1f) << shift;
+
+ if (b < 0x20)
+ break;
+
+ shift += 5;
+ }
+
+ return result;
+ },
+
+ CLASS_NAME: "OpenLayers.Format.EncodedPolyline"
+});
diff --git a/dlf/lib/OpenLayers/lib/OpenLayers/Format/Filter.js b/dlf/lib/OpenLayers/lib/OpenLayers/Format/Filter.js
index 664b2944..59c06a8e 100644
--- a/dlf/lib/OpenLayers/lib/OpenLayers/Format/Filter.js
+++ b/dlf/lib/OpenLayers/lib/OpenLayers/Format/Filter.js
@@ -1,4 +1,4 @@
-/* Copyright (c) 2006-2012 by OpenLayers Contributors (see authors.txt for
+/* Copyright (c) 2006-2013 by OpenLayers Contributors (see authors.txt for
* full list of contributors). Published under the 2-clause BSD license.
* See license.txt in the OpenLayers distribution or repository for the
* full text of the license. */
@@ -12,7 +12,7 @@
/**
* Class: OpenLayers.Format.Filter
- * Read/Wite ogc:Filter. Create a new instance with the
+ * Read/Write ogc:Filter. Create a new instance with the
* constructor.
*
* Inherits from:
diff --git a/dlf/lib/OpenLayers/lib/OpenLayers/Format/Filter/v1.js b/dlf/lib/OpenLayers/lib/OpenLayers/Format/Filter/v1.js
index 7d7fc767..539ec0f4 100644
--- a/dlf/lib/OpenLayers/lib/OpenLayers/Format/Filter/v1.js
+++ b/dlf/lib/OpenLayers/lib/OpenLayers/Format/Filter/v1.js
@@ -1,4 +1,4 @@
-/* Copyright (c) 2006-2012 by OpenLayers Contributors (see authors.txt for
+/* Copyright (c) 2006-2013 by OpenLayers Contributors (see authors.txt for
* full list of contributors). Published under the 2-clause BSD license.
* See license.txt in the OpenLayers distribution or repository for the
* full text of the license. */
@@ -6,6 +6,7 @@
* @requires OpenLayers/Format/Filter.js
* @requires OpenLayers/Format/XML.js
* @requires OpenLayers/Filter/Function.js
+ * @requires OpenLayers/BaseTypes/Date.js
*/
/**
@@ -27,7 +28,7 @@ OpenLayers.Format.Filter.v1 = OpenLayers.Class(OpenLayers.Format.XML, {
xlink: "http://www.w3.org/1999/xlink",
xsi: "http://www.w3.org/2001/XMLSchema-instance"
},
-
+
/**
* Property: defaultPrefix
*/
@@ -180,18 +181,18 @@ OpenLayers.Format.Filter.v1 = OpenLayers.Class(OpenLayers.Format.XML, {
},
"Literal": function(node, obj) {
obj.value = OpenLayers.String.numericIf(
- this.getChildValue(node));
+ this.getChildValue(node), true);
},
"PropertyName": function(node, filter) {
filter.property = this.getChildValue(node);
},
"LowerBoundary": function(node, filter) {
filter.lowerBoundary = OpenLayers.String.numericIf(
- this.readers.ogc._expression.call(this, node));
+ this.readers.ogc._expression.call(this, node), true);
},
"UpperBoundary": function(node, filter) {
filter.upperBoundary = OpenLayers.String.numericIf(
- this.readers.ogc._expression.call(this, node));
+ this.readers.ogc._expression.call(this, node), true);
},
"Intersects": function(node, obj) {
this.readSpatial(node, obj, OpenLayers.Filter.Spatial.INTERSECTS);
@@ -212,6 +213,13 @@ OpenLayers.Format.Filter.v1 = OpenLayers.Class(OpenLayers.Format.XML, {
"Function": function(node, obj) {
//TODO write decoder for it
return;
+ },
+ "PropertyIsNull": function(node, obj) {
+ var filter = new OpenLayers.Filter.Comparison({
+ type: OpenLayers.Filter.Comparison.IS_NULL
+ });
+ this.readChildNodes(node, filter);
+ obj.filters.push(filter);
}
}
},
@@ -239,6 +247,25 @@ OpenLayers.Format.Filter.v1 = OpenLayers.Class(OpenLayers.Format.XML, {
obj.filters.push(filter);
},
+ /**
+ * APIMethod: encodeLiteral
+ * Generates the string representation of a value for use in
+ * elements. The default encoder writes Date values as ISO 8601
+ * strings.
+ *
+ * Parameters:
+ * value - {Object} Literal value to encode
+ *
+ * Returns:
+ * {String} String representation of the provided value.
+ */
+ encodeLiteral: function(value) {
+ if (value instanceof Date) {
+ value = OpenLayers.Date.toISOString(value);
+ }
+ return value;
+ },
+
/**
* Method: writeOgcExpression
* Limited support for writing OGC expressions. Currently it supports
@@ -252,9 +279,8 @@ OpenLayers.Format.Filter.v1 = OpenLayers.Class(OpenLayers.Format.XML, {
* {DOMElement} Updated node element.
*/
writeOgcExpression: function(value, node) {
- if(value instanceof OpenLayers.Filter.Function){
- var child = this.writeNode("Function", value, node);
- node.appendChild(child);
+ if (value instanceof OpenLayers.Filter.Function){
+ this.writeNode("Function", value, node);
} else {
this.writeNode("Literal", value, node);
}
@@ -274,19 +300,6 @@ OpenLayers.Format.Filter.v1 = OpenLayers.Class(OpenLayers.Format.XML, {
return this.writers.ogc["Filter"].apply(this, [filter]);
},
- /**
- * Method: writeFeatureIdNodes
- *
- * Parameters:
- * filter - {=": "PropertyIsGreaterThanOrEqualTo",
"..": "PropertyIsBetween",
"~": "PropertyIsLike",
+ "NULL": "PropertyIsNull",
"BBOX": "BBOX",
"DWITHIN": "DWITHIN",
"WITHIN": "WITHIN",
"CONTAINS": "CONTAINS",
"INTERSECTS": "INTERSECTS",
- "FID": "FeatureId"
+ "FID": "_featureIds"
},
CLASS_NAME: "OpenLayers.Format.Filter.v1"
diff --git a/dlf/lib/OpenLayers/lib/OpenLayers/Format/Filter/v1_0_0.js b/dlf/lib/OpenLayers/lib/OpenLayers/Format/Filter/v1_0_0.js
index 1a4a066f..52e650e4 100644
--- a/dlf/lib/OpenLayers/lib/OpenLayers/Format/Filter/v1_0_0.js
+++ b/dlf/lib/OpenLayers/lib/OpenLayers/Format/Filter/v1_0_0.js
@@ -1,4 +1,4 @@
-/* Copyright (c) 2006-2012 by OpenLayers Contributors (see authors.txt for
+/* Copyright (c) 2006-2013 by OpenLayers Contributors (see authors.txt for
* full list of contributors). Published under the 2-clause BSD license.
* See license.txt in the OpenLayers distribution or repository for the
* full text of the license. */
diff --git a/dlf/lib/OpenLayers/lib/OpenLayers/Format/Filter/v1_1_0.js b/dlf/lib/OpenLayers/lib/OpenLayers/Format/Filter/v1_1_0.js
index dea957b3..628c4890 100644
--- a/dlf/lib/OpenLayers/lib/OpenLayers/Format/Filter/v1_1_0.js
+++ b/dlf/lib/OpenLayers/lib/OpenLayers/Format/Filter/v1_1_0.js
@@ -1,4 +1,4 @@
-/* Copyright (c) 2006-2012 by OpenLayers Contributors (see authors.txt for
+/* Copyright (c) 2006-2013 by OpenLayers Contributors (see authors.txt for
* full list of contributors). Published under the 2-clause BSD license.
* See license.txt in the OpenLayers distribution or repository for the
* full text of the license. */
diff --git a/dlf/lib/OpenLayers/lib/OpenLayers/Format/GML.js b/dlf/lib/OpenLayers/lib/OpenLayers/Format/GML.js
index eb391809..467f8758 100644
--- a/dlf/lib/OpenLayers/lib/OpenLayers/Format/GML.js
+++ b/dlf/lib/OpenLayers/lib/OpenLayers/Format/GML.js
@@ -1,4 +1,4 @@
-/* Copyright (c) 2006-2012 by OpenLayers Contributors (see authors.txt for
+/* Copyright (c) 2006-2013 by OpenLayers Contributors (see authors.txt for
* full list of contributors). Published under the 2-clause BSD license.
* See license.txt in the OpenLayers distribution or repository for the
* full text of the license. */
@@ -16,7 +16,7 @@
/**
* Class: OpenLayers.Format.GML
- * Read/Wite GML. Create a new instance with the
+ * Read/Write GML. Create a new instance with the
* constructor. Supports the GML simple features profile.
*
* Inherits from:
diff --git a/dlf/lib/OpenLayers/lib/OpenLayers/Format/GML/Base.js b/dlf/lib/OpenLayers/lib/OpenLayers/Format/GML/Base.js
index b7608e35..6c499694 100644
--- a/dlf/lib/OpenLayers/lib/OpenLayers/Format/GML/Base.js
+++ b/dlf/lib/OpenLayers/lib/OpenLayers/Format/GML/Base.js
@@ -1,4 +1,4 @@
-/* Copyright (c) 2006-2012 by OpenLayers Contributors (see authors.txt for
+/* Copyright (c) 2006-2013 by OpenLayers Contributors (see authors.txt for
* full list of contributors). Published under the 2-clause BSD license.
* See license.txt in the OpenLayers distribution or repository for the
* full text of the license. */
@@ -230,7 +230,7 @@ OpenLayers.Format.GML.Base = OpenLayers.Class(OpenLayers.Format.XML, {
}
return OpenLayers.Format.XML.prototype.readNode.apply(this, [node, obj]);
},
-
+
/**
* Property: readers
* Contains public functions, grouped by namespace prefix, that will
@@ -241,6 +241,9 @@ OpenLayers.Format.GML.Base = OpenLayers.Class(OpenLayers.Format.XML, {
*/
readers: {
"gml": {
+ "_inherit": function(node, obj, container) {
+ // To be implemented by version specific parsers
+ },
"featureMember": function(node, obj) {
this.readChildNodes(node, obj);
},
@@ -309,6 +312,7 @@ OpenLayers.Format.GML.Base = OpenLayers.Class(OpenLayers.Format.XML, {
},
"MultiPoint": function(node, container) {
var obj = {components: []};
+ this.readers.gml._inherit.apply(this, [node, obj, container]);
this.readChildNodes(node, obj);
container.components = [
new OpenLayers.Geometry.MultiPoint(obj.components)
@@ -319,6 +323,7 @@ OpenLayers.Format.GML.Base = OpenLayers.Class(OpenLayers.Format.XML, {
},
"LineString": function(node, container) {
var obj = {};
+ this.readers.gml._inherit.apply(this, [node, obj, container]);
this.readChildNodes(node, obj);
if(!container.components) {
container.components = [];
@@ -329,6 +334,7 @@ OpenLayers.Format.GML.Base = OpenLayers.Class(OpenLayers.Format.XML, {
},
"MultiLineString": function(node, container) {
var obj = {components: []};
+ this.readers.gml._inherit.apply(this, [node, obj, container]);
this.readChildNodes(node, obj);
container.components = [
new OpenLayers.Geometry.MultiLineString(obj.components)
@@ -339,6 +345,7 @@ OpenLayers.Format.GML.Base = OpenLayers.Class(OpenLayers.Format.XML, {
},
"Polygon": function(node, container) {
var obj = {outer: null, inner: []};
+ this.readers.gml._inherit.apply(this, [node, obj, container]);
this.readChildNodes(node, obj);
obj.inner.unshift(obj.outer);
if(!container.components) {
@@ -350,6 +357,7 @@ OpenLayers.Format.GML.Base = OpenLayers.Class(OpenLayers.Format.XML, {
},
"LinearRing": function(node, obj) {
var container = {};
+ this.readers.gml._inherit.apply(this, [node, container]);
this.readChildNodes(node, container);
obj.components = [new OpenLayers.Geometry.LinearRing(
container.points
@@ -357,6 +365,7 @@ OpenLayers.Format.GML.Base = OpenLayers.Class(OpenLayers.Format.XML, {
},
"MultiPolygon": function(node, container) {
var obj = {components: []};
+ this.readers.gml._inherit.apply(this, [node, obj, container]);
this.readChildNodes(node, obj);
container.components = [
new OpenLayers.Geometry.MultiPolygon(obj.components)
@@ -367,6 +376,7 @@ OpenLayers.Format.GML.Base = OpenLayers.Class(OpenLayers.Format.XML, {
},
"GeometryCollection": function(node, container) {
var obj = {components: []};
+ this.readers.gml._inherit.apply(this, [node, obj, container]);
this.readChildNodes(node, obj);
container.components = [
new OpenLayers.Geometry.Collection(obj.components)
diff --git a/dlf/lib/OpenLayers/lib/OpenLayers/Format/GML/v2.js b/dlf/lib/OpenLayers/lib/OpenLayers/Format/GML/v2.js
index ad0d7a6e..bd26b999 100644
--- a/dlf/lib/OpenLayers/lib/OpenLayers/Format/GML/v2.js
+++ b/dlf/lib/OpenLayers/lib/OpenLayers/Format/GML/v2.js
@@ -1,4 +1,4 @@
-/* Copyright (c) 2006-2012 by OpenLayers Contributors (see authors.txt for
+/* Copyright (c) 2006-2013 by OpenLayers Contributors (see authors.txt for
* full list of contributors). Published under the 2-clause BSD license.
* See license.txt in the OpenLayers distribution or repository for the
* full text of the license. */
diff --git a/dlf/lib/OpenLayers/lib/OpenLayers/Format/GML/v3.js b/dlf/lib/OpenLayers/lib/OpenLayers/Format/GML/v3.js
index 5be52970..82c7b1e4 100644
--- a/dlf/lib/OpenLayers/lib/OpenLayers/Format/GML/v3.js
+++ b/dlf/lib/OpenLayers/lib/OpenLayers/Format/GML/v3.js
@@ -1,4 +1,4 @@
-/* Copyright (c) 2006-2012 by OpenLayers Contributors (see authors.txt for
+/* Copyright (c) 2006-2013 by OpenLayers Contributors (see authors.txt for
* full list of contributors). Published under the 2-clause BSD license.
* See license.txt in the OpenLayers distribution or repository for the
* full text of the license. */
@@ -90,11 +90,20 @@ OpenLayers.Format.GML.v3 = OpenLayers.Class(OpenLayers.Format.GML.Base, {
*/
readers: {
"gml": OpenLayers.Util.applyDefaults({
+ "_inherit": function(node, obj, container) {
+ // SRSReferenceGroup attributes
+ var dim = parseInt(node.getAttribute("srsDimension"), 10) ||
+ (container && container.srsDimension);
+ if (dim) {
+ obj.srsDimension = dim;
+ }
+ },
"featureMembers": function(node, obj) {
this.readChildNodes(node, obj);
},
"Curve": function(node, container) {
var obj = {points: []};
+ this.readers.gml._inherit.apply(this, [node, obj, container]);
this.readChildNodes(node, obj);
if(!container.components) {
container.components = [];
@@ -135,7 +144,9 @@ OpenLayers.Format.GML.v3 = OpenLayers.Class(OpenLayers.Format.GML.Base, {
this.regExes.trimSpace, ""
);
var coords = str.split(this.regExes.splitSpace);
- var dim = parseInt(node.getAttribute("dimension")) || 2;
+ // The "dimension" attribute is from the GML 3.0.1 spec.
+ var dim = obj.srsDimension ||
+ parseInt(node.getAttribute("srsDimension") || node.getAttribute("dimension"), 10) || 2;
var j, x, y, z;
var numPoints = coords.length / dim;
var points = new Array(numPoints);
@@ -172,6 +183,7 @@ OpenLayers.Format.GML.v3 = OpenLayers.Class(OpenLayers.Format.GML.Base, {
},
"MultiCurve": function(node, container) {
var obj = {components: []};
+ this.readers.gml._inherit.apply(this, [node, obj, container]);
this.readChildNodes(node, obj);
if(obj.components.length > 0) {
container.components = [
@@ -184,6 +196,7 @@ OpenLayers.Format.GML.v3 = OpenLayers.Class(OpenLayers.Format.GML.Base, {
},
"MultiSurface": function(node, container) {
var obj = {components: []};
+ this.readers.gml._inherit.apply(this, [node, obj, container]);
this.readChildNodes(node, obj);
if(obj.components.length > 0) {
container.components = [
diff --git a/dlf/lib/OpenLayers/lib/OpenLayers/Format/GPX.js b/dlf/lib/OpenLayers/lib/OpenLayers/Format/GPX.js
index c8d44789..16a8056b 100644
--- a/dlf/lib/OpenLayers/lib/OpenLayers/Format/GPX.js
+++ b/dlf/lib/OpenLayers/lib/OpenLayers/Format/GPX.js
@@ -1,4 +1,4 @@
-/* Copyright (c) 2006-2012 by OpenLayers Contributors (see authors.txt for
+/* Copyright (c) 2006-2013 by OpenLayers Contributors (see authors.txt for
* full list of contributors). Published under the 2-clause BSD license.
* See license.txt in the OpenLayers distribution or repository for the
* full text of the license. */
@@ -250,11 +250,11 @@ OpenLayers.Format.GPX = OpenLayers.Class(OpenLayers.Format.XML, {
*/
buildMetadataNode: function(metadata) {
var types = ['name', 'desc', 'author'],
- node = this.createElementNSPlus('gpx:metadata');
+ node = this.createElementNS(this.namespaces.gpx, 'metadata');
for (var i=0; i < types.length; i++) {
var type = types[i];
if (metadata[type]) {
- var n = this.createElementNSPlus("gpx:" + type);
+ var n = this.createElementNS(this.namespaces.gpx, type);
n.appendChild(this.createTextNode(metadata[type]));
node.appendChild(n);
}
@@ -284,7 +284,7 @@ OpenLayers.Format.GPX = OpenLayers.Class(OpenLayers.Format.XML, {
this.appendAttributesNode(wpt, feature);
return wpt;
} else {
- var trkNode = this.createElementNSPlus("gpx:trk");
+ var trkNode = this.createElementNS(this.namespaces.gpx, "trk");
this.appendAttributesNode(trkNode, feature);
var trkSegNodes = this.buildTrkSegNode(geometry);
trkSegNodes = OpenLayers.Util.isArray(trkSegNodes) ?
@@ -312,7 +312,7 @@ OpenLayers.Format.GPX = OpenLayers.Class(OpenLayers.Format.XML, {
nodes;
if (geometry.CLASS_NAME == "OpenLayers.Geometry.LineString" ||
geometry.CLASS_NAME == "OpenLayers.Geometry.LinearRing") {
- node = this.createElementNSPlus("gpx:trkseg");
+ node = this.createElementNS(this.namespaces.gpx, "trkseg");
for (i = 0, len=geometry.components.length; i < len; i++) {
point = geometry.components[i];
node.appendChild(this.buildTrkPtNode(point));
@@ -338,7 +338,7 @@ OpenLayers.Format.GPX = OpenLayers.Class(OpenLayers.Format.XML, {
* {DOMElement} A trkpt node
*/
buildTrkPtNode: function(point) {
- var node = this.createElementNSPlus("gpx:trkpt");
+ var node = this.createElementNS(this.namespaces.gpx, "trkpt");
node.setAttribute("lon", point.x);
node.setAttribute("lat", point.y);
return node;
@@ -355,7 +355,7 @@ OpenLayers.Format.GPX = OpenLayers.Class(OpenLayers.Format.XML, {
* {DOMElement} A wpt node
*/
buildWptNode: function(geometry) {
- var node = this.createElementNSPlus("gpx:wpt");
+ var node = this.createElementNS(this.namespaces.gpx, "wpt");
node.setAttribute("lon", geometry.x);
node.setAttribute("lat", geometry.y);
return node;
@@ -370,11 +370,11 @@ OpenLayers.Format.GPX = OpenLayers.Class(OpenLayers.Format.XML, {
* feature - {}
*/
appendAttributesNode: function(node, feature) {
- var name = this.createElementNSPlus('gpx:name');
+ var name = this.createElementNS(this.namespaces.gpx, 'name');
name.appendChild(this.createTextNode(
feature.attributes.name || feature.id));
node.appendChild(name);
- var desc = this.createElementNSPlus('gpx:desc');
+ var desc = this.createElementNS(this.namespaces.gpx, 'desc');
desc.appendChild(this.createTextNode(
feature.attributes.description || this.defaultDesc));
node.appendChild(desc);
diff --git a/dlf/lib/OpenLayers/lib/OpenLayers/Format/GeoJSON.js b/dlf/lib/OpenLayers/lib/OpenLayers/Format/GeoJSON.js
index 30faeb91..0e02377b 100644
--- a/dlf/lib/OpenLayers/lib/OpenLayers/Format/GeoJSON.js
+++ b/dlf/lib/OpenLayers/lib/OpenLayers/Format/GeoJSON.js
@@ -1,4 +1,4 @@
-/* Copyright (c) 2006-2012 by OpenLayers Contributors (see authors.txt for
+/* Copyright (c) 2006-2013 by OpenLayers Contributors (see authors.txt for
* full list of contributors). Published under the 2-clause BSD license.
* See license.txt in the OpenLayers distribution or repository for the
* full text of the license. */
diff --git a/dlf/lib/OpenLayers/lib/OpenLayers/Format/GeoRSS.js b/dlf/lib/OpenLayers/lib/OpenLayers/Format/GeoRSS.js
index c41c6cc9..cbbb4d89 100644
--- a/dlf/lib/OpenLayers/lib/OpenLayers/Format/GeoRSS.js
+++ b/dlf/lib/OpenLayers/lib/OpenLayers/Format/GeoRSS.js
@@ -1,4 +1,4 @@
-/* Copyright (c) 2006-2012 by OpenLayers Contributors (see authors.txt for
+/* Copyright (c) 2006-2013 by OpenLayers Contributors (see authors.txt for
* full list of contributors). Published under the 2-clause BSD license.
* See license.txt in the OpenLayers distribution or repository for the
* full text of the license. */
diff --git a/dlf/lib/OpenLayers/lib/OpenLayers/Format/JSON.js b/dlf/lib/OpenLayers/lib/OpenLayers/Format/JSON.js
index a99478fb..5b25e6af 100644
--- a/dlf/lib/OpenLayers/lib/OpenLayers/Format/JSON.js
+++ b/dlf/lib/OpenLayers/lib/OpenLayers/Format/JSON.js
@@ -1,4 +1,4 @@
-/* Copyright (c) 2006-2012 by OpenLayers Contributors (see authors.txt for
+/* Copyright (c) 2006-2013 by OpenLayers Contributors (see authors.txt for
* full list of contributors). Published under the 2-clause BSD license.
* See license.txt in the OpenLayers distribution or repository for the
* full text of the license. */
diff --git a/dlf/lib/OpenLayers/lib/OpenLayers/Format/KML.js b/dlf/lib/OpenLayers/lib/OpenLayers/Format/KML.js
index 8553fd19..e10bce7b 100644
--- a/dlf/lib/OpenLayers/lib/OpenLayers/Format/KML.js
+++ b/dlf/lib/OpenLayers/lib/OpenLayers/Format/KML.js
@@ -1,4 +1,4 @@
-/* Copyright (c) 2006-2012 by OpenLayers Contributors (see authors.txt for
+/* Copyright (c) 2006-2013 by OpenLayers Contributors (see authors.txt for
* full list of contributors). Published under the 2-clause BSD license.
* See license.txt in the OpenLayers distribution or repository for the
* full text of the license. */
@@ -311,8 +311,7 @@ OpenLayers.Format.KML = OpenLayers.Class(OpenLayers.Format.XML, {
/**
* Method: parseStyles
- * Looks for