[OpenLayers-Commits] r11141 - in sandbox/elemoine/draw-feature: . doc examples lib lib/OpenLayers lib/OpenLayers/Control lib/OpenLayers/Format lib/OpenLayers/Layer lib/OpenLayers/Layer/Google tests tests/Format/WMTSCapabilities tests/Layer/Google theme/default

commits-20090109 at openlayers.org commits-20090109 at openlayers.org
Thu Feb 17 18:02:32 EST 2011


Author: erilem
Date: 2011-02-17 15:02:31 -0800 (Thu, 17 Feb 2011)
New Revision: 11141

Added:
   sandbox/elemoine/draw-feature/examples/mobile-jq.html
   sandbox/elemoine/draw-feature/examples/mobile-sencha.html
   sandbox/elemoine/draw-feature/examples/mobile.js
Modified:
   sandbox/elemoine/draw-feature/
   sandbox/elemoine/draw-feature/doc/authors.txt
   sandbox/elemoine/draw-feature/lib/OpenLayers.js
   sandbox/elemoine/draw-feature/lib/OpenLayers/Control/PanZoom.js
   sandbox/elemoine/draw-feature/lib/OpenLayers/Control/PanZoomBar.js
   sandbox/elemoine/draw-feature/lib/OpenLayers/Format/WMTSCapabilities.js
   sandbox/elemoine/draw-feature/lib/OpenLayers/Layer/Google/v3.js
   sandbox/elemoine/draw-feature/lib/OpenLayers/Layer/HTTPRequest.js
   sandbox/elemoine/draw-feature/lib/OpenLayers/Layer/MultiMap.js
   sandbox/elemoine/draw-feature/lib/OpenLayers/Layer/SphericalMercator.js
   sandbox/elemoine/draw-feature/lib/OpenLayers/Layer/XYZ.js
   sandbox/elemoine/draw-feature/lib/OpenLayers/Request.js
   sandbox/elemoine/draw-feature/tests/Format/WMTSCapabilities/v1_0_0.html
   sandbox/elemoine/draw-feature/tests/Layer/Google/v3.html
   sandbox/elemoine/draw-feature/tests/Request.html
   sandbox/elemoine/draw-feature/tests/Util.html
   sandbox/elemoine/draw-feature/tests/list-tests.html
   sandbox/elemoine/draw-feature/theme/default/style.css
Log:
svn merge -r 11093:HEAD http://svn.openlayers.org/trunk/openlayers/ .


Property changes on: sandbox/elemoine/draw-feature
___________________________________________________________________
Modified: svn:mergeinfo
   - /sandbox/roberthl/openlayers:9745-9748
/trunk/openlayers:11027-11037,11040-11091
   + /sandbox/roberthl/openlayers:9745-9748
/trunk/openlayers:11027-11037,11040-11091,11094-11140

Modified: sandbox/elemoine/draw-feature/doc/authors.txt
===================================================================
--- sandbox/elemoine/draw-feature/doc/authors.txt	2011-02-17 22:21:50 UTC (rev 11140)
+++ sandbox/elemoine/draw-feature/doc/authors.txt	2011-02-17 23:02:31 UTC (rev 11141)
@@ -15,6 +15,7 @@
 John Frank
 Sean Gilles
 Pierre Giraud
+Ivan Grcic
 Andreas Hocevar
 Ian Johnson
 Eric Lemoine

Copied: sandbox/elemoine/draw-feature/examples/mobile-jq.html (from rev 11140, trunk/openlayers/examples/mobile-jq.html)
===================================================================
--- sandbox/elemoine/draw-feature/examples/mobile-jq.html	                        (rev 0)
+++ sandbox/elemoine/draw-feature/examples/mobile-jq.html	2011-02-17 23:02:31 UTC (rev 11141)
@@ -0,0 +1,132 @@
+<!DOCTYPE html>
+<html>
+    <head>
+        <title>OpenLayers with jQuery Mobile</title>
+        <meta name="viewport" content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0;">
+        <meta name="apple-mobile-web-app-capable" content="yes">
+        <link rel="stylesheet" href="http://code.jquery.com/mobile/1.0a3/jquery.mobile-1.0a3.min.css">
+        <script src="http://code.jquery.com/jquery-1.5.min.js"></script>
+        <script src="http://code.jquery.com/mobile/1.0a3/jquery.mobile-1.0a3.min.js"></script>
+        <link rel="stylesheet" href="../theme/default/style.css" type="text/css">
+        <script src="../lib/OpenLayers.js"></script>
+        <script src="mobile.js"></script>
+        <style>
+            html {
+                height: 100%;
+            }
+            body {
+                margin: 0;
+                padding: 0;
+                height: 100%;
+            }
+            .ui-content {
+                padding: 0;
+            }
+            .ui-footer, .ui-header {
+                text-align: center;
+                padding: 5px 0;
+            }
+            #map {
+                width: 100%;
+                height: 100%;
+            }
+            .olControlAttribution {
+                font-size: 10px;
+                bottom: 5px;
+                right: 5px;
+            }
+        </style>
+        <script>
+            $(document).ready(function() {
+                // fix height of content to allow for header & footer
+                function fixContentHeight() {
+                    var header = $("div[data-role='header']:visible");
+                    var footer = $("div[data-role='footer']:visible");
+                    var content = $("div[data-role='content']:visible:visible");
+                    var viewHeight = $(window).height();
+
+                    var contentHeight = viewHeight - header.outerHeight() - footer.outerHeight();
+                    if ((content.outerHeight() + header.outerHeight() + footer.outerHeight()) !== viewHeight) {
+                        contentHeight -= (content.outerHeight() - content.height());
+                        content.height(contentHeight);
+                    }
+                    if (window.map) {
+                        map.updateSize();
+                    } else {
+                        // initialize map
+                        init();
+                    }
+                }
+                $(window).bind("orientationchange resize pageshow", fixContentHeight);
+                fixContentHeight();
+                
+                // add behavior to navigation buttons
+                $("#west").click(function() {
+                    pan(-0.25, 0);
+                });
+                $("#north").click(function() {
+                    pan(0, -0.25);
+                });
+                $("#south").click(function() {
+                    pan(0, 0.25);
+                });
+                $("#east").click(function() {
+                    pan(0.25, 0);
+                });
+                
+                // add behavior to drawing controls
+                function deactivateControls() {
+                    $.each(map.getControlsByClass(/DrawFeature/), function(index, control) {
+                        control.deactivate();
+                    });
+                    map.getControlsBy("id", "mod-control")[0].deactivate();
+                }
+                $("#nav, #point, #line, #poly, #mod").change(function(event) {
+                    deactivateControls();
+                    // jquery mobile bug regarding change makes us go through all inputs
+                    // https://github.com/jquery/jquery-mobile/issues/issue/1088
+                    var val = $("input:radio[name=controls]:checked").val();
+                    if (val !== "nav") {
+                        map.getControlsBy("id", val + "-control")[0].activate();
+                    }
+                });
+                
+                $("#nav").click();
+                $("#nav").click(); // jquery mobile bug forces 2 calls to refresh radio ui
+                
+            });
+
+        </script>
+    </head>
+    <body>
+        <div data-role="page">
+            <div data-role="header">
+                <input id="west" type="button" data-icon="arrow-l" value="west">
+                <input id="north" type="button" data-icon="arrow-u" value="north">
+                <input id="south" type="button" data-icon="arrow-d" value="south">
+                <input id="east" type="button" data-icon="arrow-r" value="east">
+            </div>
+
+            <div data-role="content">
+                <div id="map"></div>
+            </div>
+
+            <div data-role="footer">
+                <form id="controls">
+                    <fieldset data-role="controlgroup" data-type="horizontal" data-role="fieldcontain">
+                        <input id="nav" type="radio" name="controls" value="nav" checked="checked">
+                        <label for="nav">navigate</label>
+                        <input id="point" type="radio" name="controls" value="point">
+                        <label for="point">point</label>
+                        <input id="line" type="radio" name="controls" value="line">
+                        <label for="line">line</label>
+                        <input id="poly" type="radio" name="controls" value="poly">
+                        <label for="poly">poly</label>
+                        <input id="mod" type="radio" name="controls" value="mod">
+                        <label for="mod">modify</label>
+                    </fieldset>
+                </form>
+            </div>
+        </div>
+    </body>
+</html>

