[OpenLayers-Commits] r3113 - in tags/openlayers: . release-2.4-rc3 release-2.4-rc3/build release-2.4-rc3/examples release-2.4-rc3/lib release-2.4-rc3/lib/OpenLayers release-2.4-rc3/lib/OpenLayers/Control release-2.4-rc3/lib/OpenLayers/Feature release-2.4-rc3/lib/OpenLayers/Format release-2.4-rc3/lib/OpenLayers/Geometry release-2.4-rc3/lib/OpenLayers/Handler release-2.4-rc3/lib/OpenLayers/Layer release-2.4-rc3/lib/OpenLayers/Layer/WMS release-2.4-rc3/lib/OpenLayers/Marker release-2.4-rc3/lib/OpenLayers/Popup release-2.4-rc3/lib/OpenLayers/Renderer release-2.4-rc3/lib/OpenLayers/Tile release-2.4-rc3/tests release-2.4-rc3/tests/Format release-2.4-rc3/tests/Layer release-2.4-rc3/tests/Marker
commits at openlayers.org
commits at openlayers.org
Wed May 2 10:20:51 EDT 2007
Author: crschmidt
Date: 2007-05-02 10:20:28 -0400 (Wed, 02 May 2007)
New Revision: 3113
Added:
tags/openlayers/release-2.4-rc3/
tags/openlayers/release-2.4-rc3/examples/outOfRangeMarkers.html
tags/openlayers/release-2.4-rc3/examples/outOfRangeMarkers.txt
tags/openlayers/release-2.4-rc3/examples/panel.html
tags/openlayers/release-2.4-rc3/lib/OpenLayers/Control/OverviewMap.js
tags/openlayers/release-2.4-rc3/lib/OpenLayers/Control/Panel.js
tags/openlayers/release-2.4-rc3/lib/OpenLayers/Format/GML.js
tags/openlayers/release-2.4-rc3/lib/OpenLayers/Layer.js
tags/openlayers/release-2.4-rc3/lib/OpenLayers/Layer/Markers.js
tags/openlayers/release-2.4-rc3/lib/OpenLayers/Layer/Vector.js
tags/openlayers/release-2.4-rc3/tests/Format/test_GML.html
tags/openlayers/release-2.4-rc3/tests/Layer/test_Vector.html
tags/openlayers/release-2.4-rc3/tests/Marker/test_Box.html
tags/openlayers/release-2.4-rc3/tests/list-tests.html
Removed:
tags/openlayers/release-2.4-rc3/examples/panel.html
tags/openlayers/release-2.4-rc3/lib/OpenLayers/Control/OverviewMap.js
tags/openlayers/release-2.4-rc3/lib/OpenLayers/Control/Panel.js
tags/openlayers/release-2.4-rc3/lib/OpenLayers/Format/GML.js
tags/openlayers/release-2.4-rc3/lib/OpenLayers/Layer.js
tags/openlayers/release-2.4-rc3/lib/OpenLayers/Layer/Markers.js
tags/openlayers/release-2.4-rc3/lib/OpenLayers/Layer/Vector.js
tags/openlayers/release-2.4-rc3/repository-license.txt
tags/openlayers/release-2.4-rc3/tests/Layer/test_Vector.html
tags/openlayers/release-2.4-rc3/tests/Marker/test_Box.html
tags/openlayers/release-2.4-rc3/tests/list-tests.html
Modified:
tags/openlayers/release-2.4-rc3/build/license.txt
tags/openlayers/release-2.4-rc3/lib/OpenLayers.js
tags/openlayers/release-2.4-rc3/lib/OpenLayers/Ajax.js
tags/openlayers/release-2.4-rc3/lib/OpenLayers/BaseTypes.js
tags/openlayers/release-2.4-rc3/lib/OpenLayers/Control.js
tags/openlayers/release-2.4-rc3/lib/OpenLayers/Control/ArgParser.js
tags/openlayers/release-2.4-rc3/lib/OpenLayers/Control/DragPan.js
tags/openlayers/release-2.4-rc3/lib/OpenLayers/Control/DrawFeature.js
tags/openlayers/release-2.4-rc3/lib/OpenLayers/Control/EditingToolbar.js
tags/openlayers/release-2.4-rc3/lib/OpenLayers/Control/KeyboardDefaults.js
tags/openlayers/release-2.4-rc3/lib/OpenLayers/Control/LayerSwitcher.js
tags/openlayers/release-2.4-rc3/lib/OpenLayers/Control/MouseDefaults.js
tags/openlayers/release-2.4-rc3/lib/OpenLayers/Control/MousePosition.js
tags/openlayers/release-2.4-rc3/lib/OpenLayers/Control/MouseToolbar.js
tags/openlayers/release-2.4-rc3/lib/OpenLayers/Control/NavToolbar.js
tags/openlayers/release-2.4-rc3/lib/OpenLayers/Control/Navigation.js
tags/openlayers/release-2.4-rc3/lib/OpenLayers/Control/PanZoom.js
tags/openlayers/release-2.4-rc3/lib/OpenLayers/Control/PanZoomBar.js
tags/openlayers/release-2.4-rc3/lib/OpenLayers/Control/Permalink.js
tags/openlayers/release-2.4-rc3/lib/OpenLayers/Control/Scale.js
tags/openlayers/release-2.4-rc3/lib/OpenLayers/Control/SelectFeature.js
tags/openlayers/release-2.4-rc3/lib/OpenLayers/Control/ZoomBox.js
tags/openlayers/release-2.4-rc3/lib/OpenLayers/Control/ZoomToMaxExtent.js
tags/openlayers/release-2.4-rc3/lib/OpenLayers/Events.js
tags/openlayers/release-2.4-rc3/lib/OpenLayers/Feature.js
tags/openlayers/release-2.4-rc3/lib/OpenLayers/Feature/Vector.js
tags/openlayers/release-2.4-rc3/lib/OpenLayers/Feature/WFS.js
tags/openlayers/release-2.4-rc3/lib/OpenLayers/Format.js
tags/openlayers/release-2.4-rc3/lib/OpenLayers/Format/GeoRSS.js
tags/openlayers/release-2.4-rc3/lib/OpenLayers/Format/KML.js
tags/openlayers/release-2.4-rc3/lib/OpenLayers/Format/WFS.js
tags/openlayers/release-2.4-rc3/lib/OpenLayers/Format/WKT.js
tags/openlayers/release-2.4-rc3/lib/OpenLayers/Geometry.js
tags/openlayers/release-2.4-rc3/lib/OpenLayers/Geometry/Collection.js
tags/openlayers/release-2.4-rc3/lib/OpenLayers/Geometry/Curve.js
tags/openlayers/release-2.4-rc3/lib/OpenLayers/Geometry/LineString.js
tags/openlayers/release-2.4-rc3/lib/OpenLayers/Geometry/LinearRing.js
tags/openlayers/release-2.4-rc3/lib/OpenLayers/Geometry/MultiLineString.js
tags/openlayers/release-2.4-rc3/lib/OpenLayers/Geometry/MultiPoint.js
tags/openlayers/release-2.4-rc3/lib/OpenLayers/Geometry/MultiPolygon.js
tags/openlayers/release-2.4-rc3/lib/OpenLayers/Geometry/Point.js
tags/openlayers/release-2.4-rc3/lib/OpenLayers/Geometry/Polygon.js
tags/openlayers/release-2.4-rc3/lib/OpenLayers/Geometry/Rectangle.js
tags/openlayers/release-2.4-rc3/lib/OpenLayers/Geometry/Surface.js
tags/openlayers/release-2.4-rc3/lib/OpenLayers/Handler.js
tags/openlayers/release-2.4-rc3/lib/OpenLayers/Handler/Box.js
tags/openlayers/release-2.4-rc3/lib/OpenLayers/Handler/Drag.js
tags/openlayers/release-2.4-rc3/lib/OpenLayers/Handler/Feature.js
tags/openlayers/release-2.4-rc3/lib/OpenLayers/Handler/Keyboard.js
tags/openlayers/release-2.4-rc3/lib/OpenLayers/Handler/MouseWheel.js
tags/openlayers/release-2.4-rc3/lib/OpenLayers/Handler/Path.js
tags/openlayers/release-2.4-rc3/lib/OpenLayers/Handler/Point.js
tags/openlayers/release-2.4-rc3/lib/OpenLayers/Handler/Polygon.js
tags/openlayers/release-2.4-rc3/lib/OpenLayers/Icon.js
tags/openlayers/release-2.4-rc3/lib/OpenLayers/Layer/Boxes.js
tags/openlayers/release-2.4-rc3/lib/OpenLayers/Layer/Canvas.js
tags/openlayers/release-2.4-rc3/lib/OpenLayers/Layer/EventPane.js
tags/openlayers/release-2.4-rc3/lib/OpenLayers/Layer/FixedZoomLevels.js
tags/openlayers/release-2.4-rc3/lib/OpenLayers/Layer/GML.js
tags/openlayers/release-2.4-rc3/lib/OpenLayers/Layer/GeoRSS.js
tags/openlayers/release-2.4-rc3/lib/OpenLayers/Layer/Google.js
tags/openlayers/release-2.4-rc3/lib/OpenLayers/Layer/Grid.js
tags/openlayers/release-2.4-rc3/lib/OpenLayers/Layer/HTTPRequest.js
tags/openlayers/release-2.4-rc3/lib/OpenLayers/Layer/Image.js
tags/openlayers/release-2.4-rc3/lib/OpenLayers/Layer/KaMap.js
tags/openlayers/release-2.4-rc3/lib/OpenLayers/Layer/MapServer.js
tags/openlayers/release-2.4-rc3/lib/OpenLayers/Layer/MultiMap.js
tags/openlayers/release-2.4-rc3/lib/OpenLayers/Layer/TMS.js
tags/openlayers/release-2.4-rc3/lib/OpenLayers/Layer/Text.js
tags/openlayers/release-2.4-rc3/lib/OpenLayers/Layer/VirtualEarth.js
tags/openlayers/release-2.4-rc3/lib/OpenLayers/Layer/WFS.js
tags/openlayers/release-2.4-rc3/lib/OpenLayers/Layer/WMS.js
tags/openlayers/release-2.4-rc3/lib/OpenLayers/Layer/WMS/Untiled.js
tags/openlayers/release-2.4-rc3/lib/OpenLayers/Layer/WorldWind.js
tags/openlayers/release-2.4-rc3/lib/OpenLayers/Layer/Yahoo.js
tags/openlayers/release-2.4-rc3/lib/OpenLayers/Map.js
tags/openlayers/release-2.4-rc3/lib/OpenLayers/Marker.js
tags/openlayers/release-2.4-rc3/lib/OpenLayers/Marker/Box.js
tags/openlayers/release-2.4-rc3/lib/OpenLayers/Popup.js
tags/openlayers/release-2.4-rc3/lib/OpenLayers/Popup/Anchored.js
tags/openlayers/release-2.4-rc3/lib/OpenLayers/Popup/AnchoredBubble.js
tags/openlayers/release-2.4-rc3/lib/OpenLayers/Renderer.js
tags/openlayers/release-2.4-rc3/lib/OpenLayers/Renderer/Elements.js
tags/openlayers/release-2.4-rc3/lib/OpenLayers/Renderer/SVG.js
tags/openlayers/release-2.4-rc3/lib/OpenLayers/Renderer/VML.js
tags/openlayers/release-2.4-rc3/lib/OpenLayers/SingleFile.js
tags/openlayers/release-2.4-rc3/lib/OpenLayers/Tile.js
tags/openlayers/release-2.4-rc3/lib/OpenLayers/Tile/Image.js
tags/openlayers/release-2.4-rc3/lib/OpenLayers/Tile/WFS.js
tags/openlayers/release-2.4-rc3/lib/OpenLayers/Util.js
Log:
Tag OpenLayers 2.4-rc3.
Copied: tags/openlayers/release-2.4-rc3 (from rev 3111, branches/openlayers/2.4)
Modified: tags/openlayers/release-2.4-rc3/build/license.txt
===================================================================
--- branches/openlayers/2.4/build/license.txt 2007-05-02 14:01:13 UTC (rev 3111)
+++ tags/openlayers/release-2.4-rc3/build/license.txt 2007-05-02 14:20:28 UTC (rev 3113)
@@ -2,8 +2,8 @@
OpenLayers.js -- OpenLayers Map Viewer Library
- Copyright 2005-2006 MetaCarta, Inc., released under a modified BSD license.
- Please see http://svn.openlayers.org/trunk/openlayers/repository-license.txt
+ Copyright 2005-2006 MetaCarta, Inc., released under the BSD license.
+ Please see http://svn.openlayers.org/trunk/openlayers/release-license.txt
for the full text of the license.
Includes compressed code under the following licenses:
Copied: tags/openlayers/release-2.4-rc3/examples/outOfRangeMarkers.html (from rev 3112, branches/openlayers/2.4/examples/outOfRangeMarkers.html)
===================================================================
--- tags/openlayers/release-2.4-rc3/examples/outOfRangeMarkers.html (rev 0)
+++ tags/openlayers/release-2.4-rc3/examples/outOfRangeMarkers.html 2007-05-02 14:20:28 UTC (rev 3113)
@@ -0,0 +1,54 @@
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+ <style type="text/css">
+ #map {
+ width: 650px;
+ height: 550px;
+ border: 1px solid black;
+ }
+ </style>
+ <script src='http://maps.google.com/maps?file=api&v=2&key=ABQIAAAAKsGpqSOKkB-Ih2JopAmNbBTv_3ENzieGiNBMV02NiUJp8KZGIRTQWhul8K0wiNOHDxOF0-W2RmFoRg'></script>
+ <script src="../lib/OpenLayers.js"></script>
+ <script type="text/javascript">
+ <!--
+ function init(){
+
+ // Variables
+ var map = new OpenLayers.Map('map', { controls: [] });
+ var lon = 35;
+ var lat = -6;
+ var zoom = 6;
+ var map, layer;
+
+ // Map Controls
+ map.addControl(new OpenLayers.Control.PanZoomBar());
+ map.addControl(new OpenLayers.Control.MouseToolbar());
+ map.addControl(new OpenLayers.Control.LayerSwitcher({'ascending':false}));
+ map.addControl(new OpenLayers.Control.MousePosition());
+
+
+ // Map Layers
+ var GMapsSat = new OpenLayers.Layer.Google( "Google Satellite" , {type: G_SATELLITE_MAP, 'maxZoomLevel':18} );
+ var GMapsHybr = new OpenLayers.Layer.Google( "Google Hybrid" , {type: G_HYBRID_TYPE, 'maxZoomLevel':18} );
+ var GMapsStreets = new OpenLayers.Layer.Google( "Google Steets" , {type: G_NORMAL_MAP, 'maxZoomLevel':18} );
+ var MarkersLayer2 = new OpenLayers.Layer.Text( "Region info", {location: "outOfRangeMarkers.txt", maxResolution: 0.02});
+
+ // Add Layers
+ map.addLayers([GMapsHybr, GMapsStreets, GMapsSat, MarkersLayer2]);
+
+
+ // Visual
+ map.setCenter(new OpenLayers.LonLat(lon, lat), zoom);
+ if (!map.getCenter()) map.zoomToMaxExtent();
+ }
+ // -->
+ </script>
+ </head>
+
+
+ <body onload="init()">
+
+ <div id="map"></div>
+
+ </body>
+</html>
Copied: tags/openlayers/release-2.4-rc3/examples/outOfRangeMarkers.txt (from rev 3112, branches/openlayers/2.4/examples/outOfRangeMarkers.txt)
===================================================================
--- tags/openlayers/release-2.4-rc3/examples/outOfRangeMarkers.txt (rev 0)
+++ tags/openlayers/release-2.4-rc3/examples/outOfRangeMarkers.txt 2007-05-02 14:20:28 UTC (rev 3113)
@@ -0,0 +1,3 @@
+point title description icon
+-4.14,37.90 Kilimanjaro Beskrivning http://www.villageografica.com/Africa-Webmap/img/marker-blue.png
+-3.24,34.35 Shinyanga Beskrivning http://www.villageografica.com/Africa-Webmap/img/marker-blue.png
Deleted: tags/openlayers/release-2.4-rc3/examples/panel.html
===================================================================
--- branches/openlayers/2.4/examples/panel.html 2007-05-02 14:01:13 UTC (rev 3111)
+++ tags/openlayers/release-2.4-rc3/examples/panel.html 2007-05-02 14:20:28 UTC (rev 3113)
@@ -1,90 +0,0 @@
-<html xmlns="http://www.w3.org/1999/xhtml">
- <head>
- <style type="text/css">
- #map {
- width: 800px;
- height: 475px;
- border: 1px solid black;
- }
- .olControlPanel div {
- display:block;
- width: 24px;
- height: 24px;
- margin: 5px;
- background-color:red;
- }
-
- .olControlPanel .olControlMouseDefaultsItemActive {
- background-color: orange;
- background-image: url("../../oterral/ButtonBar/vector/img/PanEnable.png");
- }
- .olControlPanel .olControlMouseDefaultsItemInactive {
- background-color: orange;
- background-image: url("../../oterral/ButtonBar/vector/img/PanDisable.png");
- }
- .olControlPanel .olControlDrawFeatureItemActive {
- width: 22px;
- height: 22px;
- background-image: url("../../oterral/ButtonBar/vector/img/EditLineEnable.png");
- }
- .olControlPanel .olControlDrawFeatureItemInactive {
- width: 22px;
- height: 22px;
- background-image: url("../../oterral/ButtonBar/vector/img/EditLineDisable.png");
- }
- .olControlPanel .olControlZoomBoxItemInactive {
- width: 22px;
- height: 22px;
- background-color: blue;
- }
- .olControlPanel .olControlZoomBoxItemActive {
- width: 22px;
- height: 22px;
- background-color: orange;
- }
- .olControlPanel .olControlZoomToMaxExtentItemInactive {
- width: 18px;
- height: 18px;
- background-image: url("../img/zoom-world-mini.png");
- }
-
- </style>
- <script src="../lib/OpenLayers.js"></script>
- <script src="../lib/Firebug/debug.js"></script>
- <script type="text/javascript">
- <!--
- var lon = 5;
- var lat = 40;
- var zoom = 5;
- var map, layer;
-
- function init(){
- map = new OpenLayers.Map( 'map', { controls: [] } );
- layer = new OpenLayers.Layer.WMS( "OpenLayers WMS",
- "http://labs.metacarta.com/wms/vmap0", {layers: 'basic'} );
- map.addLayer(layer);
-
- vlayer = new OpenLayers.Layer.Vector( "Editable" );
- map.addLayer(vlayer);
-
-
- zb = new OpenLayers.Control.ZoomBox();
- panel = new OpenLayers.Control.Panel({defaultControl: zb});
- panel.addControls([
- new OpenLayers.Control.MouseDefaults(),
- zb,
- new OpenLayers.Control.DrawFeature(vlayer, OpenLayers.Handler.Path),
- new OpenLayers.Control.ZoomToMaxExtent()
- ]);
- map.addControl(panel);
-
- map.setCenter(new OpenLayers.LonLat(lon, lat), zoom);
- }
- // -->
- </script>
- </head>
- <body onload="init()">
- <div id="panel"></div>
- <div id="map"></div>
- </body>
-</html>
Copied: tags/openlayers/release-2.4-rc3/examples/panel.html (from rev 3112, branches/openlayers/2.4/examples/panel.html)
===================================================================
--- tags/openlayers/release-2.4-rc3/examples/panel.html (rev 0)
+++ tags/openlayers/release-2.4-rc3/examples/panel.html 2007-05-02 14:20:28 UTC (rev 3113)
@@ -0,0 +1,90 @@
+<html xmlns="http://www.w3.org/1999/xhtml">
+ <head>
+ <style type="text/css">
+ #map {
+ width: 800px;
+ height: 475px;
+ border: 1px solid black;
+ }
+ .olControlPanel div {
+ display:block;
+ width: 24px;
+ height: 24px;
+ margin: 5px;
+ background-color:red;
+ }
+
+ .olControlPanel .olControlMouseDefaultsItemActive {
+ background-color: orange;
+ background-image: url("../../oterral/ButtonBar/vector/img/PanEnable.png");
+ }
+ .olControlPanel .olControlMouseDefaultsItemInactive {
+ background-color: orange;
+ background-image: url("../../oterral/ButtonBar/vector/img/PanDisable.png");
+ }
+ .olControlPanel .olControlDrawFeatureItemActive {
+ width: 22px;
+ height: 22px;
+ background-image: url("../../oterral/ButtonBar/vector/img/EditLineEnable.png");
+ }
+ .olControlPanel .olControlDrawFeatureItemInactive {
+ width: 22px;
+ height: 22px;
+ background-image: url("../../oterral/ButtonBar/vector/img/EditLineDisable.png");
+ }
+ .olControlPanel .olControlZoomBoxItemInactive {
+ width: 22px;
+ height: 22px;
+ background-color: blue;
+ }
+ .olControlPanel .olControlZoomBoxItemActive {
+ width: 22px;
+ height: 22px;
+ background-color: orange;
+ }
+ .olControlPanel .olControlZoomToMaxExtentItemInactive {
+ width: 18px;
+ height: 18px;
+ background-image: url("../img/zoom-world-mini.png");
+ }
+
+ </style>
+ <script src="../lib/OpenLayers.js"></script>
+ <script src="../lib/Firebug/debug.js"></script>
+ <script type="text/javascript">
+ <!--
+ var lon = 5;
+ var lat = 40;
+ var zoom = 5;
+ var map, layer;
+
+ function init(){
+ map = new OpenLayers.Map( 'map', { controls: [] } );
+ layer = new OpenLayers.Layer.WMS( "OpenLayers WMS",
+ "http://labs.metacarta.com/wms/vmap0", {layers: 'basic'} );
+ map.addLayer(layer);
+
+ vlayer = new OpenLayers.Layer.Vector( "Editable" );
+ map.addLayer(vlayer);
+
+
+ zb = new OpenLayers.Control.ZoomBox();
+ var panel = new OpenLayers.Control.Panel({defaultControl: zb});
+ panel.addControls([
+ new OpenLayers.Control.MouseDefaults(),
+ zb,
+ new OpenLayers.Control.DrawFeature(vlayer, OpenLayers.Handler.Path),
+ new OpenLayers.Control.ZoomToMaxExtent()
+ ]);
+ map.addControl(panel);
+
+ map.setCenter(new OpenLayers.LonLat(lon, lat), zoom);
+ }
+ // -->
+ </script>
+ </head>
+ <body onload="init()">
+ <div id="panel"></div>
+ <div id="map"></div>
+ </body>
+</html>
Modified: tags/openlayers/release-2.4-rc3/lib/OpenLayers/Ajax.js
===================================================================
--- branches/openlayers/2.4/lib/OpenLayers/Ajax.js 2007-05-02 14:01:13 UTC (rev 3111)
+++ tags/openlayers/release-2.4-rc3/lib/OpenLayers/Ajax.js 2007-05-02 14:20:28 UTC (rev 3113)
@@ -1,5 +1,5 @@
-/* Copyright (c) 2006 MetaCarta, Inc., published under a modified BSD license.
- * See http://svn.openlayers.org/trunk/openlayers/repository-license.txt
+/* Copyright (c) 2006 MetaCarta, Inc., published under the BSD license.
+ * See http://svn.openlayers.org/trunk/openlayers/release-license.txt
* for the full text of the license. */
Modified: tags/openlayers/release-2.4-rc3/lib/OpenLayers/BaseTypes.js
===================================================================
--- branches/openlayers/2.4/lib/OpenLayers/BaseTypes.js 2007-05-02 14:01:13 UTC (rev 3111)
+++ tags/openlayers/release-2.4-rc3/lib/OpenLayers/BaseTypes.js 2007-05-02 14:20:28 UTC (rev 3113)
@@ -1,5 +1,5 @@
-/* Copyright (c) 2006 MetaCarta, Inc., published under a modified BSD license.
- * See http://svn.openlayers.org/trunk/openlayers/repository-license.txt
+/* Copyright (c) 2006 MetaCarta, Inc., published under the BSD license.
+ * See http://svn.openlayers.org/trunk/openlayers/release-license.txt
* for the full text of the license. */
Modified: tags/openlayers/release-2.4-rc3/lib/OpenLayers/Control/ArgParser.js
===================================================================
--- branches/openlayers/2.4/lib/OpenLayers/Control/ArgParser.js 2007-05-02 14:01:13 UTC (rev 3111)
+++ tags/openlayers/release-2.4-rc3/lib/OpenLayers/Control/ArgParser.js 2007-05-02 14:20:28 UTC (rev 3113)
@@ -1,5 +1,5 @@
-/* Copyright (c) 2006 MetaCarta, Inc., published under a modified BSD license.
- * See http://svn.openlayers.org/trunk/openlayers/repository-license.txt
+/* Copyright (c) 2006 MetaCarta, Inc., published under the BSD license.
+ * See http://svn.openlayers.org/trunk/openlayers/release-license.txt
* for the full text of the license. */
Modified: tags/openlayers/release-2.4-rc3/lib/OpenLayers/Control/DragPan.js
===================================================================
--- branches/openlayers/2.4/lib/OpenLayers/Control/DragPan.js 2007-05-02 14:01:13 UTC (rev 3111)
+++ tags/openlayers/release-2.4-rc3/lib/OpenLayers/Control/DragPan.js 2007-05-02 14:20:28 UTC (rev 3113)
@@ -1,5 +1,5 @@
-/* Copyright (c) 2006 MetaCarta, Inc., published under a modified BSD license.
- * See http://svn.openlayers.org/trunk/openlayers/repository-license.txt
+/* Copyright (c) 2006 MetaCarta, Inc., published under the BSD license.
+ * See http://svn.openlayers.org/trunk/openlayers/release-license.txt
* for the full text of the license. */
/**
Modified: tags/openlayers/release-2.4-rc3/lib/OpenLayers/Control/DrawFeature.js
===================================================================
--- branches/openlayers/2.4/lib/OpenLayers/Control/DrawFeature.js 2007-05-02 14:01:13 UTC (rev 3111)
+++ tags/openlayers/release-2.4-rc3/lib/OpenLayers/Control/DrawFeature.js 2007-05-02 14:20:28 UTC (rev 3113)
@@ -1,5 +1,5 @@
-/* Copyright (c) 2006 MetaCarta, Inc., published under a modified BSD license.
- * See http://svn.openlayers.org/trunk/openlayers/repository-license.txt
+/* Copyright (c) 2006 MetaCarta, Inc., published under the BSD license.
+ * See http://svn.openlayers.org/trunk/openlayers/release-license.txt
* for the full text of the license. */
Modified: tags/openlayers/release-2.4-rc3/lib/OpenLayers/Control/EditingToolbar.js
===================================================================
--- branches/openlayers/2.4/lib/OpenLayers/Control/EditingToolbar.js 2007-05-02 14:01:13 UTC (rev 3111)
+++ tags/openlayers/release-2.4-rc3/lib/OpenLayers/Control/EditingToolbar.js 2007-05-02 14:20:28 UTC (rev 3113)
@@ -1,5 +1,5 @@
-/* Copyright (c) 2006 MetaCarta, Inc., published under a modified BSD license.
- * See http://svn.openlayers.org/trunk/openlayers/repository-license.txt
+/* Copyright (c) 2006 MetaCarta, Inc., published under the BSD license.
+ * See http://svn.openlayers.org/trunk/openlayers/release-license.txt
* for the full text of the license. */
/**
Modified: tags/openlayers/release-2.4-rc3/lib/OpenLayers/Control/KeyboardDefaults.js
===================================================================
--- branches/openlayers/2.4/lib/OpenLayers/Control/KeyboardDefaults.js 2007-05-02 14:01:13 UTC (rev 3111)
+++ tags/openlayers/release-2.4-rc3/lib/OpenLayers/Control/KeyboardDefaults.js 2007-05-02 14:20:28 UTC (rev 3113)
@@ -1,5 +1,5 @@
-/* Copyright (c) 2006 MetaCarta, Inc., published under a modified BSD license.
- * See http://svn.openlayers.org/trunk/openlayers/repository-license.txt
+/* Copyright (c) 2006 MetaCarta, Inc., published under the BSD license.
+ * See http://svn.openlayers.org/trunk/openlayers/release-license.txt
* for the full text of the license. */
Modified: tags/openlayers/release-2.4-rc3/lib/OpenLayers/Control/LayerSwitcher.js
===================================================================
--- branches/openlayers/2.4/lib/OpenLayers/Control/LayerSwitcher.js 2007-05-02 14:01:13 UTC (rev 3111)
+++ tags/openlayers/release-2.4-rc3/lib/OpenLayers/Control/LayerSwitcher.js 2007-05-02 14:20:28 UTC (rev 3113)
@@ -1,5 +1,5 @@
-/* Copyright (c) 2006 MetaCarta, Inc., published under a modified BSD license.
- * See http://svn.openlayers.org/trunk/openlayers/repository-license.txt
+/* Copyright (c) 2006 MetaCarta, Inc., published under the BSD license.
+ * See http://svn.openlayers.org/trunk/openlayers/release-license.txt
* for the full text of the license. */
/**
Modified: tags/openlayers/release-2.4-rc3/lib/OpenLayers/Control/MouseDefaults.js
===================================================================
--- branches/openlayers/2.4/lib/OpenLayers/Control/MouseDefaults.js 2007-05-02 14:01:13 UTC (rev 3111)
+++ tags/openlayers/release-2.4-rc3/lib/OpenLayers/Control/MouseDefaults.js 2007-05-02 14:20:28 UTC (rev 3113)
@@ -1,5 +1,5 @@
-/* Copyright (c) 2006 MetaCarta, Inc., published under a modified BSD license.
- * See http://svn.openlayers.org/trunk/openlayers/repository-license.txt
+/* Copyright (c) 2006 MetaCarta, Inc., published under the BSD license.
+ * See http://svn.openlayers.org/trunk/openlayers/release-license.txt
* for the full text of the license. */
/**
Modified: tags/openlayers/release-2.4-rc3/lib/OpenLayers/Control/MousePosition.js
===================================================================
--- branches/openlayers/2.4/lib/OpenLayers/Control/MousePosition.js 2007-05-02 14:01:13 UTC (rev 3111)
+++ tags/openlayers/release-2.4-rc3/lib/OpenLayers/Control/MousePosition.js 2007-05-02 14:20:28 UTC (rev 3113)
@@ -1,5 +1,5 @@
-/* Copyright (c) 2006 MetaCarta, Inc., published under a modified BSD license.
- * See http://svn.openlayers.org/trunk/openlayers/repository-license.txt
+/* Copyright (c) 2006 MetaCarta, Inc., published under the BSD license.
+ * See http://svn.openlayers.org/trunk/openlayers/release-license.txt
* for the full text of the license. */
Modified: tags/openlayers/release-2.4-rc3/lib/OpenLayers/Control/MouseToolbar.js
===================================================================
--- branches/openlayers/2.4/lib/OpenLayers/Control/MouseToolbar.js 2007-05-02 14:01:13 UTC (rev 3111)
+++ tags/openlayers/release-2.4-rc3/lib/OpenLayers/Control/MouseToolbar.js 2007-05-02 14:20:28 UTC (rev 3113)
@@ -1,5 +1,5 @@
-/* Copyright (c) 2006 MetaCarta, Inc., published under a modified BSD license.
- * See http://svn.openlayers.org/trunk/openlayers/repository-license.txt
+/* Copyright (c) 2006 MetaCarta, Inc., published under the BSD license.
+ * See http://svn.openlayers.org/trunk/openlayers/release-license.txt
* for the full text of the license. */
Modified: tags/openlayers/release-2.4-rc3/lib/OpenLayers/Control/NavToolbar.js
===================================================================
--- branches/openlayers/2.4/lib/OpenLayers/Control/NavToolbar.js 2007-05-02 14:01:13 UTC (rev 3111)
+++ tags/openlayers/release-2.4-rc3/lib/OpenLayers/Control/NavToolbar.js 2007-05-02 14:20:28 UTC (rev 3113)
@@ -1,5 +1,5 @@
-/* Copyright (c) 2006 MetaCarta, Inc., published under a modified BSD license.
- * See http://svn.openlayers.org/trunk/openlayers/repository-license.txt
+/* Copyright (c) 2006 MetaCarta, Inc., published under the BSD license.
+ * See http://svn.openlayers.org/trunk/openlayers/release-license.txt
* for the full text of the license. */
/**
Modified: tags/openlayers/release-2.4-rc3/lib/OpenLayers/Control/Navigation.js
===================================================================
--- branches/openlayers/2.4/lib/OpenLayers/Control/Navigation.js 2007-05-02 14:01:13 UTC (rev 3111)
+++ tags/openlayers/release-2.4-rc3/lib/OpenLayers/Control/Navigation.js 2007-05-02 14:20:28 UTC (rev 3113)
@@ -1,5 +1,5 @@
-/* Copyright (c) 2006 MetaCarta, Inc., published under a modified BSD license.
- * See http://svn.openlayers.org/trunk/openlayers/repository-license.txt
+/* Copyright (c) 2006 MetaCarta, Inc., published under the BSD license.
+ * See http://svn.openlayers.org/trunk/openlayers/release-license.txt
* for the full text of the license. */
/**
Deleted: tags/openlayers/release-2.4-rc3/lib/OpenLayers/Control/OverviewMap.js
===================================================================
--- branches/openlayers/2.4/lib/OpenLayers/Control/OverviewMap.js 2007-05-02 14:01:13 UTC (rev 3111)
+++ tags/openlayers/release-2.4-rc3/lib/OpenLayers/Control/OverviewMap.js 2007-05-02 14:20:28 UTC (rev 3113)
@@ -1,608 +0,0 @@
-/* Copyright (c) 2006 MetaCarta, Inc., published under a modified BSD license.
- * See http://svn.openlayers.org/trunk/openlayers/repository-license.txt
- * for the full text of the license. */
-/**
- * @fileoverview Locator Map Control
- * @author Tim Schaub
- */
-
-/**
- * @class
- *
- * @requires OpenLayers/Control.js
- * @requires OpenLayers/BaseTypes.js
- * @requires OpenLayers/Events.js
- */
-OpenLayers.Control.OverviewMap = OpenLayers.Class.create();
-
-OpenLayers.Control.OverviewMap.prototype =
- OpenLayers.Class.inherit( OpenLayers.Control, {
-
- /** For div.id
- * @type String */
- id: "OverviewMap",
-
- /** @type DOMElement */
- element: null,
-
- /**
- * The overvew map itself.
- * @type OpenLayers.Map
- */
- ovmap: null,
-
- /**
- * The overvew map size in pixels. Note that this is the size of the map
- * itself - the element that contains the map (default class name
- * olControlOverviewMapElement) may have padding or other style attributes
- * added via CSS.
- * @type OpenLayers.Size
- */
- size: new OpenLayers.Size(180, 90),
-
- /**
- * Ordered list of layers in the overview map. If none are sent at
- * construction, then the default below is used.
- *
- * @type Array(OpenLayers.Layer)
- */
- layers: null,
-
- /**
- * The ratio of the overview map resolution to the main map resolution
- * at which to zoom farther out on the overview map.
- * @type Float
- */
- minRatio: 8,
-
- /**
- * The ratio of the overview map resolution to the main map resolution
- * at which to zoom farther in on the overview map.
- * @type Float
- */
- maxRatio: 32,
-
- /**
- * An object containing any non-default properties to be sent to the
- * overview map's map constructor. These should include any non-default
- * options that the main map was constructed with.
- * @type: Object
- */
- mapOptions: null,
-
- /**
- * @constructor
- * @param {Object} options Hashtable of options to set on the overview map
- */
- initialize: function(options) {
- this.layers = new Array();
- OpenLayers.Control.prototype.initialize.apply(this, [options]);
- },
-
- /**
- *
- */
- destroy: function() {
- if (!this.mapDiv) { // we've already been destroyed
- return;
- }
- this.mapDiv.removeChild(this.extentRectangle);
- this.extentRectangle = null;
- this.rectEvents.destroy();
- this.rectEvents = null;
-
- this.ovmap.destroy();
- this.ovmap = null;
-
- this.element.removeChild(this.mapDiv);
- this.mapDiv = null;
- this.mapDivEvents.destroy();
- this.mapDivEvents = null;
-
- this.div.removeChild(this.element);
- this.element = null;
- this.elementEvents.destroy();
- this.elementEvents = null;
-
- if (this.maximizeDiv) {
- OpenLayers.Event.stopObservingElement(this.maximizeDiv);
- this.div.removeChild(this.maximizeDiv);
- this.maximizeDiv = null;
- }
-
- if (this.minimizeDiv) {
- OpenLayers.Event.stopObservingElement(this.minimizeDiv);
- this.div.removeChild(this.minimizeDiv);
- this.minimizeDiv = null;
- }
-
- this.map.events.unregister('moveend', this, this.update);
- this.map.events.unregister("changebaselayer", this,
- this.baseLayerDraw);
-
- OpenLayers.Control.prototype.destroy.apply(this, arguments);
- },
-
- /**
- * @type DOMElement
- */
- draw: function() {
- OpenLayers.Control.prototype.draw.apply(this, arguments);
- if(!(this.layers.length > 0)) {
- if (this.map.baseLayer) {
- var layer = this.map.baseLayer.clone();
- this.layers = [layer];
- } else {
- this.map.events.register("changebaselayer", this, this.baseLayerDraw);
- return this.div;
- }
- }
-
- // create overview map DOM elements
- this.element = document.createElement('div');
- this.element.className = this.displayClass + 'Element';
- this.element.style.display = 'none';
-
- this.mapDiv = document.createElement('div');
- this.mapDiv.style.width = this.size.w + 'px';
- this.mapDiv.style.height = this.size.h + 'px';
- this.mapDiv.style.position = 'relative';
- this.mapDiv.style.overflow = 'hidden';
- this.mapDiv.id = OpenLayers.Util.createUniqueID('overviewMap');
-
- this.extentRectangle = document.createElement('div');
- this.extentRectangle.style.position = 'absolute';
- this.extentRectangle.style.zIndex = 1000; //HACK
- this.extentRectangle.style.overflow = 'hidden';
- this.extentRectangle.style.backgroundImage = 'url(' +
- OpenLayers.Util.getImagesLocation() +
- 'blank.gif)';
- this.extentRectangle.className = this.displayClass+'ExtentRectangle';
- this.mapDiv.appendChild(this.extentRectangle);
-
- this.element.appendChild(this.mapDiv);
-
- this.div.appendChild(this.element);
-
- this.map.events.register('moveend', this, this.update);
-
- // Set up events. The image div recenters the map on click.
- // The extent rectangle can be dragged to recenter the map.
- // If the mousedown happened elsewhere, then mousemove and mouseup
- // should slip through.
- this.elementEvents = new OpenLayers.Events(this, this.element);
- this.elementEvents.register('mousedown', this, function(e) {
- OpenLayers.Event.stop(e);
- });
- this.elementEvents.register('click', this, function(e) {
- OpenLayers.Event.stop(e);
- });
- this.elementEvents.register('dblclick', this, function(e) {
- OpenLayers.Event.stop(e);
- });
- this.rectEvents = new OpenLayers.Events(this, this.extentRectangle);
- this.rectEvents.register('mouseout', this, this.rectMouseOut);
- this.rectEvents.register('mousedown', this, this.rectMouseDown);
- this.rectEvents.register('mousemove', this, this.rectMouseMove);
- this.rectEvents.register('mouseup', this, this.rectMouseUp);
- this.rectEvents.register('click', this, function(e) {
- OpenLayers.Event.stop(e);
- });
- this.rectEvents.register('dblclick', this, this.rectDblClick );
- this.mapDivEvents = new OpenLayers.Events(this, this.mapDiv);
- this.mapDivEvents.register('click', this, this.mapDivClick);
-
- // Optionally add min/max buttons if the control will go in the
- // map viewport.
- if(!this.outsideViewport) {
- this.div.className = this.displayClass + 'Container';
- var imgLocation = OpenLayers.Util.getImagesLocation();
- // maximize button div
- var img = imgLocation + 'layer-switcher-maximize.png';
- this.maximizeDiv = OpenLayers.Util.createAlphaImageDiv(
- this.displayClass + 'MaximizeButton',
- null,
- new OpenLayers.Size(18,18),
- img,
- 'absolute');
- this.maximizeDiv.style.display = 'none';
- this.maximizeDiv.className = this.displayClass + 'MaximizeButton';
- OpenLayers.Event.observe(this.maximizeDiv,
- 'click',
- this.maximizeControl.bindAsEventListener(this));
- OpenLayers.Event.observe(this.maximizeDiv,
- 'dblclick',
- function(e) {
- OpenLayers.Event.stop(e);
- });
- this.div.appendChild(this.maximizeDiv);
-
- // minimize button div
- var img = imgLocation + 'layer-switcher-minimize.png';
- this.minimizeDiv = OpenLayers.Util.createAlphaImageDiv(
- 'OpenLayers_Control_minimizeDiv',
- null,
- new OpenLayers.Size(18,18),
- img,
- 'absolute');
- this.minimizeDiv.style.display = 'none';
- this.minimizeDiv.className = this.displayClass + 'MinimizeButton';
- OpenLayers.Event.observe(this.minimizeDiv,
- 'click',
- this.minimizeControl.bindAsEventListener(this));
- OpenLayers.Event.observe(this.minimizeDiv,
- 'dblclick',
- function(e) {
- OpenLayers.Event.stop(e);
- });
- this.div.appendChild(this.minimizeDiv);
-
- this.minimizeControl();
- } else {
- // show the overview map
- this.element.style.display = '';
- }
- if(this.map.getExtent()) {
- this.update();
- }
- return this.div;
- },
-
- baseLayerDraw: function() {
- this.draw();
- this.map.events.unregister("changebaselayer", this, this.baseLayerDraw);
- },
-
- /**
- * @param {OpenLayers.Event} evt
- */
- rectMouseOut: function (evt) {
- if(this.rectDragStart != null) {
- if(this.performedRectDrag) {
- this.rectMouseMove(evt);
- var rectPxBounds = this.getRectPxBounds();
- // if we're off of the overview map, update the main map
- // otherwise, keep moving the rect
- if((rectPxBounds.top <= 0) || (rectPxBounds.left <= 0) ||
- (rectPxBounds.bottom >= this.size.h - this.hComp) ||
- (rectPxBounds.right >= this.size.w - this.wComp)) {
- this.updateMapToRect();
- } else {
- return;
- }
- }
- document.onselectstart = null;
- this.rectDragStart = null;
- }
- },
-
- /**
- * @param {OpenLayers.Event} evt
- */
- rectMouseDown: function (evt) {
- if(!OpenLayers.Event.isLeftClick(evt)) return;
- this.rectDragStart = evt.xy.clone();
- this.performedRectDrag = false;
- OpenLayers.Event.stop(evt);
- },
-
- /**
- * @param {OpenLayers.Event} evt
- */
- rectMouseMove: function(evt) {
- if(this.rectDragStart != null) {
- var deltaX = this.rectDragStart.x - evt.xy.x;
- var deltaY = this.rectDragStart.y - evt.xy.y;
- var rectPxBounds = this.getRectPxBounds();
- var rectTop = rectPxBounds.top;
- var rectLeft = rectPxBounds.left;
- var rectHeight = Math.abs(rectPxBounds.getHeight());
- var rectWidth = rectPxBounds.getWidth();
- // don't allow dragging off of parent element
- var newTop = Math.max(0, (rectTop - deltaY));
- newTop = Math.min(newTop,
- this.ovmap.size.h - this.hComp - rectHeight);
- var newLeft = Math.max(0, (rectLeft - deltaX));
- newLeft = Math.min(newLeft,
- this.ovmap.size.w - this.wComp - rectWidth);
- this.setRectPxBounds(new OpenLayers.Bounds(newLeft,
- newTop + rectHeight,
- newLeft + rectWidth,
- newTop));
- this.rectDragStart = evt.xy.clone();
- this.performedRectDrag = true;
- OpenLayers.Event.stop(evt);
- }
- },
-
- /**
- * @param {OpenLayers.Event} evt
- */
- rectMouseUp: function(evt) {
- if(!OpenLayers.Event.isLeftClick(evt)) return;
- if(this.performedRectDrag) {
- this.updateMapToRect();
- OpenLayers.Event.stop(evt);
- }
- document.onselectstart = null;
- this.rectDragStart = null;
- },
-
- /**
- * @param {OpenLayers.Event} evt
- */
- rectDblClick: function(evt) {
- this.performedRectDrag = false;
- OpenLayers.Event.stop(evt);
- this.updateOverview();
- },
-
- /**
- * @param {OpenLayers.Event} evt
- */
- mapDivClick: function(evt) {
- var pxBounds = this.getRectPxBounds();
- var pxCenter = pxBounds.getCenterPixel();
- var deltaX = evt.xy.x - pxCenter.x;
- var deltaY = evt.xy.y - pxCenter.y;
- var top = pxBounds.top;
- var left = pxBounds.left;
- var height = Math.abs(pxBounds.getHeight());
- var width = pxBounds.getWidth();
- var newTop = Math.max(0, (top + deltaY));
- newTop = Math.min(newTop, this.ovmap.size.h - height);
- var newLeft = Math.max(0, (left + deltaX));
- newLeft = Math.min(newLeft, this.ovmap.size.w - width);
- this.setRectPxBounds(new OpenLayers.Bounds(newLeft,
- newTop + height,
- newLeft + width,
- newTop));
- this.updateMapToRect();
- OpenLayers.Event.stop(evt);
- },
-
- /** Set up the labels and divs for the control
- *
- * @param {OpenLayers.Event} e
- */
- maximizeControl: function(e) {
- this.element.style.display = '';
- this.showToggle(false);
- if (e != null) {
- OpenLayers.Event.stop(e);
- }
- },
-
- /** Hide all the contents of the control, shrink the size,
- * add the maximize icon
- *
- * @param {OpenLayers.Event} e
- */
- minimizeControl: function(e) {
- this.element.style.display = 'none';
- this.showToggle(true);
- if (e != null) {
- OpenLayers.Event.stop(e);
- }
- },
-
- /** Hide/Show all LayerSwitcher controls depending on whether we are
- * minimized or not
- *
- * @private
- *
- * @param {Boolean} minimize
- */
- showToggle: function(minimize) {
- this.maximizeDiv.style.display = minimize ? '' : 'none';
- this.minimizeDiv.style.display = minimize ? 'none' : '';
- },
-
- /**
- * Update the overview map after layers move.
- */
- update: function() {
- if(this.ovmap == null) {
- this.createMap();
- }
-
- if(!this.isSuitableOverview()) {
- this.updateOverview();
- }
-
- // update extent rectangle
- this.updateRectToMap();
- },
-
- /**
- * Determines if the overview map is suitable given the extent and
- * resolution of the main map.
- */
- isSuitableOverview: function() {
- var mapExtent = this.map.getExtent();
- var maxExtent = this.map.maxExtent;
- var testExtent = new OpenLayers.Bounds(
- Math.max(mapExtent.left, maxExtent.left),
- Math.max(mapExtent.bottom, maxExtent.bottom),
- Math.min(mapExtent.right, maxExtent.right),
- Math.min(mapExtent.top, maxExtent.top));
- var resRatio = this.ovmap.getResolution() / this.map.getResolution();
- return ((resRatio > this.minRatio) &&
- (resRatio <= this.maxRatio) &&
- (this.ovmap.getExtent().containsBounds(testExtent)));
- },
-
- updateOverview: function() {
- var mapRes = this.map.getResolution();
- var targetRes = this.ovmap.getResolution();
- var resRatio = targetRes / mapRes;
- if(resRatio > this.maxRatio) {
- // zoom in overview map
- targetRes = this.minRatio * mapRes;
- } else if(resRatio <= this.minRatio) {
- // zoom out overview map
- targetRes = this.maxRatio * mapRes;
- }
- this.ovmap.setCenter(this.map.center,
- this.ovmap.getZoomForResolution(targetRes));
- this.updateRectToMap();
- },
-
- createMap: function() {
- // create the overview map
- var options = OpenLayers.Util.extend(
- {controls: [], maxResolution: 'auto'}, this.mapOptions);
- this.ovmap = new OpenLayers.Map(this.mapDiv.id, options);
- this.ovmap.addLayers(this.layers);
- this.ovmap.zoomToMaxExtent();
- // check extent rectangle border width
- this.wComp = parseInt(OpenLayers.Element.getStyle(this.extentRectangle,
- 'border-left-width')) +
- parseInt(OpenLayers.Element.getStyle(this.extentRectangle,
- 'border-right-width'));
- this.wComp = (this.wComp) ? this.wComp : 2;
- this.hComp = parseInt(OpenLayers.Element.getStyle(this.extentRectangle,
- 'border-top-width')) +
- parseInt(OpenLayers.Element.getStyle(this.extentRectangle,
- 'border-bottom-width'));
- this.hComp = (this.hComp) ? this.hComp : 2;
- },
-
- /**
- * Updates the extent rectangle position and size to match the map extent
- */
- updateRectToMap: function() {
- // The base layer for overview map needs to be in the same projection
- // as the base layer for the main map. This should be made more robust.
- if(this.map.units != 'degrees') {
- if(this.ovmap.getProjection() && (this.map.getProjection() != this.ovmap.getProjection())) {
- alert('The overview map only works when it is in the same projection as the main map');
- }
- }
- var pxBounds = this.getRectBoundsFromMapBounds(this.map.getExtent());
- if (pxBounds) {
- this.setRectPxBounds(pxBounds);
- }
- },
-
- /**
- * Updates the map extent to match the extent rectangle position and size
- */
- updateMapToRect: function() {
- var pxBounds = this.getRectPxBounds();
- var lonLatBounds = this.getMapBoundsFromRectBounds(pxBounds);
- this.map.setCenter(lonLatBounds.getCenterLonLat(), this.map.zoom);
- },
-
- /**
- * Get extent rectangle pixel bounds
- * @returns An OpenLayers.Bounds wich is the extent rectangle's pixel
- * bounds (relative to the parent element)
- */
- getRectPxBounds: function() {
- var top = parseInt(this.extentRectangle.style.top);
- var left = parseInt(this.extentRectangle.style.left);
- var height = parseInt(this.extentRectangle.style.height);
- var width = parseInt(this.extentRectangle.style.width);
- return new OpenLayers.Bounds(left, top + height, left + width, top);
- },
-
- /**
- * Set extent rectangle pixel bounds.
- * @param {OpenLayers.Bounds} pxBounds
- */
- setRectPxBounds: function(pxBounds) {
- var top = Math.max(pxBounds.top, 0);
- var left = Math.max(pxBounds.left, 0);
- var bottom = Math.min(pxBounds.top + Math.abs(pxBounds.getHeight()),
- this.ovmap.size.h - this.hComp);
- var right = Math.min(pxBounds.left + pxBounds.getWidth(),
- this.ovmap.size.w - this.wComp);
- this.extentRectangle.style.top = parseInt(top) + 'px';
- this.extentRectangle.style.left = parseInt(left) + 'px';
- this.extentRectangle.style.height = parseInt(bottom - top)+ 'px';
- this.extentRectangle.style.width = parseInt(right - left) + 'px';
- },
-
- /**
- * @param {OpenLayers.Bounds} lonLatBounds
- *
- * @returns An OpenLayers.Bounds which is the passed-in map lon/lat extent
- * translated into pixel bounds for the overview map
- * @type OpenLayers.Bounds
- */
- getRectBoundsFromMapBounds: function(lonLatBounds) {
- var leftBottomLonLat = new OpenLayers.LonLat(lonLatBounds.left,
- lonLatBounds.bottom);
- var rightTopLonLat = new OpenLayers.LonLat(lonLatBounds.right,
- lonLatBounds.top);
- var leftBottomPx = this.getOverviewPxFromLonLat(leftBottomLonLat);
- var rightTopPx = this.getOverviewPxFromLonLat(rightTopLonLat);
- var bounds = null;
- if (leftBottomPx && rightTopPx) {
- bounds = new OpenLayers.Bounds(leftBottomPx.x, leftBottomPx.y,
- rightTopPx.x, rightTopPx.y);
- }
- return bounds;
- },
-
- /**
- * @param {OpenLayers.Bounds} pxBounds
- *
- * @returns An OpenLayers.Bounds which is the passed-in overview rect bounds
- * translated into lon/lat bounds for the overview map
- * @type OpenLayers.Bounds
- */
- getMapBoundsFromRectBounds: function(pxBounds) {
- var leftBottomPx = new OpenLayers.Pixel(pxBounds.left,
- pxBounds.bottom);
- var rightTopPx = new OpenLayers.Pixel(pxBounds.right,
- pxBounds.top);
- var leftBottomLonLat = this.getLonLatFromOverviewPx(leftBottomPx);
- var rightTopLonLat = this.getLonLatFromOverviewPx(rightTopPx);
- return new OpenLayers.Bounds(leftBottomLonLat.lon, leftBottomLonLat.lat,
- rightTopLonLat.lon, rightTopLonLat.lat);
- },
-
- /**
- * @param {OpenLayers.Pixel} overviewMapPx
- *
- * @returns An OpenLayers.LonLat which is the passed-in overview map
- * OpenLayers.Pixel, translated into lon/lat by the overview map
- * @type OpenLayers.LonLat
- */
- getLonLatFromOverviewPx: function(overviewMapPx) {
- var size = this.ovmap.size;
- var res = this.ovmap.getResolution();
- var center = this.ovmap.getExtent().getCenterLonLat();
-
- var delta_x = overviewMapPx.x - (size.w / 2);
- var delta_y = overviewMapPx.y - (size.h / 2);
-
- return new OpenLayers.LonLat(center.lon + delta_x * res ,
- center.lat - delta_y * res);
- },
-
- /**
- * @param {OpenLayers.LonLat} lonlat
- *
- * @returns An OpenLayers.Pixel which is the passed-in OpenLayers.LonLat,
- * translated into overview map pixels
- * @type OpenLayers.Pixel
- */
- getOverviewPxFromLonLat: function(lonlat) {
- var res = this.ovmap.getResolution();
- var extent = this.ovmap.getExtent();
- var px = null;
- if (extent) {
- px = new OpenLayers.Pixel(
- Math.round(1/res * (lonlat.lon - extent.left)),
- Math.round(1/res * (extent.top - lonlat.lat)));
- }
- return px;
- },
-
- /** @final @type String */
- CLASS_NAME: 'OpenLayers.Control.OverviewMap'
-
-});
Copied: tags/openlayers/release-2.4-rc3/lib/OpenLayers/Control/OverviewMap.js (from rev 3112, branches/openlayers/2.4/lib/OpenLayers/Control/OverviewMap.js)
===================================================================
--- tags/openlayers/release-2.4-rc3/lib/OpenLayers/Control/OverviewMap.js (rev 0)
+++ tags/openlayers/release-2.4-rc3/lib/OpenLayers/Control/OverviewMap.js 2007-05-02 14:20:28 UTC (rev 3113)
@@ -0,0 +1,608 @@
+/* Copyright (c) 2006 MetaCarta, Inc., published under the BSD license.
+ * See http://svn.openlayers.org/trunk/openlayers/release-license.txt
+ * for the full text of the license. */
+/**
+ * @fileoverview Locator Map Control
+ * @author Tim Schaub
+ */
+
+/**
+ * @class
+ *
+ * @requires OpenLayers/Control.js
+ * @requires OpenLayers/BaseTypes.js
+ * @requires OpenLayers/Events.js
+ */
+OpenLayers.Control.OverviewMap = OpenLayers.Class.create();
+
+OpenLayers.Control.OverviewMap.prototype =
+ OpenLayers.Class.inherit( OpenLayers.Control, {
+
+ /** For div.id
+ * @type String */
+ id: "OverviewMap",
+
+ /** @type DOMElement */
+ element: null,
+
+ /**
+ * The overvew map itself.
+ * @type OpenLayers.Map
+ */
+ ovmap: null,
+
+ /**
+ * The overvew map size in pixels. Note that this is the size of the map
+ * itself - the element that contains the map (default class name
+ * olControlOverviewMapElement) may have padding or other style attributes
+ * added via CSS.
+ * @type OpenLayers.Size
+ */
+ size: new OpenLayers.Size(180, 90),
+
+ /**
+ * Ordered list of layers in the overview map. If none are sent at
+ * construction, then the default below is used.
+ *
+ * @type Array(OpenLayers.Layer)
+ */
+ layers: null,
+
+ /**
+ * The ratio of the overview map resolution to the main map resolution
+ * at which to zoom farther out on the overview map.
+ * @type Float
+ */
+ minRatio: 8,
+
+ /**
+ * The ratio of the overview map resolution to the main map resolution
+ * at which to zoom farther in on the overview map.
+ * @type Float
+ */
+ maxRatio: 32,
+
+ /**
+ * An object containing any non-default properties to be sent to the
+ * overview map's map constructor. These should include any non-default
+ * options that the main map was constructed with.
+ * @type: Object
+ */
+ mapOptions: null,
+
+ /**
+ * @constructor
+ * @param {Object} options Hashtable of options to set on the overview map
+ */
+ initialize: function(options) {
+ this.layers = new Array();
+ OpenLayers.Control.prototype.initialize.apply(this, [options]);
+ },
+
+ /**
+ *
+ */
+ destroy: function() {
+ if (!this.mapDiv) { // we've already been destroyed
+ return;
+ }
+ this.mapDiv.removeChild(this.extentRectangle);
+ this.extentRectangle = null;
+ this.rectEvents.destroy();
+ this.rectEvents = null;
+
+ this.ovmap.destroy();
+ this.ovmap = null;
+
+ this.element.removeChild(this.mapDiv);
+ this.mapDiv = null;
+ this.mapDivEvents.destroy();
+ this.mapDivEvents = null;
+
+ this.div.removeChild(this.element);
+ this.element = null;
+ this.elementEvents.destroy();
+ this.elementEvents = null;
+
+ if (this.maximizeDiv) {
+ OpenLayers.Event.stopObservingElement(this.maximizeDiv);
+ this.div.removeChild(this.maximizeDiv);
+ this.maximizeDiv = null;
+ }
+
+ if (this.minimizeDiv) {
+ OpenLayers.Event.stopObservingElement(this.minimizeDiv);
+ this.div.removeChild(this.minimizeDiv);
+ this.minimizeDiv = null;
+ }
+
+ this.map.events.unregister('moveend', this, this.update);
+ this.map.events.unregister("changebaselayer", this,
+ this.baseLayerDraw);
+
+ OpenLayers.Control.prototype.destroy.apply(this, arguments);
+ },
+
+ /**
+ * @type DOMElement
+ */
+ draw: function() {
+ OpenLayers.Control.prototype.draw.apply(this, arguments);
+ if(!(this.layers.length > 0)) {
+ if (this.map.baseLayer) {
+ var layer = this.map.baseLayer.clone();
+ this.layers = [layer];
+ } else {
+ this.map.events.register("changebaselayer", this, this.baseLayerDraw);
+ return this.div;
+ }
+ }
+
+ // create overview map DOM elements
+ this.element = document.createElement('div');
+ this.element.className = this.displayClass + 'Element';
+ this.element.style.display = 'none';
+
+ this.mapDiv = document.createElement('div');
+ this.mapDiv.style.width = this.size.w + 'px';
+ this.mapDiv.style.height = this.size.h + 'px';
+ this.mapDiv.style.position = 'relative';
+ this.mapDiv.style.overflow = 'hidden';
+ this.mapDiv.id = OpenLayers.Util.createUniqueID('overviewMap');
+
+ this.extentRectangle = document.createElement('div');
+ this.extentRectangle.style.position = 'absolute';
+ this.extentRectangle.style.zIndex = 1000; //HACK
+ this.extentRectangle.style.overflow = 'hidden';
+ this.extentRectangle.style.backgroundImage = 'url(' +
+ OpenLayers.Util.getImagesLocation() +
+ 'blank.gif)';
+ this.extentRectangle.className = this.displayClass+'ExtentRectangle';
+ this.mapDiv.appendChild(this.extentRectangle);
+
+ this.element.appendChild(this.mapDiv);
+
+ this.div.appendChild(this.element);
+
+ this.map.events.register('moveend', this, this.update);
+
+ // Set up events. The image div recenters the map on click.
+ // The extent rectangle can be dragged to recenter the map.
+ // If the mousedown happened elsewhere, then mousemove and mouseup
+ // should slip through.
+ this.elementEvents = new OpenLayers.Events(this, this.element);
+ this.elementEvents.register('mousedown', this, function(e) {
+ OpenLayers.Event.stop(e);
+ });
+ this.elementEvents.register('click', this, function(e) {
+ OpenLayers.Event.stop(e);
+ });
+ this.elementEvents.register('dblclick', this, function(e) {
+ OpenLayers.Event.stop(e);
+ });
+ this.rectEvents = new OpenLayers.Events(this, this.extentRectangle);
+ this.rectEvents.register('mouseout', this, this.rectMouseOut);
+ this.rectEvents.register('mousedown', this, this.rectMouseDown);
+ this.rectEvents.register('mousemove', this, this.rectMouseMove);
+ this.rectEvents.register('mouseup', this, this.rectMouseUp);
+ this.rectEvents.register('click', this, function(e) {
+ OpenLayers.Event.stop(e);
+ });
+ this.rectEvents.register('dblclick', this, this.rectDblClick );
+ this.mapDivEvents = new OpenLayers.Events(this, this.mapDiv);
+ this.mapDivEvents.register('click', this, this.mapDivClick);
+
+ // Optionally add min/max buttons if the control will go in the
+ // map viewport.
+ if(!this.outsideViewport) {
+ this.div.className = this.displayClass + 'Container';
+ var imgLocation = OpenLayers.Util.getImagesLocation();
+ // maximize button div
+ var img = imgLocation + 'layer-switcher-maximize.png';
+ this.maximizeDiv = OpenLayers.Util.createAlphaImageDiv(
+ this.displayClass + 'MaximizeButton',
+ null,
+ new OpenLayers.Size(18,18),
+ img,
+ 'absolute');
+ this.maximizeDiv.style.display = 'none';
+ this.maximizeDiv.className = this.displayClass + 'MaximizeButton';
+ OpenLayers.Event.observe(this.maximizeDiv,
+ 'click',
+ this.maximizeControl.bindAsEventListener(this));
+ OpenLayers.Event.observe(this.maximizeDiv,
+ 'dblclick',
+ function(e) {
+ OpenLayers.Event.stop(e);
+ });
+ this.div.appendChild(this.maximizeDiv);
+
+ // minimize button div
+ var img = imgLocation + 'layer-switcher-minimize.png';
+ this.minimizeDiv = OpenLayers.Util.createAlphaImageDiv(
+ 'OpenLayers_Control_minimizeDiv',
+ null,
+ new OpenLayers.Size(18,18),
+ img,
+ 'absolute');
+ this.minimizeDiv.style.display = 'none';
+ this.minimizeDiv.className = this.displayClass + 'MinimizeButton';
+ OpenLayers.Event.observe(this.minimizeDiv,
+ 'click',
+ this.minimizeControl.bindAsEventListener(this));
+ OpenLayers.Event.observe(this.minimizeDiv,
+ 'dblclick',
+ function(e) {
+ OpenLayers.Event.stop(e);
+ });
+ this.div.appendChild(this.minimizeDiv);
+
+ this.minimizeControl();
+ } else {
+ // show the overview map
+ this.element.style.display = '';
+ }
+ if(this.map.getExtent()) {
+ this.update();
+ }
+ return this.div;
+ },
+
+ baseLayerDraw: function() {
+ this.draw();
+ this.map.events.unregister("changebaselayer", this, this.baseLayerDraw);
+ },
+
+ /**
+ * @param {OpenLayers.Event} evt
+ */
+ rectMouseOut: function (evt) {
+ if(this.rectDragStart != null) {
+ if(this.performedRectDrag) {
+ this.rectMouseMove(evt);
+ var rectPxBounds = this.getRectPxBounds();
+ // if we're off of the overview map, update the main map
+ // otherwise, keep moving the rect
+ if((rectPxBounds.top <= 0) || (rectPxBounds.left <= 0) ||
+ (rectPxBounds.bottom >= this.size.h - this.hComp) ||
+ (rectPxBounds.right >= this.size.w - this.wComp)) {
+ this.updateMapToRect();
+ } else {
+ return;
+ }
+ }
+ document.onselectstart = null;
+ this.rectDragStart = null;
+ }
+ },
+
+ /**
+ * @param {OpenLayers.Event} evt
+ */
+ rectMouseDown: function (evt) {
+ if(!OpenLayers.Event.isLeftClick(evt)) return;
+ this.rectDragStart = evt.xy.clone();
+ this.performedRectDrag = false;
+ OpenLayers.Event.stop(evt);
+ },
+
+ /**
+ * @param {OpenLayers.Event} evt
+ */
+ rectMouseMove: function(evt) {
+ if(this.rectDragStart != null) {
+ var deltaX = this.rectDragStart.x - evt.xy.x;
+ var deltaY = this.rectDragStart.y - evt.xy.y;
+ var rectPxBounds = this.getRectPxBounds();
+ var rectTop = rectPxBounds.top;
+ var rectLeft = rectPxBounds.left;
+ var rectHeight = Math.abs(rectPxBounds.getHeight());
+ var rectWidth = rectPxBounds.getWidth();
+ // don't allow dragging off of parent element
+ var newTop = Math.max(0, (rectTop - deltaY));
+ newTop = Math.min(newTop,
+ this.ovmap.size.h - this.hComp - rectHeight);
+ var newLeft = Math.max(0, (rectLeft - deltaX));
+ newLeft = Math.min(newLeft,
+ this.ovmap.size.w - this.wComp - rectWidth);
+ this.setRectPxBounds(new OpenLayers.Bounds(newLeft,
+ newTop + rectHeight,
+ newLeft + rectWidth,
+ newTop));
+ this.rectDragStart = evt.xy.clone();
+ this.performedRectDrag = true;
+ OpenLayers.Event.stop(evt);
+ }
+ },
+
+ /**
+ * @param {OpenLayers.Event} evt
+ */
+ rectMouseUp: function(evt) {
+ if(!OpenLayers.Event.isLeftClick(evt)) return;
+ if(this.performedRectDrag) {
+ this.updateMapToRect();
+ OpenLayers.Event.stop(evt);
+ }
+ document.onselectstart = null;
+ this.rectDragStart = null;
+ },
+
+ /**
+ * @param {OpenLayers.Event} evt
+ */
+ rectDblClick: function(evt) {
+ this.performedRectDrag = false;
+ OpenLayers.Event.stop(evt);
+ this.updateOverview();
+ },
+
+ /**
+ * @param {OpenLayers.Event} evt
+ */
+ mapDivClick: function(evt) {
+ var pxBounds = this.getRectPxBounds();
+ var pxCenter = pxBounds.getCenterPixel();
+ var deltaX = evt.xy.x - pxCenter.x;
+ var deltaY = evt.xy.y - pxCenter.y;
+ var top = pxBounds.top;
+ var left = pxBounds.left;
+ var height = Math.abs(pxBounds.getHeight());
+ var width = pxBounds.getWidth();
+ var newTop = Math.max(0, (top + deltaY));
+ newTop = Math.min(newTop, this.ovmap.size.h - height);
+ var newLeft = Math.max(0, (left + deltaX));
+ newLeft = Math.min(newLeft, this.ovmap.size.w - width);
+ this.setRectPxBounds(new OpenLayers.Bounds(newLeft,
+ newTop + height,
+ newLeft + width,
+ newTop));
+ this.updateMapToRect();
+ OpenLayers.Event.stop(evt);
+ },
+
+ /** Set up the labels and divs for the control
+ *
+ * @param {OpenLayers.Event} e
+ */
+ maximizeControl: function(e) {
+ this.element.style.display = '';
+ this.showToggle(false);
+ if (e != null) {
+ OpenLayers.Event.stop(e);
+ }
+ },
+
+ /** Hide all the contents of the control, shrink the size,
+ * add the maximize icon
+ *
+ * @param {OpenLayers.Event} e
+ */
+ minimizeControl: function(e) {
+ this.element.style.display = 'none';
+ this.showToggle(true);
+ if (e != null) {
+ OpenLayers.Event.stop(e);
+ }
+ },
+
+ /** Hide/Show all LayerSwitcher controls depending on whether we are
+ * minimized or not
+ *
+ * @private
+ *
+ * @param {Boolean} minimize
+ */
+ showToggle: function(minimize) {
+ this.maximizeDiv.style.display = minimize ? '' : 'none';
+ this.minimizeDiv.style.display = minimize ? 'none' : '';
+ },
+
+ /**
+ * Update the overview map after layers move.
+ */
+ update: function() {
+ if(this.ovmap == null) {
+ this.createMap();
+ }
+
+ if(!this.isSuitableOverview()) {
+ this.updateOverview();
+ }
+
+ // update extent rectangle
+ this.updateRectToMap();
+ },
+
+ /**
+ * Determines if the overview map is suitable given the extent and
+ * resolution of the main map.
+ */
+ isSuitableOverview: function() {
+ var mapExtent = this.map.getExtent();
+ var maxExtent = this.map.maxExtent;
+ var testExtent = new OpenLayers.Bounds(
+ Math.max(mapExtent.left, maxExtent.left),
+ Math.max(mapExtent.bottom, maxExtent.bottom),
+ Math.min(mapExtent.right, maxExtent.right),
+ Math.min(mapExtent.top, maxExtent.top));
+ var resRatio = this.ovmap.getResolution() / this.map.getResolution();
+ return ((resRatio > this.minRatio) &&
+ (resRatio <= this.maxRatio) &&
+ (this.ovmap.getExtent().containsBounds(testExtent)));
+ },
+
+ updateOverview: function() {
+ var mapRes = this.map.getResolution();
+ var targetRes = this.ovmap.getResolution();
+ var resRatio = targetRes / mapRes;
+ if(resRatio > this.maxRatio) {
+ // zoom in overview map
+ targetRes = this.minRatio * mapRes;
+ } else if(resRatio <= this.minRatio) {
+ // zoom out overview map
+ targetRes = this.maxRatio * mapRes;
+ }
+ this.ovmap.setCenter(this.map.center,
+ this.ovmap.getZoomForResolution(targetRes));
+ this.updateRectToMap();
+ },
+
+ createMap: function() {
+ // create the overview map
+ var options = OpenLayers.Util.extend(
+ {controls: [], maxResolution: 'auto'}, this.mapOptions);
+ this.ovmap = new OpenLayers.Map(this.mapDiv.id, options);
+ this.ovmap.addLayers(this.layers);
+ this.ovmap.zoomToMaxExtent();
+ // check extent rectangle border width
+ this.wComp = parseInt(OpenLayers.Element.getStyle(this.extentRectangle,
+ 'border-left-width')) +
+ parseInt(OpenLayers.Element.getStyle(this.extentRectangle,
+ 'border-right-width'));
+ this.wComp = (this.wComp) ? this.wComp : 2;
+ this.hComp = parseInt(OpenLayers.Element.getStyle(this.extentRectangle,
+ 'border-top-width')) +
+ parseInt(OpenLayers.Element.getStyle(this.extentRectangle,
+ 'border-bottom-width'));
+ this.hComp = (this.hComp) ? this.hComp : 2;
+ },
+
+ /**
+ * Updates the extent rectangle position and size to match the map extent
+ */
+ updateRectToMap: function() {
+ // The base layer for overview map needs to be in the same projection
+ // as the base layer for the main map. This should be made more robust.
+ if(this.map.units != 'degrees') {
+ if(this.ovmap.getProjection() && (this.map.getProjection() != this.ovmap.getProjection())) {
+ alert('The overview map only works when it is in the same projection as the main map');
+ }
+ }
+ var pxBounds = this.getRectBoundsFromMapBounds(this.map.getExtent());
+ if (pxBounds) {
+ this.setRectPxBounds(pxBounds);
+ }
+ },
+
+ /**
+ * Updates the map extent to match the extent rectangle position and size
+ */
+ updateMapToRect: function() {
+ var pxBounds = this.getRectPxBounds();
+ var lonLatBounds = this.getMapBoundsFromRectBounds(pxBounds);
+ this.map.setCenter(lonLatBounds.getCenterLonLat(), this.map.zoom);
+ },
+
+ /**
+ * Get extent rectangle pixel bounds
+ * @returns An OpenLayers.Bounds wich is the extent rectangle's pixel
+ * bounds (relative to the parent element)
+ */
+ getRectPxBounds: function() {
+ var top = parseInt(this.extentRectangle.style.top);
+ var left = parseInt(this.extentRectangle.style.left);
+ var height = parseInt(this.extentRectangle.style.height);
+ var width = parseInt(this.extentRectangle.style.width);
+ return new OpenLayers.Bounds(left, top + height, left + width, top);
+ },
+
+ /**
+ * Set extent rectangle pixel bounds.
+ * @param {OpenLayers.Bounds} pxBounds
+ */
+ setRectPxBounds: function(pxBounds) {
+ var top = Math.max(pxBounds.top, 0);
+ var left = Math.max(pxBounds.left, 0);
+ var bottom = Math.min(pxBounds.top + Math.abs(pxBounds.getHeight()),
+ this.ovmap.size.h - this.hComp);
+ var right = Math.min(pxBounds.left + pxBounds.getWidth(),
+ this.ovmap.size.w - this.wComp);
+ this.extentRectangle.style.top = parseInt(top) + 'px';
+ this.extentRectangle.style.left = parseInt(left) + 'px';
+ this.extentRectangle.style.height = parseInt(Math.max(bottom - top, 0))+ 'px';
+ this.extentRectangle.style.width = parseInt(Math.max(right - left, 0)) + 'px';
+ },
+
+ /**
+ * @param {OpenLayers.Bounds} lonLatBounds
+ *
+ * @returns An OpenLayers.Bounds which is the passed-in map lon/lat extent
+ * translated into pixel bounds for the overview map
+ * @type OpenLayers.Bounds
+ */
+ getRectBoundsFromMapBounds: function(lonLatBounds) {
+ var leftBottomLonLat = new OpenLayers.LonLat(lonLatBounds.left,
+ lonLatBounds.bottom);
+ var rightTopLonLat = new OpenLayers.LonLat(lonLatBounds.right,
+ lonLatBounds.top);
+ var leftBottomPx = this.getOverviewPxFromLonLat(leftBottomLonLat);
+ var rightTopPx = this.getOverviewPxFromLonLat(rightTopLonLat);
+ var bounds = null;
+ if (leftBottomPx && rightTopPx) {
+ bounds = new OpenLayers.Bounds(leftBottomPx.x, leftBottomPx.y,
+ rightTopPx.x, rightTopPx.y);
+ }
+ return bounds;
+ },
+
+ /**
+ * @param {OpenLayers.Bounds} pxBounds
+ *
+ * @returns An OpenLayers.Bounds which is the passed-in overview rect bounds
+ * translated into lon/lat bounds for the overview map
+ * @type OpenLayers.Bounds
+ */
+ getMapBoundsFromRectBounds: function(pxBounds) {
+ var leftBottomPx = new OpenLayers.Pixel(pxBounds.left,
+ pxBounds.bottom);
+ var rightTopPx = new OpenLayers.Pixel(pxBounds.right,
+ pxBounds.top);
+ var leftBottomLonLat = this.getLonLatFromOverviewPx(leftBottomPx);
+ var rightTopLonLat = this.getLonLatFromOverviewPx(rightTopPx);
+ return new OpenLayers.Bounds(leftBottomLonLat.lon, leftBottomLonLat.lat,
+ rightTopLonLat.lon, rightTopLonLat.lat);
+ },
+
+ /**
+ * @param {OpenLayers.Pixel} overviewMapPx
+ *
+ * @returns An OpenLayers.LonLat which is the passed-in overview map
+ * OpenLayers.Pixel, translated into lon/lat by the overview map
+ * @type OpenLayers.LonLat
+ */
+ getLonLatFromOverviewPx: function(overviewMapPx) {
+ var size = this.ovmap.size;
+ var res = this.ovmap.getResolution();
+ var center = this.ovmap.getExtent().getCenterLonLat();
+
+ var delta_x = overviewMapPx.x - (size.w / 2);
+ var delta_y = overviewMapPx.y - (size.h / 2);
+
+ return new OpenLayers.LonLat(center.lon + delta_x * res ,
+ center.lat - delta_y * res);
+ },
+
+ /**
+ * @param {OpenLayers.LonLat} lonlat
+ *
+ * @returns An OpenLayers.Pixel which is the passed-in OpenLayers.LonLat,
+ * translated into overview map pixels
+ * @type OpenLayers.Pixel
+ */
+ getOverviewPxFromLonLat: function(lonlat) {
+ var res = this.ovmap.getResolution();
+ var extent = this.ovmap.getExtent();
+ var px = null;
+ if (extent) {
+ px = new OpenLayers.Pixel(
+ Math.round(1/res * (lonlat.lon - extent.left)),
+ Math.round(1/res * (extent.top - lonlat.lat)));
+ }
+ return px;
+ },
+
+ /** @final @type String */
+ CLASS_NAME: 'OpenLayers.Control.OverviewMap'
+
+});
Modified: tags/openlayers/release-2.4-rc3/lib/OpenLayers/Control/PanZoom.js
===================================================================
--- branches/openlayers/2.4/lib/OpenLayers/Control/PanZoom.js 2007-05-02 14:01:13 UTC (rev 3111)
+++ tags/openlayers/release-2.4-rc3/lib/OpenLayers/Control/PanZoom.js 2007-05-02 14:20:28 UTC (rev 3113)
@@ -1,5 +1,5 @@
-/* Copyright (c) 2006 MetaCarta, Inc., published under a modified BSD license.
- * See http://svn.openlayers.org/trunk/openlayers/repository-license.txt
+/* Copyright (c) 2006 MetaCarta, Inc., published under the BSD license.
+ * See http://svn.openlayers.org/trunk/openlayers/release-license.txt
* for the full text of the license. */
Modified: tags/openlayers/release-2.4-rc3/lib/OpenLayers/Control/PanZoomBar.js
===================================================================
--- branches/openlayers/2.4/lib/OpenLayers/Control/PanZoomBar.js 2007-05-02 14:01:13 UTC (rev 3111)
+++ tags/openlayers/release-2.4-rc3/lib/OpenLayers/Control/PanZoomBar.js 2007-05-02 14:20:28 UTC (rev 3113)
@@ -1,5 +1,5 @@
-/* Copyright (c) 2006 MetaCarta, Inc., published under a modified BSD license.
- * See http://svn.openlayers.org/trunk/openlayers/repository-license.txt
+/* Copyright (c) 2006 MetaCarta, Inc., published under the BSD license.
+ * See http://svn.openlayers.org/trunk/openlayers/release-license.txt
* for the full text of the license. */
Deleted: tags/openlayers/release-2.4-rc3/lib/OpenLayers/Control/Panel.js
===================================================================
--- branches/openlayers/2.4/lib/OpenLayers/Control/Panel.js 2007-05-02 14:01:13 UTC (rev 3111)
+++ tags/openlayers/release-2.4-rc3/lib/OpenLayers/Control/Panel.js 2007-05-02 14:20:28 UTC (rev 3113)
@@ -1,161 +0,0 @@
-/* Copyright (c) 2006 MetaCarta, Inc., published under a modified BSD license.
- * See http://svn.openlayers.org/trunk/openlayers/repository-license.txt
- * for the full text of the license. */
-
-/**
- * @class
- *
- * @requires OpenLayers/Control.js
- */
-OpenLayers.Control.Panel = OpenLayers.Class.create();
-OpenLayers.Control.Panel.prototype =
- OpenLayers.Class.inherit( OpenLayers.Control, {
- /**
- * @type Array(OpenLayers.Control)
- */
- controls: null,
-
- /**
- * The control which is activated when the control is activated (turned
- * on), which also happens at instantiation.
- * @type OpenLayers.Control
- */
- defaultControl: null,
-
- /**
- * @constructor
- *
- * @param {DOMElement} element
- * @param {String} base
- */
- initialize: function(element) {
- OpenLayers.Control.prototype.initialize.apply(this, arguments);
- this.controls = [];
- },
-
- destroy: function() {
- OpenLayers.Control.prototype.destroy.apply(this, arguments);
- for(var i = this.controls.length - 1 ; i >= 0; i--) {
- OpenLayers.Event.stopObservingElement(this.controls[i].panel_div);
- this.controls[i].panel_div = null;
- }
- },
-
- activate: function() {
- if (OpenLayers.Control.prototype.activate.apply(this, arguments)) {
- for(var i = 0; i < this.controls.length; i++) {
- if (this.controls[i] == this.defaultControl) {
- this.controls[i].activate();
- }
- }
- this.redraw();
- return true;
- } else {
- return false;
- }
- },
-
- deactivate: function() {
- if (OpenLayers.Control.prototype.deactivate.apply(this, arguments)) {
- for(var i = 0; i < this.controls.length; i++) {
- this.controls[i].deactivate();
- }
- this.redraw();
- return true;
- } else {
- return false;
- }
- },
-
- /**
- * @type DOMElement
- */
- draw: function() {
- OpenLayers.Control.prototype.draw.apply(this, arguments);
- for (var i = 0; i < this.controls.length; i++) {
- this.map.addControl(this.controls[i]);
- this.controls[i].deactivate();
- }
- this.activate();
- return this.div;
- },
-
- /**
- * @private
- */
- redraw: function() {
- this.div.innerHTML = "";
- if (this.active) {
- for (var i = 0; i < this.controls.length; i++) {
- var element = this.controls[i].panel_div;
- if (this.controls[i].active) {
- element.className = this.controls[i].displayClass + "ItemActive";
- } else {
- element.className = this.controls[i].displayClass + "ItemInactive";
- }
- this.div.appendChild(element);
- }
- }
- },
-
- activateControl: function (control) {
- if (!this.active) { return false; }
- if (control.type == OpenLayers.Control.TYPE_BUTTON) {
- control.trigger();
- return;
- }
- for (var i = 0; i < this.controls.length; i++) {
- if (this.controls[i] == control) {
- control.activate();
- } else {
- this.controls[i].deactivate();
- }
- }
- this.redraw();
- },
-
- /**
- * To build a toolbar, you add a set of controls to it. addControls
- * lets you add a single control or a list of controls to the
- * Control Panel.
- * @param OpenLayers.Control
- */
- addControls: function(controls) {
- if (!(controls instanceof Array)) {
- controls = [controls];
- }
- this.controls = this.controls.concat(controls);
-
- // Give each control a panel_div which will be used later.
- // Access to this div is via the panel_div attribute of the
- // control added to the panel.
- for (var i = 0; i < controls.length; i++) {
- var element = document.createElement("div");
- var textNode = document.createTextNode(" ");
- controls[i].panel_div = element;
- OpenLayers.Event.observe(controls[i].panel_div, "click",
- this.onClick.bind(this, controls[i]));
- OpenLayers.Event.observe(controls[i].panel_div, "mousedown",
- OpenLayers.Event.stop.bindAsEventListener());
- OpenLayers.Event.observe(controls[i].panel_div, "mouseup",
- OpenLayers.Event.stop.bindAsEventListener());
- }
-
- if (this.map) { // map.addControl() has already been called on the panel
- for (var i = 0; i < controls.length; i++) {
- this.map.addControl(controls[i]);
- controls[i].deactivate();
- }
- this.redraw();
- }
- },
-
- onClick: function (ctrl, evt) {
- OpenLayers.Event.stop(evt ? evt : window.event);
- this.activateControl(ctrl);
- },
-
- /** @final @type String */
- CLASS_NAME: "OpenLayers.Control.Panel"
-});
-
Copied: tags/openlayers/release-2.4-rc3/lib/OpenLayers/Control/Panel.js (from rev 3112, branches/openlayers/2.4/lib/OpenLayers/Control/Panel.js)
===================================================================
--- tags/openlayers/release-2.4-rc3/lib/OpenLayers/Control/Panel.js (rev 0)
+++ tags/openlayers/release-2.4-rc3/lib/OpenLayers/Control/Panel.js 2007-05-02 14:20:28 UTC (rev 3113)
@@ -0,0 +1,161 @@
+/* Copyright (c) 2006 MetaCarta, Inc., published under the BSD license.
+ * See http://svn.openlayers.org/trunk/openlayers/release-license.txt
+ * for the full text of the license. */
+
+/**
+ * @class
+ *
+ * @requires OpenLayers/Control.js
+ */
+OpenLayers.Control.Panel = OpenLayers.Class.create();
+OpenLayers.Control.Panel.prototype =
+ OpenLayers.Class.inherit( OpenLayers.Control, {
+ /**
+ * @type Array(OpenLayers.Control)
+ */
+ controls: null,
+
+ /**
+ * The control which is activated when the control is activated (turned
+ * on), which also happens at instantiation.
+ * @type OpenLayers.Control
+ */
+ defaultControl: null,
+
+ /**
+ * @constructor
+ *
+ * @param {DOMElement} element
+ * @param {String} base
+ */
+ initialize: function(element) {
+ OpenLayers.Control.prototype.initialize.apply(this, arguments);
+ this.controls = [];
+ },
+
+ destroy: function() {
+ OpenLayers.Control.prototype.destroy.apply(this, arguments);
+ for(var i = this.controls.length - 1 ; i >= 0; i--) {
+ OpenLayers.Event.stopObservingElement(this.controls[i].panel_div);
+ this.controls[i].panel_div = null;
+ }
+ },
+
+ activate: function() {
+ if (OpenLayers.Control.prototype.activate.apply(this, arguments)) {
+ for(var i = 0; i < this.controls.length; i++) {
+ if (this.controls[i] == this.defaultControl) {
+ this.controls[i].activate();
+ }
+ }
+ this.redraw();
+ return true;
+ } else {
+ return false;
+ }
+ },
+
+ deactivate: function() {
+ if (OpenLayers.Control.prototype.deactivate.apply(this, arguments)) {
+ for(var i = 0; i < this.controls.length; i++) {
+ this.controls[i].deactivate();
+ }
+ this.redraw();
+ return true;
+ } else {
+ return false;
+ }
+ },
+
+ /**
+ * @type DOMElement
+ */
+ draw: function() {
+ OpenLayers.Control.prototype.draw.apply(this, arguments);
+ for (var i = 0; i < this.controls.length; i++) {
+ this.map.addControl(this.controls[i]);
+ this.controls[i].deactivate();
+ }
+ this.activate();
+ return this.div;
+ },
+
+ /**
+ * @private
+ */
+ redraw: function() {
+ this.div.innerHTML = "";
+ if (this.active) {
+ for (var i = 0; i < this.controls.length; i++) {
+ var element = this.controls[i].panel_div;
+ if (this.controls[i].active) {
+ element.className = this.controls[i].displayClass + "ItemActive";
+ } else {
+ element.className = this.controls[i].displayClass + "ItemInactive";
+ }
+ this.div.appendChild(element);
+ }
+ }
+ },
+
+ activateControl: function (control) {
+ if (!this.active) { return false; }
+ if (control.type == OpenLayers.Control.TYPE_BUTTON) {
+ control.trigger();
+ return;
+ }
+ for (var i = 0; i < this.controls.length; i++) {
+ if (this.controls[i] == control) {
+ control.activate();
+ } else {
+ this.controls[i].deactivate();
+ }
+ }
+ this.redraw();
+ },
+
+ /**
+ * To build a toolbar, you add a set of controls to it. addControls
+ * lets you add a single control or a list of controls to the
+ * Control Panel.
+ * @param OpenLayers.Control
+ */
+ addControls: function(controls) {
+ if (!(controls instanceof Array)) {
+ controls = [controls];
+ }
+ this.controls = this.controls.concat(controls);
+
+ // Give each control a panel_div which will be used later.
+ // Access to this div is via the panel_div attribute of the
+ // control added to the panel.
+ // Also, stop mousedowns and clicks, but don't stop mouseup,
+ // since they need to pass through.
+ for (var i = 0; i < controls.length; i++) {
+ var element = document.createElement("div");
+ var textNode = document.createTextNode(" ");
+ controls[i].panel_div = element;
+ OpenLayers.Event.observe(controls[i].panel_div, "click",
+ this.onClick.bind(this, controls[i]));
+ OpenLayers.Event.observe(controls[i].panel_div, "mousedown",
+ OpenLayers.Event.stop.bindAsEventListener());
+ }
+
+ if (this.map) { // map.addControl() has already been called on the panel
+ for (var i = 0; i < controls.length; i++) {
+ this.map.addControl(controls[i]);
+ controls[i].deactivate();
+ }
+ this.redraw();
+ }
+ },
+
+ onClick: function (ctrl, evt) {
+ OpenLayers.Event.stop(evt ? evt : window.event);
+ this.activateControl(ctrl);
+ },
+
+ /** @final @type String */
+ CLASS_NAME: "OpenLayers.Control.Panel"
+});
+
Modified: tags/openlayers/release-2.4-rc3/lib/OpenLayers/Control/Permalink.js
===================================================================
--- branches/openlayers/2.4/lib/OpenLayers/Control/Permalink.js 2007-05-02 14:01:13 UTC (rev 3111)
+++ tags/openlayers/release-2.4-rc3/lib/OpenLayers/Control/Permalink.js 2007-05-02 14:20:28 UTC (rev 3113)
@@ -1,5 +1,5 @@
-/* Copyright (c) 2006 MetaCarta, Inc., published under a modified BSD license.
- * See http://svn.openlayers.org/trunk/openlayers/repository-license.txt
+/* Copyright (c) 2006 MetaCarta, Inc., published under the BSD license.
+ * See http://svn.openlayers.org/trunk/openlayers/release-license.txt
* for the full text of the license. */
Modified: tags/openlayers/release-2.4-rc3/lib/OpenLayers/Control/Scale.js
===================================================================
--- branches/openlayers/2.4/lib/OpenLayers/Control/Scale.js 2007-05-02 14:01:13 UTC (rev 3111)
+++ tags/openlayers/release-2.4-rc3/lib/OpenLayers/Control/Scale.js 2007-05-02 14:20:28 UTC (rev 3113)
@@ -1,5 +1,5 @@
-/* Copyright (c) 2006 MetaCarta, Inc., published under a modified BSD license.
- * See http://svn.openlayers.org/trunk/openlayers/repository-license.txt
+/* Copyright (c) 2006 MetaCarta, Inc., published under the BSD license.
+ * See http://svn.openlayers.org/trunk/openlayers/release-license.txt
* for the full text of the license. */
Modified: tags/openlayers/release-2.4-rc3/lib/OpenLayers/Control/SelectFeature.js
===================================================================
--- branches/openlayers/2.4/lib/OpenLayers/Control/SelectFeature.js 2007-05-02 14:01:13 UTC (rev 3111)
+++ tags/openlayers/release-2.4-rc3/lib/OpenLayers/Control/SelectFeature.js 2007-05-02 14:20:28 UTC (rev 3113)
@@ -1,5 +1,5 @@
-/* Copyright (c) 2006 MetaCarta, Inc., published under a modified BSD license.
- * See http://svn.openlayers.org/trunk/openlayers/repository-license.txt
+/* Copyright (c) 2006 MetaCarta, Inc., published under the BSD license.
+ * See http://svn.openlayers.org/trunk/openlayers/release-license.txt
* for the full text of the license. */
Modified: tags/openlayers/release-2.4-rc3/lib/OpenLayers/Control/ZoomBox.js
===================================================================
--- branches/openlayers/2.4/lib/OpenLayers/Control/ZoomBox.js 2007-05-02 14:01:13 UTC (rev 3111)
+++ tags/openlayers/release-2.4-rc3/lib/OpenLayers/Control/ZoomBox.js 2007-05-02 14:20:28 UTC (rev 3113)
@@ -1,5 +1,5 @@
-/* Copyright (c) 2006 MetaCarta, Inc., published under a modified BSD license.
- * See http://svn.openlayers.org/trunk/openlayers/repository-license.txt
+/* Copyright (c) 2006 MetaCarta, Inc., published under the BSD license.
+ * See http://svn.openlayers.org/trunk/openlayers/release-license.txt
* for the full text of the license. */
/**
Modified: tags/openlayers/release-2.4-rc3/lib/OpenLayers/Control/ZoomToMaxExtent.js
===================================================================
--- branches/openlayers/2.4/lib/OpenLayers/Control/ZoomToMaxExtent.js 2007-05-02 14:01:13 UTC (rev 3111)
+++ tags/openlayers/release-2.4-rc3/lib/OpenLayers/Control/ZoomToMaxExtent.js 2007-05-02 14:20:28 UTC (rev 3113)
@@ -1,5 +1,5 @@
-/* Copyright (c) 2006 MetaCarta, Inc., published under a modified BSD license.
- * See http://svn.openlayers.org/trunk/openlayers/repository-license.txt
+/* Copyright (c) 2006 MetaCarta, Inc., published under the BSD license.
+ * See http://svn.openlayers.org/trunk/openlayers/release-license.txt
* for the full text of the license. */
/**
Modified: tags/openlayers/release-2.4-rc3/lib/OpenLayers/Control.js
===================================================================
--- branches/openlayers/2.4/lib/OpenLayers/Control.js 2007-05-02 14:01:13 UTC (rev 3111)
+++ tags/openlayers/release-2.4-rc3/lib/OpenLayers/Control.js 2007-05-02 14:20:28 UTC (rev 3113)
@@ -1,5 +1,5 @@
-/* Copyright (c) 2006 MetaCarta, Inc., published under a modified BSD license.
- * See http://svn.openlayers.org/trunk/openlayers/repository-license.txt
+/* Copyright (c) 2006 MetaCarta, Inc., published under the BSD license.
+ * See http://svn.openlayers.org/trunk/openlayers/release-license.txt
* for the full text of the license. */
/**
Modified: tags/openlayers/release-2.4-rc3/lib/OpenLayers/Events.js
===================================================================
--- branches/openlayers/2.4/lib/OpenLayers/Events.js 2007-05-02 14:01:13 UTC (rev 3111)
+++ tags/openlayers/release-2.4-rc3/lib/OpenLayers/Events.js 2007-05-02 14:20:28 UTC (rev 3113)
@@ -1,5 +1,5 @@
-/* Copyright (c) 2006 MetaCarta, Inc., published under a modified BSD license.
- * See http://svn.openlayers.org/trunk/openlayers/repository-license.txt
+/* Copyright (c) 2006 MetaCarta, Inc., published under the BSD license.
+ * See http://svn.openlayers.org/trunk/openlayers/release-license.txt
* for the full text of the license. */
/**
Modified: tags/openlayers/release-2.4-rc3/lib/OpenLayers/Feature/Vector.js
===================================================================
--- branches/openlayers/2.4/lib/OpenLayers/Feature/Vector.js 2007-05-02 14:01:13 UTC (rev 3111)
+++ tags/openlayers/release-2.4-rc3/lib/OpenLayers/Feature/Vector.js 2007-05-02 14:20:28 UTC (rev 3113)
@@ -1,5 +1,5 @@
-/* Copyright (c) 2006 MetaCarta, Inc., published under a modified BSD license.
- * See http://svn.openlayers.org/trunk/openlayers/repository-license.txt
+/* Copyright (c) 2006 MetaCarta, Inc., published under the BSD license.
+ * See http://svn.openlayers.org/trunk/openlayers/release-license.txt
* for the full text of the license. */
// TRASH THIS
Modified: tags/openlayers/release-2.4-rc3/lib/OpenLayers/Feature/WFS.js
===================================================================
--- branches/openlayers/2.4/lib/OpenLayers/Feature/WFS.js 2007-05-02 14:01:13 UTC (rev 3111)
+++ tags/openlayers/release-2.4-rc3/lib/OpenLayers/Feature/WFS.js 2007-05-02 14:20:28 UTC (rev 3113)
@@ -1,5 +1,5 @@
-/* Copyright (c) 2006 MetaCarta, Inc., published under a modified BSD license.
- * See http://svn.openlayers.org/trunk/openlayers/repository-license.txt
+/* Copyright (c) 2006 MetaCarta, Inc., published under the BSD license.
+ * See http://svn.openlayers.org/trunk/openlayers/release-license.txt
* for the full text of the license. */
Modified: tags/openlayers/release-2.4-rc3/lib/OpenLayers/Feature.js
===================================================================
--- branches/openlayers/2.4/lib/OpenLayers/Feature.js 2007-05-02 14:01:13 UTC (rev 3111)
+++ tags/openlayers/release-2.4-rc3/lib/OpenLayers/Feature.js 2007-05-02 14:20:28 UTC (rev 3113)
@@ -1,5 +1,5 @@
-/* Copyright (c) 2006 MetaCarta, Inc., published under a modified BSD license.
- * See http://svn.openlayers.org/trunk/openlayers/repository-license.txt
+/* Copyright (c) 2006 MetaCarta, Inc., published under the BSD license.
+ * See http://svn.openlayers.org/trunk/openlayers/release-license.txt
* for the full text of the license. */
Deleted: tags/openlayers/release-2.4-rc3/lib/OpenLayers/Format/GML.js
===================================================================
--- branches/openlayers/2.4/lib/OpenLayers/Format/GML.js 2007-05-02 14:01:13 UTC (rev 3111)
+++ tags/openlayers/release-2.4-rc3/lib/OpenLayers/Format/GML.js 2007-05-02 14:20:28 UTC (rev 3113)
@@ -1,437 +0,0 @@
-/* Copyright (c) 2006 MetaCarta, Inc., published under a modified BSD license.
- * See http://svn.openlayers.org/trunk/openlayers/repository-license.txt
- * for the full text of the license. */
-
-/**
- * Read/WRite GML.
- * @requires OpenLayers/Format.js
- * @requires OpenLayers/Feature/Vector.js
- * @requires OpenLayers/Ajax.js
- * @requires OpenLayers/Geometry.js
- */
-OpenLayers.Format.GML = OpenLayers.Class.create();
-OpenLayers.Format.GML.prototype =
- OpenLayers.Class.inherit( OpenLayers.Format, {
-
- featureNS: "http://mapserver.gis.umn.edu/mapserver",
-
- featureName: "featureMember",
-
- layerName: "features",
-
- geometryName: "geometry",
-
- collectionName: "FeatureCollection",
-
- gmlns: "http://www.opengis.net/gml",
-
-
- /**
- * Extract attributes from GML. Most of the time,
- * this is a significant time usage, due to the need
- * to recursively descend the XML to search for attributes.
- *
- * @type Boolean */
- extractAttributes: true,
-
- /**
- * Read data from a string, and return a list of features.
- *
- * @param {string|XMLNode} data data to read/parse.
- */
- read: function(data) {
- if (typeof data == "string") {
- data = OpenLayers.parseXMLString(data);
- }
- var featureNodes = OpenLayers.Ajax.getElementsByTagNameNS(data, this.gmlns, "gml", this.featureName);
- if (featureNodes.length == 0) { return []; }
-
- // Determine dimension of the FeatureCollection. Ie, dim=2 means (x,y) coords
- // dim=3 means (x,y,z) coords
- // GML3 can have 2 or 3 dimensions. GML2 only 2.
- var dim;
- var coordNodes = OpenLayers.Ajax.getElementsByTagNameNS(featureNodes[0], this.gmlns, "gml", "posList");
- if (coordNodes.length == 0) {
- coordNodes = OpenLayers.Ajax.getElementsByTagNameNS(featureNodes[0], this.gmlns, "gml", "pos");
- }
- if (coordNodes.length > 0) {
- dim = coordNodes[0].getAttribute("srsDimension");
- }
- this.dim = (dim == "3" || dim == 3) ? 3 : 2;
-
- var features = [];
-
- // Process all the featureMembers
- for (var i = 0; i < featureNodes.length; i++) {
- var feature = this.parseFeature(featureNodes[i]);
-
- if (feature) {
- features.push(feature);
- }
- }
- return features;
- },
-
- /**
- * This function is the core of the GML parsing code in OpenLayers.
- * It creates the geometries that are then attached to the returned
- * feature, and calls parseAttributes() to get attribute data out.
- * @param DOMElement xmlNode
- */
- parseFeature: function(xmlNode) {
- var geom;
- var p; // [points,bounds]
-
- var feature = new OpenLayers.Feature.Vector();
-
- if (xmlNode.firstChild.attributes && xmlNode.firstChild.attributes['fid']) {
- feature.fid = xmlNode.firstChild.attributes['fid'].nodeValue;
- }
-
- // match MultiPolygon
- if (OpenLayers.Ajax.getElementsByTagNameNS(xmlNode, this.gmlns, "gml", "MultiPolygon").length != 0) {
- var multipolygon = OpenLayers.Ajax.getElementsByTagNameNS(xmlNode, this.gmlns, "gml", "MultiPolygon")[0];
- geom = new OpenLayers.Geometry.MultiPolygon();
- var polygons = OpenLayers.Ajax.getElementsByTagNameNS(multipolygon,
- this.gmlns, "gml", "Polygon");
- for (var i = 0; i < polygons.length; i++) {
- polygon = this.parsePolygonNode(polygons[i],geom);
- geom.addComponents(polygon);
- }
- }
- // match MultiLineString
- else if (OpenLayers.Ajax.getElementsByTagNameNS(xmlNode,
- this.gmlns, "gml", "MultiLineString").length != 0) {
- var multilinestring = OpenLayers.Ajax.getElementsByTagNameNS(xmlNode,
- this.gmlns, "gml", "MultiLineString")[0];
-
- geom = new OpenLayers.Geometry.MultiLineString();
- var lineStrings = OpenLayers.Ajax.getElementsByTagNameNS(multilinestring, this.gmlns, "gml", "LineString");
-
- for (var i = 0; i < lineStrings.length; i++) {
- p = this.parseCoords(lineStrings[i]);
- if(p.points){
- var lineString = new OpenLayers.Geometry.LineString(p.points);
- geom.addComponents(lineString);
- // TBD Bounds only set for one of multiple geometries
- }
- }
- }
- // match MultiPoint
- else if (OpenLayers.Ajax.getElementsByTagNameNS(xmlNode,
- this.gmlns, "gml", "MultiPoint").length != 0) {
- var multiPoint = OpenLayers.Ajax.getElementsByTagNameNS(xmlNode,
- this.gmlns, "gml", "MultiPoint")[0];
-
- geom = new OpenLayers.Geometry.MultiPoint();
-
- var points = OpenLayers.Ajax.getElementsByTagNameNS(multiPoint, this.gmlns, "gml", "Point");
-
- for (var i = 0; i < points.length; i++) {
- p = this.parseCoords(points[i]);
- geom.addComponents(p.points[0]);
- // TBD Bounds only set for one of multiple geometries
- }
- }
- // match Polygon
- else if (OpenLayers.Ajax.getElementsByTagNameNS(xmlNode,
- this.gmlns, "gml", "Polygon").length != 0) {
- var polygon = OpenLayers.Ajax.getElementsByTagNameNS(xmlNode,
- this.gmlns, "gml", "Polygon")[0];
-
- geom = this.parsePolygonNode(polygon);
- }
- // match LineString
- else if (OpenLayers.Ajax.getElementsByTagNameNS(xmlNode,
- this.gmlns, "gml", "LineString").length != 0) {
- var lineString = OpenLayers.Ajax.getElementsByTagNameNS(xmlNode,
- this.gmlns, "gml", "LineString")[0];
- p = this.parseCoords(lineString);
- if (p.points) {
- geom = new OpenLayers.Geometry.LineString(p.points);
- // TBD Bounds only set for one of multiple geometries
- }
- }
- // match Point
- else if (OpenLayers.Ajax.getElementsByTagNameNS(xmlNode,
- this.gmlns, "gml", "Point").length != 0) {
- var point = OpenLayers.Ajax.getElementsByTagNameNS(xmlNode,
- this.gmlns, "gml", "Point")[0];
-
- p = this.parseCoords(point);
- if (p.points) {
- geom = p.points[0];
- // TBD Bounds only set for one of multiple geometries
- }
- }
-
- feature.geometry = geom;
- if (this.extractAttributes) {
- feature.attributes = this.parseAttributes(xmlNode);
- }
-
- return feature;
- },
-
- /**
- * recursive function parse the attributes of a GML node.
- * Searches for any child nodes which aren't geometries,
- * and gets their value.
- * @param DOMElement xmlNode
- */
- parseAttributes: function(xmlNode) {
- var nodes = xmlNode.childNodes;
- var attributes = {};
- for(var i = 0; i < nodes.length; i++) {
- var name = nodes[i].nodeName;
- var value = OpenLayers.Util.getXmlNodeValue(nodes[i]);
- // Ignore Geometry attributes
- // match ".//gml:pos|.//gml:posList|.//gml:coordinates"
- if((name.search(":pos")!=-1)
- ||(name.search(":posList")!=-1)
- ||(name.search(":coordinates")!=-1)){
- continue;
- }
-
- // Check for a leaf node
- if((nodes[i].childNodes.length == 1 && nodes[i].childNodes[0].nodeName == "#text")
- || (nodes[i].childNodes.length == 0 && nodes[i].nodeName!="#text")) {
- attributes[name] = value;
- }
- OpenLayers.Util.extend(attributes, this.parseAttributes(nodes[i]))
- }
- return attributes;
- },
-
- /**
- *
- * @param {XMLNode} xmlNode
- *
- * @return {OpenLayers.Geometry.Polygon} polygon geometry
- */
- parsePolygonNode: function(polygonNode) {
- var linearRings = OpenLayers.Ajax.getElementsByTagNameNS(polygonNode,
- this.gmlns, "gml", "LinearRing");
-
- var rings = [];
- var p;
- var polyBounds;
- for (var i = 0; i < linearRings.length; i++) {
- p = this.parseCoords(linearRings[i]);
- ring1 = new OpenLayers.Geometry.LinearRing(p.points);
- rings.push(ring1);
- }
-
- var poly = new OpenLayers.Geometry.Polygon(rings);
- return poly;
- },
-
- /**
- * Extract Geographic coordinates from an XML node.
- * @private
- * @param {XMLNode} xmlNode
- *
- * @return an array of OpenLayers.Geometry.Point points.
- * @type Array
- */
- parseCoords: function(xmlNode) {
- var x, y, left, bottom, right, top, bounds;
- var p = []; // return value = [points,bounds]
-
- if (xmlNode) {
- p.points = [];
-
- // match ".//gml:pos|.//gml:posList|.//gml:coordinates"
- // Note: GML2 coordinates are of the form:x y,x y,x y
- // GML2 can also be of the form <coord><x>1</x><y>2</y></coord>
- // GML3 posList is of the form:x y x y. OR x y z x y z.
-
- // GML3 Line or Polygon
- var coordNodes = OpenLayers.Ajax.getElementsByTagNameNS(xmlNode, this.gmlns, "gml", "posList");
-
- // GML3 Point
- if (coordNodes.length == 0) {
- coordNodes = OpenLayers.Ajax.getElementsByTagNameNS(xmlNode, this.gmlns, "gml", "pos");
- }
-
- // GML2
- if (coordNodes.length == 0) {
- coordNodes = OpenLayers.Ajax.getElementsByTagNameNS(xmlNode, this.gmlns, "gml", "coordinates");
- }
-
- // TBD: Need to handle an array of coordNodes not just coordNodes[0]
-
- var coordString = OpenLayers.Util.getXmlNodeValue(coordNodes[0]);
-
- // Extract an array of Numbers from CoordString
- var nums = (coordString) ? coordString.split(/[, \n\t]+/) : [];
-
- // Remove elements caused by leading and trailing white space
- while (nums[0] == "")
- nums.shift();
-
- while (nums[nums.length-1] == "")
- nums.pop();
-
- for(i = 0; i < nums.length; i = i + this.dim) {
- x = parseFloat(nums[i]);
- y = parseFloat(nums[i+1]);
- p.points.push(new OpenLayers.Geometry.Point(x, y));
- }
- }
- return p;
- },
-
- /**
- * Accept Feature Collection, and return a string.
- *
- * @param {Array} List of features to serialize into a string.
- */
- write: function(features) {
- var featureCollection = document.createElementNS("http://www.opengis.net/wfs", "wfs:" + this.collectionName);
- for (var i=0; i < features.length; i++) {
- featureCollection.appendChild(this.createFeatureXML(features[i]));
- }
- return featureCollection;
- },
-
- /**
- * Accept an OpenLayers.Feature.Vector, and build a geometry for it.
- *
- * @param OpenLayers.Feature.Vector feature
- * @returns DOMElement
- */
- createFeatureXML: function(feature) {
- var geometryNode = this.buildGeometryNode(feature.geometry);
- var geomContainer = document.createElementNS(this.featureNS, "feature:"+this.geometryName);
- geomContainer.appendChild(geometryNode);
- var featureNode = document.createElementNS(this.gmlns, "gml:" + this.featureName);
- var featureContainer = document.createElementNS(this.featureNS, "feature:"+this.layerName);
- featureContainer.appendChild(geomContainer);
- for(var attr in feature.attributes) {
- var attrText = document.createTextNode(feature.attributes[attr]);
- var nodename = attr;
- if (attr.search(":") != -1) {
- nodename = attr.split(":")[1];
- }
- var attrContainer = document.createElementNS(this.featureNS, "feature:"+nodename);
- attrContainer.appendChild(attrText);
- featureContainer.appendChild(attrContainer);
- }
- featureNode.appendChild(featureContainer);
- return featureNode;
- },
-
- /**
- * builds a GML file with a given geometry
- *
- * @param {OpenLayers.Geometry} geometry
- */
- buildGeometryNode: function(geometry) {
- // TBD test if geoserver can be given a Multi-geometry for a simple-geometry data store
- // ie if multipolygon can be sent for a polygon feature type
- var gml = "";
- // match MultiPolygon or Polygon
- if (geometry.CLASS_NAME == "OpenLayers.Geometry.MultiPolygon"
- || geometry.CLASS_NAME == "OpenLayers.Geometry.Polygon") {
- gml = document.createElementNS(this.gmlns, 'gml:MultiPolygon');
-
- // TBD retrieve the srs from layer
- // srsName is non-standard, so not including it until it's right.
- //gml.setAttribute("srsName", "http://www.opengis.net/gml/srs/epsg.xml#4326");
-
- var polygonMember = document.createElementNS(this.gmlns, 'gml:polygonMember');
-
- var polygon = document.createElementNS(this.gmlns, 'gml:Polygon');
- var outerRing = document.createElementNS(this.gmlns, 'gml:outerBoundaryIs');
- var linearRing = document.createElementNS(this.gmlns, 'gml:LinearRing');
-
- // TBD manage polygons with holes
- linearRing.appendChild(this.buildCoordinatesNode(geometry.components[0]));
- outerRing.appendChild(linearRing);
- polygon.appendChild(outerRing);
- polygonMember.appendChild(polygon);
-
- gml.appendChild(polygonMember);
- }
- // match MultiLineString or LineString
- else if (geometry.CLASS_NAME == "OpenLayers.Geometry.MultiLineString"
- || geometry.CLASS_NAME == "OpenLayers.Geometry.LineString") {
- gml = document.createElementNS(this.gmlns, 'gml:MultiLineString');
-
- // TBD retrieve the srs from layer
- // srsName is non-standard, so not including it until it's right.
- //gml.setAttribute("srsName", "http://www.opengis.net/gml/srs/epsg.xml#4326");
-
- var lineStringMember = document.createElementNS(this.gmlns, 'gml:lineStringMember');
-
- var lineString = document.createElementNS(this.gmlns, 'gml:LineString');
-
- lineString.appendChild(this.buildCoordinatesNode(geometry));
- lineStringMember.appendChild(lineString);
-
- gml.appendChild(lineStringMember);
- }
- // match MultiPoint or Point
- else if (geometry.CLASS_NAME == "OpenLayers.Geometry.Point" ||
- geometry.CLASS_NAME == "OpenLayers.Geometry.MultiPoint") {
- // TBD retrieve the srs from layer
- // srsName is non-standard, so not including it until it's right.
- //gml.setAttribute("srsName", "http://www.opengis.net/gml/srs/epsg.xml#4326");
-
- gml = document.createElementNS(this.gmlns, 'gml:MultiPoint');
- var parts = "";
- if (geometry.CLASS_NAME == "OpenLayers.Geometry.MultiPoint") {
- parts = geometry.components;
- } else {
- parts = [geometry];
- }
-
- for (var i = 0; i < parts.length; i++) {
- var pointMember = document.createElementNS(this.gmlns, 'gml:pointMember');
- var point = document.createElementNS(this.gmlns, 'gml:Point');
- point.appendChild(this.buildCoordinatesNode(parts[i]));
- pointMember.appendChild(point);
- gml.appendChild(pointMember);
- }
- }
- return gml;
- },
-
- /**
- * builds the coordinates XmlNode
- * <gml:coordinates decimal="." cs="," ts=" ">...</gml:coordinates>
- *
- * @param {OpenLayers.Geometry} geometry
- * @return {XmlNode} created xmlNode
- */
- buildCoordinatesNode: function(geometry) {
- var coordinatesNode = document.createElementNS(this.gmlns, "gml:coordinates");
- coordinatesNode.setAttribute("decimal", ".");
- coordinatesNode.setAttribute("cs", ",");
- coordinatesNode.setAttribute("ts", " ");
-
- var points = null;
- if (geometry.components) {
- points = geometry.components;
- }
-
- var path = "";
- if (points) {
- for (var i = 0; i < points.length; i++) {
- path += points[i].x + "," + points[i].y + " ";
- }
- } else {
- path += geometry.x + "," + geometry.y + " ";
- }
-
- var txtNode = document.createTextNode(path);
- coordinatesNode.appendChild(txtNode);
-
- return coordinatesNode;
- },
-
- /** @final @type String */
- CLASS_NAME: "OpenLayers.Format.GML"
-
-});
Copied: tags/openlayers/release-2.4-rc3/lib/OpenLayers/Format/GML.js (from rev 3112, branches/openlayers/2.4/lib/OpenLayers/Format/GML.js)
===================================================================
--- tags/openlayers/release-2.4-rc3/lib/OpenLayers/Format/GML.js (rev 0)
+++ tags/openlayers/release-2.4-rc3/lib/OpenLayers/Format/GML.js 2007-05-02 14:20:28 UTC (rev 3113)
@@ -0,0 +1,441 @@
+/* Copyright (c) 2006 MetaCarta, Inc., published under the BSD license.
+ * See http://svn.openlayers.org/trunk/openlayers/release-license.txt
+ * for the full text of the license. */
+
+/**
+ * Read/WRite GML.
+ * @requires OpenLayers/Format.js
+ * @requires OpenLayers/Feature/Vector.js
+ * @requires OpenLayers/Ajax.js
+ * @requires OpenLayers/Geometry.js
+ */
+OpenLayers.Format.GML = OpenLayers.Class.create();
+OpenLayers.Format.GML.prototype =
+ OpenLayers.Class.inherit( OpenLayers.Format, {
+
+ featureNS: "http://mapserver.gis.umn.edu/mapserver",
+
+ featureName: "featureMember",
+
+ layerName: "features",
+
+ geometryName: "geometry",
+
+ collectionName: "FeatureCollection",
+
+ gmlns: "http://www.opengis.net/gml",
+
+
+ /**
+ * Extract attributes from GML. Most of the time,
+ * this is a significant time usage, due to the need
+ * to recursively descend the XML to search for attributes.
+ *
+ * @type Boolean */
+ extractAttributes: true,
+
+ /**
+ * Read data from a string, and return a list of features.
+ *
+ * @param {string|XMLNode} data data to read/parse.
+ */
+ read: function(data) {
+ if (typeof data == "string") {
+ data = OpenLayers.parseXMLString(data);
+ }
+ var featureNodes = OpenLayers.Ajax.getElementsByTagNameNS(data, this.gmlns, "gml", this.featureName);
+ if (featureNodes.length == 0) { return []; }
+
+ // Determine dimension of the FeatureCollection. Ie, dim=2 means (x,y) coords
+ // dim=3 means (x,y,z) coords
+ // GML3 can have 2 or 3 dimensions. GML2 only 2.
+ var dim;
+ var coordNodes = OpenLayers.Ajax.getElementsByTagNameNS(featureNodes[0], this.gmlns, "gml", "posList");
+ if (coordNodes.length == 0) {
+ coordNodes = OpenLayers.Ajax.getElementsByTagNameNS(featureNodes[0], this.gmlns, "gml", "pos");
+ }
+ if (coordNodes.length > 0) {
+ dim = coordNodes[0].getAttribute("srsDimension");
+ }
+ this.dim = (dim == "3" || dim == 3) ? 3 : 2;
+
+ var features = [];
+
+ // Process all the featureMembers
+ for (var i = 0; i < featureNodes.length; i++) {
+ var feature = this.parseFeature(featureNodes[i]);
+
+ if (feature) {
+ features.push(feature);
+ }
+ }
+ return features;
+ },
+
+ /**
+ * This function is the core of the GML parsing code in OpenLayers.
+ * It creates the geometries that are then attached to the returned
+ * feature, and calls parseAttributes() to get attribute data out.
+ * @param DOMElement xmlNode
+ */
+ parseFeature: function(xmlNode) {
+ var geom;
+ var p; // [points,bounds]
+
+ var feature = new OpenLayers.Feature.Vector();
+
+ // match MultiPolygon
+ if (OpenLayers.Ajax.getElementsByTagNameNS(xmlNode, this.gmlns, "gml", "MultiPolygon&quo