Copied: sandbox/elemoine/draw-feature/examples/mobile-sencha.html (from rev 11140, trunk/openlayers/examples/mobile-sencha.html)
===================================================================
--- sandbox/elemoine/draw-feature/examples/mobile-sencha.html	                        (rev 0)
+++ sandbox/elemoine/draw-feature/examples/mobile-sencha.html	2011-02-17 23:02:31 UTC (rev 11141)
@@ -0,0 +1,123 @@
+<!DOCTYPE html>
+<html>
+    <head>
+        <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+        <title>OpenLayers with Sencha Touch</title>
+        <script src="../lib/OpenLayers.js"></script>
+        <link rel="stylesheet" href="../theme/default/style.css" type="text/css">
+        <link rel="stylesheet" href="http://dev.sencha.com/deploy/touch/resources/css/sencha-touch.css">
+        <script src="http://dev.sencha.com/deploy/touch/sencha-touch.js"></script>
+        <script src="mobile.js"></script>
+        <style>
+            #map {
+                width: 100%;
+                height: 100%;
+            }
+            .olControlAttribution {
+                font-size: 10px;
+                bottom: 5px;
+                right: 5px;
+            }
+        </style>
+        <script>
+        
+        new Ext.Application({
+            name: "ol",
+            launch: function() {
+                this.viewport = new Ext.Panel({
+                    fullscreen: true,
+                    dockedItems: [{
+                        dock: "top",
+                        xtype: "toolbar",
+                        ui: "light",
+                        layout: {
+                            pack: "center"
+                        },
+                        defaults: {
+                            ui: "plain",
+                            iconMask: true
+                        },
+                        items: [{
+                            iconCls: "arrow_left",
+                            handler: function() {
+                                pan(-0.25, 0);
+                            }
+                        }, {
+                            iconCls: "arrow_up",
+                            handler: function() {
+                                pan(0, -0.25);
+                            }
+                        }, {
+                            iconCls: "arrow_down",
+                            handler: function() {
+                                pan(0, 0.25);
+                            }
+                        }, {
+                            iconCls: "arrow_right",
+                            handler: function() {
+                                pan(0.25, 0);
+                            }
+                        }]
+                    }, {
+                        dock: "bottom",
+                        xtype: "toolbar",
+                        ui: "light",
+                        layout: {
+                            pack: "center"
+                        },
+                        items: [{
+                            xtype: "segmentedbutton",
+                            items: [{
+                                text: "navigate",
+                                pressed: true
+                            }, {
+                                text: "point",
+                                id: "point"
+                            }, {
+                                text: "line",
+                                id: "line"
+                            }, {
+                                text: "poly",
+                                id: "poly"
+                            }, {
+                                text: "modify",
+                                id: "mod"
+                            }],
+                            listeners: {
+                                toggle: function(container, button, pressed) {
+                                    Ext.each(map.getControlsByClass(/DrawFeature/), function(control) {
+                                        control.deactivate();
+                                    });
+                                    map.getControlsBy("id", "mod-control")[0].deactivate();
+                                    if (pressed) {
+                                        var id = button.id + "-control";
+                                        var control = map.getControlsBy("id", id)[0];
+                                        if (control) {
+                                            control.activate();
+                                        }
+                                    }
+                                }
+                            }
+                        }]
+                    }],
+                    items: [{
+                        xtype: "component",
+                        scroll: false,
+                        monitorResize: true,
+                        id: "map",
+                        listeners: {
+                            render: init,
+                            resize: function() {
+                                if (window.map) {
+                                    map.updateSize();
+                                }
+                            }
+                        }
+                    }]
+                });
+            }
+        });
+        </script>
+    </head>
+    <body></body>
+</html>

Copied: sandbox/elemoine/draw-feature/examples/mobile.js (from rev 11140, trunk/openlayers/examples/mobile.js)
===================================================================
--- sandbox/elemoine/draw-feature/examples/mobile.js	                        (rev 0)
+++ sandbox/elemoine/draw-feature/examples/mobile.js	2011-02-17 23:02:31 UTC (rev 11141)
@@ -0,0 +1,82 @@
+
+// initialize map when page ready
+var map;
+function init() {
+    var gg = new OpenLayers.Projection("EPSG:4326");
+    var sm = new OpenLayers.Projection("EPSG:900913");
+    
+    // layer for drawn features
+    var vector = new OpenLayers.Layer.Vector();
+
+    // create map
+    map = new OpenLayers.Map({
+        div: "map",
+        projection: sm,
+        units: "m",
+        numZoomLevels: 18,
+        maxResolution: 156543.0339,
+        maxExtent: new OpenLayers.Bounds(
+            -20037508.34, -20037508.34, 20037508.34, 20037508.34
+        ),
+        controls: [
+            new OpenLayers.Control.Navigation(),
+            new OpenLayers.Control.Attribution(),
+            new OpenLayers.Control.DrawFeature(
+                vector, OpenLayers.Handler.Point, {id: "point-control"}
+            ),
+            new OpenLayers.Control.DrawFeature(
+                vector, OpenLayers.Handler.Path, {id: "line-control"}
+            ),
+            new OpenLayers.Control.DrawFeature(
+                vector, OpenLayers.Handler.Polygon, {id: "poly-control"}
+            ),
+            new OpenLayers.Control.ModifyFeature(vector, {id: "mod-control"}),
+        ],
+        layers: [new OpenLayers.Layer.OSM(), vector],
+        center: new OpenLayers.LonLat(0, 0),
+        zoom: 1
+    });
+
+    // attempt to get position
+    if (window.navigator && navigator.geolocation) {
+        navigator.geolocation.getCurrentPosition(
+            updatePosition,
+            function failure(error) {
+                updateLog(error.message);
+            },
+            {
+                enableHighAccuracy: true
+            }
+        );
+    }
+
+};
+
+// get position if possible
+var position;
+function updatePosition(pos) {
+    position = pos;
+    var lon =  position.coords.longitude;
+    var lat = position.coords.latitude;
+    updateLog("position: lon " + lon + ", lat " + lat);
+    map.setCenter(
+        new OpenLayers.LonLat(lon, lat).transform(gg, sm)
+    );
+}
+
+// allow simple logging
+var log = [];
+function updateLog(message) {
+    log.push(message);
+    if (window.console) {
+        console.log(message);
+    }
+}
+function clearLog() {
+    log.length = 0;
+}    
+
+function pan(fx, fy) {
+    var size = map.getSize();
+    map.pan(size.w * fx, size.h * fy);
+}

Modified: sandbox/elemoine/draw-feature/lib/OpenLayers/Control/PanZoom.js
===================================================================
--- sandbox/elemoine/draw-feature/lib/OpenLayers/Control/PanZoom.js	2011-02-17 22:21:50 UTC (rev 11140)
+++ sandbox/elemoine/draw-feature/lib/OpenLayers/Control/PanZoom.js	2011-02-17 23:02:31 UTC (rev 11141)
@@ -123,7 +123,7 @@
         var btn = OpenLayers.Util.createAlphaImageDiv(
                                     this.id + "_" + id, 
                                     xy, sz, imgLocation, "absolute");
-
+        btn.style.cursor = "pointer";
         //we want to add the outer div
         this.div.appendChild(btn);
 

Modified: sandbox/elemoine/draw-feature/lib/OpenLayers/Control/PanZoomBar.js
===================================================================
--- sandbox/elemoine/draw-feature/lib/OpenLayers/Control/PanZoomBar.js	2011-02-17 22:21:50 UTC (rev 11140)
+++ sandbox/elemoine/draw-feature/lib/OpenLayers/Control/PanZoomBar.js	2011-02-17 23:02:31 UTC (rev 11141)
@@ -180,6 +180,7 @@
                        new OpenLayers.Size(20,9), 
                        imgLocation+"slider.png",
                        "absolute");
+        slider.style.cursor = "move";
         this.slider = slider;
         
         this.sliderEvents = new OpenLayers.Events(this, slider, null, true,
@@ -212,7 +213,7 @@
                         sz,
                         imgLocation+"zoombar.png");
         }
-        
+        div.style.cursor = "pointer";
         this.zoombarDiv = div;
         
         this.divEvents = new OpenLayers.Events(this, div, null, true, 

Modified: sandbox/elemoine/draw-feature/lib/OpenLayers/Format/WMTSCapabilities.js
===================================================================
--- sandbox/elemoine/draw-feature/lib/OpenLayers/Format/WMTSCapabilities.js	2011-02-17 22:21:50 UTC (rev 11140)
+++ sandbox/elemoine/draw-feature/lib/OpenLayers/Format/WMTSCapabilities.js	2011-02-17 23:02:31 UTC (rev 11141)
@@ -149,7 +149,7 @@
                 OpenLayers.Util.applyDefaults(config, {
                     url: capabilities.operationsMetadata.GetTile.dcp.http.get,
                     name: layerDef.title,
-                    style: style,
+                    style: style.identifier,
                     matrixIds: matrixSet.matrixIds
                 })
             );

Modified: sandbox/elemoine/draw-feature/lib/OpenLayers/Layer/Google/v3.js
===================================================================
--- sandbox/elemoine/draw-feature/lib/OpenLayers/Layer/Google/v3.js	2011-02-17 22:21:50 UTC (rev 11140)
+++ sandbox/elemoine/draw-feature/lib/OpenLayers/Layer/Google/v3.js	2011-02-17 23:02:31 UTC (rev 11141)
@@ -26,13 +26,13 @@
      * (code)
      * {
      *     maxExtent: new OpenLayers.Bounds(
-     *         -128 * 156543.0339,
-     *         -128 * 156543.0339,
-     *         128 * 156543.0339,
-     *         128 * 156543.0339
+     *         -128 * 156543.03390625,
+     *         -128 * 156543.03390625,
+     *         128 * 156543.03390625,
+     *         128 * 156543.03390625
      *     ),
      *     sphericalMercator: true,
-     *     maxResolution: 156543.0339,
+     *     maxResolution: 156543.03390625,
      *     units: "m",
      *     projection: "EPSG:900913"
      * }
@@ -40,13 +40,13 @@
      */
     DEFAULTS: {
         maxExtent: new OpenLayers.Bounds(
-            -128 * 156543.0339,
-            -128 * 156543.0339,
-            128 * 156543.0339,
-            128 * 156543.0339
+            -128 * 156543.03390625,
+            -128 * 156543.03390625,
+            128 * 156543.03390625,
+            128 * 156543.03390625
         ),
         sphericalMercator: true,
-        maxResolution: 156543.0339,
+        maxResolution: 156543.03390625,
         units: "m",
         projection: "EPSG:900913"
     },

Modified: sandbox/elemoine/draw-feature/lib/OpenLayers/Layer/HTTPRequest.js
===================================================================
--- sandbox/elemoine/draw-feature/lib/OpenLayers/Layer/HTTPRequest.js	2011-02-17 22:21:50 UTC (rev 11140)
+++ sandbox/elemoine/draw-feature/lib/OpenLayers/Layer/HTTPRequest.js	2011-02-17 23:02:31 UTC (rev 11141)
@@ -38,7 +38,7 @@
     
     /** 
      * APIProperty: reproject
-     * *Deprecated*. See http://trac.openlayers.org/wiki/SpatialMercator
+     * *Deprecated*. See http://docs.openlayers.org/library/spherical_mercator.html
      * for information on the replacement for this functionality. 
      * {Boolean} Whether layer should reproject itself based on base layer 
      *           locations. This allows reprojection onto commercial layers. 

Modified: sandbox/elemoine/draw-feature/lib/OpenLayers/Layer/MultiMap.js
===================================================================
--- sandbox/elemoine/draw-feature/lib/OpenLayers/Layer/MultiMap.js	2011-02-17 22:21:50 UTC (rev 11140)
+++ sandbox/elemoine/draw-feature/lib/OpenLayers/Layer/MultiMap.js	2011-02-17 23:02:31 UTC (rev 11141)
@@ -13,6 +13,7 @@
  * Class: OpenLayers.Layer.MultiMap
  * Note that MultiMap does not fully support the sphericalMercator
  * option. See Ticket #953 for more details.
+ * *Deprecated*.  Use OpenLayers.Layer.Bing instead. See #3063
  * 
  * Inherits from:
  *  - <OpenLayers.Layer.EventPane>

Modified: sandbox/elemoine/draw-feature/lib/OpenLayers/Layer/SphericalMercator.js
===================================================================
--- sandbox/elemoine/draw-feature/lib/OpenLayers/Layer/SphericalMercator.js	2011-02-17 22:21:50 UTC (rev 11140)
+++ sandbox/elemoine/draw-feature/lib/OpenLayers/Layer/SphericalMercator.js	2011-02-17 23:02:31 UTC (rev 11141)
@@ -95,7 +95,7 @@
     initMercatorParameters: function() {
         // set up properties for Mercator - assume EPSG:900913
         this.RESOLUTIONS = [];
-        var maxResolution = 156543.0339;
+        var maxResolution = 156543.03390625;
         for(var zoom=0; zoom<=this.MAX_ZOOM_LEVEL; ++zoom) {
             this.RESOLUTIONS[zoom] = maxResolution / Math.pow(2, zoom);
         }

Modified: sandbox/elemoine/draw-feature/lib/OpenLayers/Layer/XYZ.js
===================================================================
--- sandbox/elemoine/draw-feature/lib/OpenLayers/Layer/XYZ.js	2011-02-17 22:21:50 UTC (rev 11140)
+++ sandbox/elemoine/draw-feature/lib/OpenLayers/Layer/XYZ.js	2011-02-17 23:02:31 UTC (rev 11141)
@@ -65,12 +65,12 @@
         if (options && options.sphericalMercator || this.sphericalMercator) {
             options = OpenLayers.Util.extend({
                 maxExtent: new OpenLayers.Bounds(
-                    -128 * 156543.0339,
-                    -128 * 156543.0339,
-                    128 * 156543.0339,
-                    128 * 156543.0339
+                    -128 * 156543.03390625,
+                    -128 * 156543.03390625,
+                    128 * 156543.03390625,
+                    128 * 156543.03390625
                 ),
-                maxResolution: 156543.0339,
+                maxResolution: 156543.03390625,
                 numZoomLevels: 19,
                 units: "m",
                 projection: "EPSG:900913"

Modified: sandbox/elemoine/draw-feature/lib/OpenLayers/Request.js
===================================================================
--- sandbox/elemoine/draw-feature/lib/OpenLayers/Request.js	2011-02-17 22:21:50 UTC (rev 11140)
+++ sandbox/elemoine/draw-feature/lib/OpenLayers/Request.js	2011-02-17 23:02:31 UTC (rev 11141)
@@ -125,14 +125,8 @@
 
         // create request, open, and set headers
         var request = new OpenLayers.Request.XMLHttpRequest();
-        var url = config.url;
-        if(config.params) {
-            var paramString = OpenLayers.Util.getParameterString(config.params);
-            if(paramString.length > 0) {
-                var separator = (url.indexOf('?') > -1) ? '&' : '?';
-                url += separator + paramString;
-            }
-        }
+        var url = OpenLayers.Util.urlAppend(config.url, 
+            OpenLayers.Util.getParameterString(config.params || {}));
         var sameOrigin = !(url.indexOf("http") == 0);
         var urlParts = !sameOrigin && url.match(this.URL_SPLIT_REGEX);
         if (urlParts) {

Modified: sandbox/elemoine/draw-feature/lib/OpenLayers.js
===================================================================
--- sandbox/elemoine/draw-feature/lib/OpenLayers.js	2011-02-17 22:21:50 UTC (rev 11140)
+++ sandbox/elemoine/draw-feature/lib/OpenLayers.js	2011-02-17 23:02:31 UTC (rev 11141)
@@ -29,7 +29,28 @@
      * Relative path of this script.
      */
     var scriptName = (!singleFile) ? "lib/OpenLayers.js" : "OpenLayers.js";
-    
+
+    /*
+     * If window.OpenLayers isn't set when this script (OpenLayers.js) is
+     * evaluated (and if singleFile is false) then this script will load
+     * *all* OpenLayers scripts. If window.OpenLayers is set to an array
+     * then this script will attempt to load scripts for each string of
+     * the array, using the string as the src of the script.
+     *
+     * Example:
+     * (code)
+     *     <script type="text/javascript">
+     *         window.OpenLayers = [
+     *             "OpenLayers/Util.js",
+     *             "OpenLayers/BaseTypes.js"
+     *         ];
+     *     </script>
+     *     <script type="text/javascript" src="../lib/OpenLayers.js"></script>
+     * (end)
+     * In this example OpenLayers.js will load Util.js and BaseTypes.js only.
+     */
+    var jsFiles = window.OpenLayers;
+
     /**
      * Namespace: OpenLayers
      * The OpenLayers object provides a namespace for all things OpenLayers
@@ -60,6 +81,7 @@
             return (function() { return l; });
         })()
     };
+
     /**
      * OpenLayers.singleFile is a flag indicating this file is being included
      * in a Single File Library build of the OpenLayers Library.
@@ -71,260 +93,264 @@
      * OpenLayers library code as it will be appended at the end of this file.
      */
     if(!singleFile) {
-        var jsfiles = new Array(
-            "OpenLayers/BaseTypes/Class.js",
-            "OpenLayers/Util.js",
-            "OpenLayers/BaseTypes.js",
-            "OpenLayers/BaseTypes/Bounds.js",
-            "OpenLayers/BaseTypes/Element.js",
-            "OpenLayers/BaseTypes/LonLat.js",
-            "OpenLayers/BaseTypes/Pixel.js",
-            "OpenLayers/BaseTypes/Size.js",
-            "OpenLayers/Console.js",
-            "OpenLayers/Tween.js",
-            "Rico/Corner.js",
-            "Rico/Color.js",
-            "OpenLayers/Ajax.js",
-            "OpenLayers/Events.js",
-            "OpenLayers/Request.js",
-            "OpenLayers/Request/XMLHttpRequest.js",
-            "OpenLayers/Projection.js",
-            "OpenLayers/Map.js",
-            "OpenLayers/Layer.js",
-            "OpenLayers/Icon.js",
-            "OpenLayers/Marker.js",
-            "OpenLayers/Marker/Box.js",
-            "OpenLayers/Popup.js",
-            "OpenLayers/Tile.js",
-            "OpenLayers/Tile/Image.js",
-            "OpenLayers/Tile/Image/IFrame.js",
-            "OpenLayers/Tile/WFS.js",
-            "OpenLayers/Layer/Image.js",
-            "OpenLayers/Layer/SphericalMercator.js",
-            "OpenLayers/Layer/EventPane.js",
-            "OpenLayers/Layer/FixedZoomLevels.js",
-            "OpenLayers/Layer/Google.js",
-            "OpenLayers/Layer/Google/v3.js",
-            "OpenLayers/Layer/VirtualEarth.js",
-            "OpenLayers/Layer/Yahoo.js",
-            "OpenLayers/Layer/HTTPRequest.js",
-            "OpenLayers/Layer/Grid.js",
-            "OpenLayers/Layer/MapGuide.js",
-            "OpenLayers/Layer/MapServer.js",
-            "OpenLayers/Layer/MapServer/Untiled.js",
-            "OpenLayers/Layer/KaMap.js",
-            "OpenLayers/Layer/KaMapCache.js",
-            "OpenLayers/Layer/MultiMap.js",
-            "OpenLayers/Layer/Markers.js",
-            "OpenLayers/Layer/Text.js",
-            "OpenLayers/Layer/WorldWind.js",
-            "OpenLayers/Layer/ArcGIS93Rest.js",
-            "OpenLayers/Layer/WMS.js",
-            "OpenLayers/Layer/WMS/Untiled.js",
-            "OpenLayers/Layer/WMS/Post.js",
-            "OpenLayers/Layer/WMTS.js",
-            "OpenLayers/Layer/ArcIMS.js",
-            "OpenLayers/Layer/GeoRSS.js",
-            "OpenLayers/Layer/Boxes.js",
-            "OpenLayers/Layer/XYZ.js",
-            "OpenLayers/Layer/Bing.js",
-            "OpenLayers/Layer/TMS.js",
-            "OpenLayers/Layer/TileCache.js",
-            "OpenLayers/Layer/Zoomify.js",
-            "OpenLayers/Popup/Anchored.js",
-            "OpenLayers/Popup/AnchoredBubble.js",
-            "OpenLayers/Popup/Framed.js",
-            "OpenLayers/Popup/FramedCloud.js",
-            "OpenLayers/Feature.js",
-            "OpenLayers/Feature/Vector.js",
-            "OpenLayers/Feature/WFS.js",
-            "OpenLayers/Handler.js",
-            "OpenLayers/Handler/Click.js",
-            "OpenLayers/Handler/Hover.js",
-            "OpenLayers/Handler/Point.js",
-            "OpenLayers/Handler/Path.js",
-            "OpenLayers/Handler/Polygon.js",
-            "OpenLayers/Handler/Feature.js",
-            "OpenLayers/Handler/Drag.js",
-            "OpenLayers/Handler/RegularPolygon.js",
-            "OpenLayers/Handler/Box.js",
-            "OpenLayers/Handler/MouseWheel.js",
-            "OpenLayers/Handler/Keyboard.js",
-            "OpenLayers/Control.js",
-            "OpenLayers/Control/Attribution.js",
-            "OpenLayers/Control/Button.js",
-            "OpenLayers/Control/ZoomBox.js",
-            "OpenLayers/Control/ZoomToMaxExtent.js",
-            "OpenLayers/Control/DragPan.js",
-            "OpenLayers/Control/Navigation.js",
-            "OpenLayers/Control/MouseDefaults.js",
-            "OpenLayers/Control/MousePosition.js",
-            "OpenLayers/Control/OverviewMap.js",
-            "OpenLayers/Control/KeyboardDefaults.js",
-            "OpenLayers/Control/PanZoom.js",
-            "OpenLayers/Control/PanZoomBar.js",
-            "OpenLayers/Control/ArgParser.js",
-            "OpenLayers/Control/Permalink.js",
-            "OpenLayers/Control/Scale.js",
-            "OpenLayers/Control/ScaleLine.js",
-            "OpenLayers/Control/Snapping.js",
-            "OpenLayers/Control/Split.js",
-            "OpenLayers/Control/LayerSwitcher.js",
-            "OpenLayers/Control/DrawFeature.js",
-            "OpenLayers/Control/DragFeature.js",
-            "OpenLayers/Control/ModifyFeature.js",
-            "OpenLayers/Control/Panel.js",
-            "OpenLayers/Control/SelectFeature.js",
-            "OpenLayers/Control/NavigationHistory.js",
-            "OpenLayers/Control/Measure.js",
-            "OpenLayers/Control/WMSGetFeatureInfo.js",
-            "OpenLayers/Control/WMTSGetFeatureInfo.js",
-            "OpenLayers/Control/Graticule.js",
-            "OpenLayers/Control/TransformFeature.js",
-            "OpenLayers/Control/SLDSelect.js",
-            "OpenLayers/Geometry.js",
-            "OpenLayers/Geometry/Rectangle.js",
-            "OpenLayers/Geometry/Collection.js",
-            "OpenLayers/Geometry/Point.js",
-            "OpenLayers/Geometry/MultiPoint.js",
-            "OpenLayers/Geometry/Curve.js",
-            "OpenLayers/Geometry/LineString.js",
-            "OpenLayers/Geometry/LinearRing.js",        
-            "OpenLayers/Geometry/Polygon.js",
-            "OpenLayers/Geometry/MultiLineString.js",
-            "OpenLayers/Geometry/MultiPolygon.js",
-            "OpenLayers/Geometry/Surface.js",
-            "OpenLayers/Renderer.js",
-            "OpenLayers/Renderer/Elements.js",
-            "OpenLayers/Renderer/SVG.js",
-            "OpenLayers/Renderer/Canvas.js",
-            "OpenLayers/Renderer/VML.js",
-            "OpenLayers/Layer/Vector.js",
-            "OpenLayers/Layer/Vector/RootContainer.js",
-            "OpenLayers/Strategy.js",
-            "OpenLayers/Strategy/Filter.js",
-            "OpenLayers/Strategy/Fixed.js",
-            "OpenLayers/Strategy/Cluster.js",
-            "OpenLayers/Strategy/Paging.js",
-            "OpenLayers/Strategy/BBOX.js",
-            "OpenLayers/Strategy/Save.js",
-            "OpenLayers/Strategy/Refresh.js",
-            "OpenLayers/Filter.js",
-            "OpenLayers/Filter/FeatureId.js",
-            "OpenLayers/Filter/Logical.js",
-            "OpenLayers/Filter/Comparison.js",
-            "OpenLayers/Filter/Spatial.js",
-            "OpenLayers/Protocol.js",
-            "OpenLayers/Protocol/HTTP.js",
-            "OpenLayers/Protocol/SQL.js",
-            "OpenLayers/Protocol/SQL/Gears.js",
-            "OpenLayers/Protocol/WFS.js",
-            "OpenLayers/Protocol/WFS/v1.js",
-            "OpenLayers/Protocol/WFS/v1_0_0.js",
-            "OpenLayers/Protocol/WFS/v1_1_0.js",
-            "OpenLayers/Protocol/SOS.js",
-            "OpenLayers/Protocol/SOS/v1_0_0.js",
-            "OpenLayers/Layer/PointTrack.js",
-            "OpenLayers/Layer/GML.js",
-            "OpenLayers/Style.js",
-            "OpenLayers/Style2.js",
-            "OpenLayers/StyleMap.js",
-            "OpenLayers/Rule.js",
-            "OpenLayers/Format.js",
-            "OpenLayers/Format/XML.js",
-            "OpenLayers/Format/Context.js",
-            "OpenLayers/Format/ArcXML.js",
-            "OpenLayers/Format/ArcXML/Features.js",
-            "OpenLayers/Format/GML.js",
-            "OpenLayers/Format/GML/Base.js",
-            "OpenLayers/Format/GML/v2.js",
-            "OpenLayers/Format/GML/v3.js",
-            "OpenLayers/Format/Atom.js",
-            "OpenLayers/Format/KML.js",
-            "OpenLayers/Format/GeoRSS.js",
-            "OpenLayers/Format/WFS.js",
-            "OpenLayers/Format/WFSCapabilities.js",
-            "OpenLayers/Format/WFSCapabilities/v1.js",
-            "OpenLayers/Format/WFSCapabilities/v1_0_0.js",
-            "OpenLayers/Format/WFSCapabilities/v1_1_0.js",
-            "OpenLayers/Format/WFSDescribeFeatureType.js",
-            "OpenLayers/Format/WMSDescribeLayer.js",
-            "OpenLayers/Format/WMSDescribeLayer/v1_1.js",
-            "OpenLayers/Format/WKT.js",
-            "OpenLayers/Format/CQL.js",
-            "OpenLayers/Format/OSM.js",
-            "OpenLayers/Format/GPX.js",
-            "OpenLayers/Format/Filter.js",
-            "OpenLayers/Format/Filter/v1.js",
-            "OpenLayers/Format/Filter/v1_0_0.js",
-            "OpenLayers/Format/Filter/v1_1_0.js",
-            "OpenLayers/Format/SLD.js",
-            "OpenLayers/Format/SLD/v1.js",
-            "OpenLayers/Format/SLD/v1_0_0.js",
-            "OpenLayers/Format/OWSCommon/v1.js",
-            "OpenLayers/Format/OWSCommon/v1_0_0.js",
-            "OpenLayers/Format/OWSCommon/v1_1_0.js",
-            "OpenLayers/Format/CSWGetDomain.js",
-            "OpenLayers/Format/CSWGetDomain/v2_0_2.js",
-            "OpenLayers/Format/CSWGetRecords.js",
-            "OpenLayers/Format/CSWGetRecords/v2_0_2.js",
-            "OpenLayers/Format/WFST.js",
-            "OpenLayers/Format/WFST/v1.js",
-            "OpenLayers/Format/WFST/v1_0_0.js",
-            "OpenLayers/Format/WFST/v1_1_0.js",
-            "OpenLayers/Format/Text.js",
-            "OpenLayers/Format/JSON.js",
-            "OpenLayers/Format/GeoJSON.js",
-            "OpenLayers/Format/WMC.js",
-            "OpenLayers/Format/WMC/v1.js",
-            "OpenLayers/Format/WMC/v1_0_0.js",
-            "OpenLayers/Format/WMC/v1_1_0.js",
-            "OpenLayers/Format/WMSCapabilities.js",
-            "OpenLayers/Format/WMSCapabilities/v1.js",
-            "OpenLayers/Format/WMSCapabilities/v1_1.js",
-            "OpenLayers/Format/WMSCapabilities/v1_1_0.js",
-            "OpenLayers/Format/WMSCapabilities/v1_1_1.js",
-            "OpenLayers/Format/WMSCapabilities/v1_3.js",
-            "OpenLayers/Format/WMSCapabilities/v1_3_0.js",
-            "OpenLayers/Format/WMSCapabilities/v1_1_1_WMSC.js",
-            "OpenLayers/Format/WMSGetFeatureInfo.js",
-            "OpenLayers/Format/SOSCapabilities.js",
-            "OpenLayers/Format/SOSCapabilities/v1_0_0.js",
-            "OpenLayers/Format/SOSGetFeatureOfInterest.js",
-            "OpenLayers/Format/SOSGetObservation.js",
-            "OpenLayers/Format/OWSContext.js",
-            "OpenLayers/Format/OWSContext/v0_3_1.js",
-            "OpenLayers/Format/WMTSCapabilities.js",
-            "OpenLayers/Format/WMTSCapabilities/v1_0_0.js",
-            "OpenLayers/Layer/WFS.js",
-            "OpenLayers/Control/GetFeature.js",
-            "OpenLayers/Control/MouseToolbar.js",
-            "OpenLayers/Control/NavToolbar.js",
-            "OpenLayers/Control/PanPanel.js",
-            "OpenLayers/Control/Pan.js",
-            "OpenLayers/Control/ZoomIn.js",
-            "OpenLayers/Control/ZoomOut.js",
-            "OpenLayers/Control/ZoomPanel.js",
-            "OpenLayers/Control/EditingToolbar.js",
-            "OpenLayers/Symbolizer.js",
-            "OpenLayers/Symbolizer/Point.js",
-            "OpenLayers/Symbolizer/Line.js",
-            "OpenLayers/Symbolizer/Polygon.js",
-            "OpenLayers/Symbolizer/Text.js",
-            "OpenLayers/Symbolizer/Raster.js",
-            "OpenLayers/Lang.js",
-            "OpenLayers/Lang/en.js"
-        ); // etc.
+        if (!jsFiles) {
+            jsFiles = [
+                "OpenLayers/BaseTypes/Class.js",
+                "OpenLayers/Util.js",
+                "OpenLayers/BaseTypes.js",
+                "OpenLayers/BaseTypes/Bounds.js",
+                "OpenLayers/BaseTypes/Element.js",
+                "OpenLayers/BaseTypes/LonLat.js",
+                "OpenLayers/BaseTypes/Pixel.js",
+                "OpenLayers/BaseTypes/Size.js",
+                "OpenLayers/Console.js",
+                "OpenLayers/Tween.js",
+                "Rico/Corner.js",
+                "Rico/Color.js",
+                "OpenLayers/Ajax.js",
+                "OpenLayers/Events.js",
+                "OpenLayers/Request.js",
+                "OpenLayers/Request/XMLHttpRequest.js",
+                "OpenLayers/Projection.js",
+                "OpenLayers/Map.js",
+                "OpenLayers/Layer.js",
+                "OpenLayers/Icon.js",
+                "OpenLayers/Marker.js",
+                "OpenLayers/Marker/Box.js",
+                "OpenLayers/Popup.js",
+                "OpenLayers/Tile.js",
+                "OpenLayers/Tile/Image.js",
+                "OpenLayers/Tile/Image/IFrame.js",
+                "OpenLayers/Tile/WFS.js",
+                "OpenLayers/Layer/Image.js",
+                "OpenLayers/Layer/SphericalMercator.js",
+                "OpenLayers/Layer/EventPane.js",
+                "OpenLayers/Layer/FixedZoomLevels.js",
+                "OpenLayers/Layer/Google.js",
+                "OpenLayers/Layer/Google/v3.js",
+                "OpenLayers/Layer/VirtualEarth.js",
+                "OpenLayers/Layer/Yahoo.js",
+                "OpenLayers/Layer/HTTPRequest.js",
+                "OpenLayers/Layer/Grid.js",
+                "OpenLayers/Layer/MapGuide.js",
+                "OpenLayers/Layer/MapServer.js",
+                "OpenLayers/Layer/MapServer/Untiled.js",
+                "OpenLayers/Layer/KaMap.js",
+                "OpenLayers/Layer/KaMapCache.js",
+                "OpenLayers/Layer/MultiMap.js",
+                "OpenLayers/Layer/Markers.js",
+                "OpenLayers/Layer/Text.js",
+                "OpenLayers/Layer/WorldWind.js",
+                "OpenLayers/Layer/ArcGIS93Rest.js",
+                "OpenLayers/Layer/WMS.js",
+                "OpenLayers/Layer/WMS/Untiled.js",
+                "OpenLayers/Layer/WMS/Post.js",
+                "OpenLayers/Layer/WMTS.js",
+                "OpenLayers/Layer/ArcIMS.js",
+                "OpenLayers/Layer/GeoRSS.js",
+                "OpenLayers/Layer/Boxes.js",
+                "OpenLayers/Layer/XYZ.js",
+                "OpenLayers/Layer/Bing.js",
+                "OpenLayers/Layer/TMS.js",
+                "OpenLayers/Layer/TileCache.js",
+                "OpenLayers/Layer/Zoomify.js",
+                "OpenLayers/Popup/Anchored.js",
+                "OpenLayers/Popup/AnchoredBubble.js",
+                "OpenLayers/Popup/Framed.js",
+                "OpenLayers/Popup/FramedCloud.js",
+                "OpenLayers/Feature.js",
+                "OpenLayers/Feature/Vector.js",
+                "OpenLayers/Feature/WFS.js",
+                "OpenLayers/Handler.js",
+                "OpenLayers/Handler/Click.js",
+                "OpenLayers/Handler/Hover.js",
+                "OpenLayers/Handler/Point.js",
+                "OpenLayers/Handler/Path.js",
+                "OpenLayers/Handler/Polygon.js",
+                "OpenLayers/Handler/Feature.js",
+                "OpenLayers/Handler/Drag.js",
+                "OpenLayers/Handler/RegularPolygon.js",
+                "OpenLayers/Handler/Box.js",
+                "OpenLayers/Handler/MouseWheel.js",
+                "OpenLayers/Handler/Keyboard.js",
+                "OpenLayers/Control.js",
+                "OpenLayers/Control/Attribution.js",
+                "OpenLayers/Control/Button.js",
+                "OpenLayers/Control/ZoomBox.js",
+                "OpenLayers/Control/ZoomToMaxExtent.js",
+                "OpenLayers/Control/DragPan.js",
+                "OpenLayers/Control/Navigation.js",
+                "OpenLayers/Control/MouseDefaults.js",
+                "OpenLayers/Control/MousePosition.js",
+                "OpenLayers/Control/OverviewMap.js",
+                "OpenLayers/Control/KeyboardDefaults.js",
+                "OpenLayers/Control/PanZoom.js",
+                "OpenLayers/Control/PanZoomBar.js",
+                "OpenLayers/Control/ArgParser.js",
+                "OpenLayers/Control/Permalink.js",
+                "OpenLayers/Control/Scale.js",
+                "OpenLayers/Control/ScaleLine.js",
+                "OpenLayers/Control/Snapping.js",
+                "OpenLayers/Control/Split.js",
+                "OpenLayers/Control/LayerSwitcher.js",
+                "OpenLayers/Control/DrawFeature.js",
+                "OpenLayers/Control/DragFeature.js",
+                "OpenLayers/Control/ModifyFeature.js",
+                "OpenLayers/Control/Panel.js",
+                "OpenLayers/Control/SelectFeature.js",
+                "OpenLayers/Control/NavigationHistory.js",
+                "OpenLayers/Control/Measure.js",
+                "OpenLayers/Control/WMSGetFeatureInfo.js",
+                "OpenLayers/Control/WMTSGetFeatureInfo.js",
+                "OpenLayers/Control/Graticule.js",
+                "OpenLayers/Control/TransformFeature.js",
+                "OpenLayers/Control/SLDSelect.js",
+                "OpenLayers/Geometry.js",
+                "OpenLayers/Geometry/Rectangle.js",
+                "OpenLayers/Geometry/Collection.js",
+                "OpenLayers/Geometry/Point.js",
+                "OpenLayers/Geometry/MultiPoint.js",
+                "OpenLayers/Geometry/Curve.js",
+                "OpenLayers/Geometry/LineString.js",
+                "OpenLayers/Geometry/LinearRing.js",
+                "OpenLayers/Geometry/Polygon.js",
+                "OpenLayers/Geometry/MultiLineString.js",
+                "OpenLayers/Geometry/MultiPolygon.js",
+                "OpenLayers/Geometry/Surface.js",
+                "OpenLayers/Renderer.js",
+                "OpenLayers/Renderer/Elements.js",
+                "OpenLayers/Renderer/SVG.js",
+                "OpenLayers/Renderer/Canvas.js",
+                "OpenLayers/Renderer/VML.js",
+                "OpenLayers/Layer/Vector.js",
+                "OpenLayers/Layer/Vector/RootContainer.js",
+                "OpenLayers/Strategy.js",
+                "OpenLayers/Strategy/Filter.js",
+                "OpenLayers/Strategy/Fixed.js",
+                "OpenLayers/Strategy/Cluster.js",
+                "OpenLayers/Strategy/Paging.js",
+                "OpenLayers/Strategy/BBOX.js",
+                "OpenLayers/Strategy/Save.js",
+                "OpenLayers/Strategy/Refresh.js",
+                "OpenLayers/Filter.js",
+                "OpenLayers/Filter/FeatureId.js",
+                "OpenLayers/Filter/Logical.js",
+                "OpenLayers/Filter/Comparison.js",
+                "OpenLayers/Filter/Spatial.js",
+                "OpenLayers/Protocol.js",
+                "OpenLayers/Protocol/HTTP.js",
+                "OpenLayers/Protocol/SQL.js",
+                "OpenLayers/Protocol/SQL/Gears.js",
+                "OpenLayers/Protocol/WFS.js",
+                "OpenLayers/Protocol/WFS/v1.js",
+                "OpenLayers/Protocol/WFS/v1_0_0.js",
+                "OpenLayers/Protocol/WFS/v1_1_0.js",
+                "OpenLayers/Protocol/SOS.js",
+                "OpenLayers/Protocol/SOS/v1_0_0.js",
+                "OpenLayers/Layer/PointTrack.js",
+                "OpenLayers/Layer/GML.js",
+                "OpenLayers/Style.js",
+                "OpenLayers/Style2.js",
+                "OpenLayers/StyleMap.js",
+                "OpenLayers/Rule.js",
+                "OpenLayers/Format.js",
+                "OpenLayers/Format/XML.js",
+                "OpenLayers/Format/Context.js",
+                "OpenLayers/Format/ArcXML.js",
+                "OpenLayers/Format/ArcXML/Features.js",
+                "OpenLayers/Format/GML.js",
+                "OpenLayers/Format/GML/Base.js",
+                "OpenLayers/Format/GML/v2.js",
+                "OpenLayers/Format/GML/v3.js",
+                "OpenLayers/Format/Atom.js",
+                "OpenLayers/Format/KML.js",
+                "OpenLayers/Format/GeoRSS.js",
+                "OpenLayers/Format/WFS.js",
+                "OpenLayers/Format/WFSCapabilities.js",
+                "OpenLayers/Format/WFSCapabilities/v1.js",
+                "OpenLayers/Format/WFSCapabilities/v1_0_0.js",
+                "OpenLayers/Format/WFSCapabilities/v1_1_0.js",
+                "OpenLayers/Format/WFSDescribeFeatureType.js",
+                "OpenLayers/Format/WMSDescribeLayer.js",
+                "OpenLayers/Format/WMSDescribeLayer/v1_1.js",
+                "OpenLayers/Format/WKT.js",
+                "OpenLayers/Format/CQL.js",
+                "OpenLayers/Format/OSM.js",
+                "OpenLayers/Format/GPX.js",
+                "OpenLayers/Format/Filter.js",
+                "OpenLayers/Format/Filter/v1.js",
+                "OpenLayers/Format/Filter/v1_0_0.js",
+                "OpenLayers/Format/Filter/v1_1_0.js",
+                "OpenLayers/Format/SLD.js",
+                "OpenLayers/Format/SLD/v1.js",
+                "OpenLayers/Format/SLD/v1_0_0.js",
+                "OpenLayers/Format/OWSCommon/v1.js",
+                "OpenLayers/Format/OWSCommon/v1_0_0.js",
+                "OpenLayers/Format/OWSCommon/v1_1_0.js",
+                "OpenLayers/Format/CSWGetDomain.js",
+                "OpenLayers/Format/CSWGetDomain/v2_0_2.js",
+                "OpenLayers/Format/CSWGetRecords.js",
+                "OpenLayers/Format/CSWGetRecords/v2_0_2.js",
+                "OpenLayers/Format/WFST.js",
+                "OpenLayers/Format/WFST/v1.js",
+                "OpenLayers/Format/WFST/v1_0_0.js",
+                "OpenLayers/Format/WFST/v1_1_0.js",
+                "OpenLayers/Format/Text.js",
+                "OpenLayers/Format/JSON.js",
+                "OpenLayers/Format/GeoJSON.js",
+                "OpenLayers/Format/WMC.js",
+                "OpenLayers/Format/WMC/v1.js",
+                "OpenLayers/Format/WMC/v1_0_0.js",
+                "OpenLayers/Format/WMC/v1_1_0.js",
+                "OpenLayers/Format/WMSCapabilities.js",
+                "OpenLayers/Format/WMSCapabilities/v1.js",
+                "OpenLayers/Format/WMSCapabilities/v1_1.js",
+                "OpenLayers/Format/WMSCapabilities/v1_1_0.js",
+                "OpenLayers/Format/WMSCapabilities/v1_1_1.js",
+                "OpenLayers/Format/WMSCapabilities/v1_3.js",
+                "OpenLayers/Format/WMSCapabilities/v1_3_0.js",
+                "OpenLayers/Format/WMSCapabilities/v1_1_1_WMSC.js",
+                "OpenLayers/Format/WMSGetFeatureInfo.js",
+                "OpenLayers/Format/SOSCapabilities.js",
+                "OpenLayers/Format/SOSCapabilities/v1_0_0.js",
+                "OpenLayers/Format/SOSGetFeatureOfInterest.js",
+                "OpenLayers/Format/SOSGetObservation.js",
+                "OpenLayers/Format/OWSContext.js",
+                "OpenLayers/Format/OWSContext/v0_3_1.js",
+                "OpenLayers/Format/WMTSCapabilities.js",
+                "OpenLayers/Format/WMTSCapabilities/v1_0_0.js",
+                "OpenLayers/Layer/WFS.js",
+                "OpenLayers/Control/GetFeature.js",
+                "OpenLayers/Control/MouseToolbar.js",
+                "OpenLayers/Control/NavToolbar.js",
+                "OpenLayers/Control/PanPanel.js",
+                "OpenLayers/Control/Pan.js",
+                "OpenLayers/Control/ZoomIn.js",
+                "OpenLayers/Control/ZoomOut.js",
+                "OpenLayers/Control/ZoomPanel.js",
+                "OpenLayers/Control/EditingToolbar.js",
+                "OpenLayers/Symbolizer.js",
+                "OpenLayers/Symbolizer/Point.js",
+                "OpenLayers/Symbolizer/Line.js",
+                "OpenLayers/Symbolizer/Polygon.js",
+                "OpenLayers/Symbolizer/Text.js",
+                "OpenLayers/Symbolizer/Raster.js",
+                "OpenLayers/Lang.js",
+                "OpenLayers/Lang/en.js"
+            ]; // etc.
+        }
 
         // use "parser-inserted scripts" for guaranteed execution order
         // http://hsivonen.iki.fi/script-execution/
-        var allScriptTags = new Array(jsfiles.length);
-        var host = OpenLayers._getScriptLocation() + "lib/";    
-        for (var i=0, len=jsfiles.length; i<len; i++) {
-            allScriptTags[i] = "<script src='" + host + jsfiles[i] +
+        var scriptTags = new Array(jsFiles.length);
+        var host = OpenLayers._getScriptLocation() + "lib/";
+        for (var i=0, len=jsFiles.length; i<len; i++) {
+            scriptTags[i] = "<script src='" + host + jsFiles[i] +
                                    "'></script>"; 
         }
-        document.write(allScriptTags.join(""));
+        if (scriptTags.length > 0) {
+            document.write(scriptTags.join(""));
+        }
     }
 })();
 

Modified: sandbox/elemoine/draw-feature/tests/Format/WMTSCapabilities/v1_0_0.html
===================================================================
--- sandbox/elemoine/draw-feature/tests/Format/WMTSCapabilities/v1_0_0.html	2011-02-17 22:21:50 UTC (rev 11140)
+++ sandbox/elemoine/draw-feature/tests/Format/WMTSCapabilities/v1_0_0.html	2011-02-17 23:02:31 UTC (rev 11141)
@@ -110,7 +110,7 @@
         }
         
         function test_createLayer(t) {
-            t.plan(6);
+            t.plan(7);
             
             var format = new OpenLayers.Format.WMTSCapabilities();
 
@@ -153,7 +153,7 @@
             
             t.eq(layer.matrixIds.length, 2, "correct matrixIds length");
             t.eq(layer.name, "Coastlines", "correct layer title");
-            
+            t.eq(layer.style, "DarkBlue", "correct style identifier");
         }
         
     </script>

Modified: sandbox/elemoine/draw-feature/tests/Layer/Google/v3.html
===================================================================
--- sandbox/elemoine/draw-feature/tests/Layer/Google/v3.html	2011-02-17 22:21:50 UTC (rev 11140)
+++ sandbox/elemoine/draw-feature/tests/Layer/Google/v3.html	2011-02-17 23:02:31 UTC (rev 11141)
@@ -3,6 +3,7 @@
     <script src="http://maps.google.com/maps/api/js?sensor=false"></script>
     <script src="../../../lib/OpenLayers.js"></script>
     <script type="text/javascript">
+
     var layer; 
                    
     function test_Layer_Google_constructor (t) {
@@ -265,6 +266,12 @@
 
          t.plan(8);
 
+         var origPrecision = OpenLayers.Util.DEFAULT_PRECISION;
+         // GMaps v3 seems to use a default precision of 13, which is lower
+         // than what we use in OpenLayers.
+         // See http://trac.osgeo.org/openlayers/ticket/3059
+         OpenLayers.Util.DEFAULT_PRECISION = 13;
+
          var map = new OpenLayers.Map('map', {allOverlays: true});
 
          var gmap = new OpenLayers.Layer.Google("Google Streets");
@@ -275,16 +282,18 @@
          map.setCenter(origin, 4);
          var resolution = map.getResolution();
          
-         var dx, dy, center, expectedX, expectedY;
+         var dx, dy, center, expected;
 
          // confirm that panning works with Google visible
          dx = 100, dy = -100;
          map.pan(dx, dy, {animate: false});
          center = map.getCenter();
-         expectedX = origin.lon + (resolution * dx);
-         expectedY = origin.lat - (resolution * dy);
-         t.eq(center.lon, expectedX, "x panning with Google visible " + dx + ", " + dy);
-         t.eq(center.lat, expectedY, "y panning with Google visible " + dx + ", " + dy);
+         expected = new OpenLayers.LonLat(
+             origin.lon + (resolution * dx),
+             origin.lat - (resolution * dy)
+         );
+         t.eq(center.lon, expected.lon, "x panning with Google visible " + dx + ", " + dy);
+         t.eq(center.lat, expected.lat, "y panning with Google visible " + dx + ", " + dy);
          map.pan(-dx, -dy, {animate: false});
          center = map.getCenter();
          t.eq(center.lon, origin.lon, "x panning with Google visible " + (-dx) + ", " + (-dy));
@@ -295,22 +304,30 @@
          dx = 100, dy = -100;
          map.pan(dx, dy, {animate: false});
          center = map.getCenter();
-         expectedX = origin.lon + (resolution * dx);
-         expectedY = origin.lat - (resolution * dy);
-         t.eq(center.lon, expectedX, "x panning with Google invisible " + dx + ", " + dy);
-         t.eq(center.lat, expectedY, "y panning with Google invisible " + dx + ", " + dy);
+         expected = new OpenLayers.LonLat(
+             origin.lon + (resolution * dx),
+             origin.lat - (resolution * dy)
+         );
+         t.eq(center.lon, expected.lon, "x panning with Google invisible " + dx + ", " + dy);
+         t.eq(center.lat, expected.lat, "y panning with Google invisible " + dx + ", " + dy);
          map.pan(-dx, -dy, {animate: false});
          center = map.getCenter();
          t.eq(center.lon, origin.lon, "x panning with Google invisible " + (-dx) + ", " + (-dy));
          t.eq(center.lat, origin.lat, "y panning with Google invisible " + (-dx) + ", " + (-dy));
-         
+
          map.destroy();
-
+         OpenLayers.Util.DEFAULT_PRECISION = origPrecision;
      }
      
      function test_wrapDateLine(t) {
          t.plan(2);
 
+         var origPrecision = OpenLayers.Util.DEFAULT_PRECISION;
+         // GMaps v3 seems to use a default precision of 13, which is lower
+         // than what we use in OpenLayers.
+         // See http://trac.osgeo.org/openlayers/ticket/3059
+         OpenLayers.Util.DEFAULT_PRECISION = 13;
+
          var map = new OpenLayers.Map("map");
 
          var gmap = new OpenLayers.Layer.Google("Google Streets");
@@ -322,14 +339,15 @@
          // pan to the edge of the world
          map.pan(256, 0, {animate: false});
          center = map.getCenter();
-         t.eq(center.lon, 20037508.3392, "edge of the world");
+         t.eq(center.lon, 20037508.34, "edge of the world");
          // pan off the edge of the world
          map.pan(100, 0, {animate: false});
          center = map.getCenter();
-         t.eq(center.lon, -12210356.6442, "magically back in the western hemisphere");
+         var expect = OpenLayers.Util.toFloat(100 * map.getResolution() - 20037508.34);
+         t.eq(center.lon, expect, "magically back in the western hemisphere");
          
          map.destroy();
-         
+         OpenLayers.Util.DEFAULT_PRECISION = origPrecision;         
      }
 
      function test_respectDateLine(t) {
@@ -346,16 +364,16 @@
          // pan to the edge of the world
          map.pan(256, 0, {animate: false});
          center = map.getCenter();
-         t.eq(center.lon, 20037508.3392, "edge of the world");
+         t.eq(center.lon, 20037508.34, "edge of the world");
          // pan off the edge of the world
          map.pan(100, 0, {animate: false});
          center = map.getCenter();
-         t.eq(center.lon, 20037508.3392, "whew, still on the edge");
+         t.eq(center.lon, 20037508.34, "whew, still on the edge");
          
          map.destroy();
          
      }
-
+     
   </script>
 </head>
 <body>

Modified: sandbox/elemoine/draw-feature/tests/Request.html
===================================================================
--- sandbox/elemoine/draw-feature/tests/Request.html	2011-02-17 22:21:50 UTC (rev 11140)
+++ sandbox/elemoine/draw-feature/tests/Request.html	2011-02-17 23:02:31 UTC (rev 11141)
@@ -20,7 +20,7 @@
     function test_issue(t) {
         setup();
 
-        t.plan(21);
+        t.plan(22);
         var request, config;
         var proto = OpenLayers.Request.XMLHttpRequest.prototype;
         var issue = OpenLayers.Function.bind(OpenLayers.Request.issue,
@@ -81,7 +81,18 @@
             t.eq(url, config.url + "&foo=bar", "existing query string gets extended with &");
         }
         request = issue(config);
-
+        
+        // test that query string doesn't get ? followed by &
+        config = {
+            method: "GET",
+            url: "http://example.com/service?",
+            params: {"foo": "bar"}
+        };
+        proto.open = function(method, url, async, user, password) {
+            t.eq(url, config.url + "foo=bar", "existing query string ending with ? gets extended without &");
+        }
+        request = issue(config);
+        
         // reset open method
         proto.open = _open;
         

Modified: sandbox/elemoine/draw-feature/tests/Util.html
===================================================================
--- sandbox/elemoine/draw-feature/tests/Util.html	2011-02-17 22:21:50 UTC (rev 11140)
+++ sandbox/elemoine/draw-feature/tests/Util.html	2011-02-17 23:02:31 UTC (rev 11141)
@@ -5,16 +5,20 @@
     var custom$ = function() {};
     window.$ = custom$;
   </script>
-  <script src="../lib/OpenLayers/SingleFile.js"></script>
-  <script src="../lib/OpenLayers/BaseTypes/Class.js"></script>
-  <script src="../lib/OpenLayers/Util.js"></script>
-  <script src="../lib/OpenLayers/BaseTypes.js"></script>
-  <script src="../lib/OpenLayers/BaseTypes/Element.js"></script>
-  <script src="../lib/OpenLayers/BaseTypes/LonLat.js"></script>
-  <script src="../lib/OpenLayers/BaseTypes/Pixel.js"></script>
-  <script src="../lib/OpenLayers/BaseTypes/Size.js"></script>
-  <script src="../lib/OpenLayers/Lang.js"></script>
-  <script src="../lib/OpenLayers/Console.js"></script>
+  <script>
+    var OpenLayers = [
+        "OpenLayers/BaseTypes/Class.js",
+        "OpenLayers/Util.js",
+        "OpenLayers/BaseTypes.js",
+        "OpenLayers/BaseTypes/Element.js",
+        "OpenLayers/BaseTypes/LonLat.js",
+        "OpenLayers/BaseTypes/Pixel.js",
+        "OpenLayers/BaseTypes/Size.js",
+        "OpenLayers/Lang.js",
+        "OpenLayers/Console.js"
+    ];
+  </script>
+  <script src="../lib/OpenLayers.js"></script>
   <script type="text/javascript">
     var isMozilla = (navigator.userAgent.indexOf("compatible") == -1);
     var map; 

Modified: sandbox/elemoine/draw-feature/tests/list-tests.html
===================================================================
--- sandbox/elemoine/draw-feature/tests/list-tests.html	2011-02-17 22:21:50 UTC (rev 11140)
+++ sandbox/elemoine/draw-feature/tests/list-tests.html	2011-02-17 23:02:31 UTC (rev 11141)
@@ -163,6 +163,7 @@
     <li>OpenLayers2.html</li>
     <li>OpenLayers3.html</li>
     <li>OpenLayers4.html</li>
+    <li>OpenLayersJsFiles.html</li>
     <li>Popup.html</li>
     <li>Popup/Anchored.html</li>
     <li>Popup/AnchoredBubble.html</li>

Modified: sandbox/elemoine/draw-feature/theme/default/style.css
===================================================================
--- sandbox/elemoine/draw-feature/theme/default/style.css	2011-02-17 22:21:50 UTC (rev 11140)
+++ sandbox/elemoine/draw-feature/theme/default/style.css	2011-02-17 23:02:31 UTC (rev 11141)
@@ -93,11 +93,13 @@
 .olControlOverviewMapMinimizeButton {
     right: 0px;
     bottom: 80px;
+    cursor: pointer;
 }    
 
 .olControlOverviewMapMaximizeButton {
     right: 0px;
     bottom: 80px;
+    cursor: pointer;
 }
 
 .olControlOverviewMapExtentRectangle {
@@ -402,6 +404,7 @@
 .olControlLayerSwitcher .minimizeDiv {
     top: 5px;
     right: 0px;
+    cursor: pointer;
 }
 
 .olBingAttribution {



More information about the Commits mailing list