[Commits] r386 - in sandbox/opengeo/geoexplorer: . lib lib/GeoExt/data tests tests/lib/GeoExt/data
commits at geoext.org
commits at geoext.org
Tue Apr 14 23:38:01 CEST 2009
Author: dwins
Date: 2009-04-14 23:38:00 +0200 (Tue, 14 Apr 2009)
New Revision: 386
Added:
sandbox/opengeo/geoexplorer/lib/GeoExt/data/ScaleStore.js
sandbox/opengeo/geoexplorer/tests/lib/GeoExt/data/ScaleStore.html
Modified:
sandbox/opengeo/geoexplorer/lib/GeoExt.js
sandbox/opengeo/geoexplorer/modifications.txt
sandbox/opengeo/geoexplorer/tests/list-tests.html
Log:
Add scale store that synchronizes scale list with map
Added: sandbox/opengeo/geoexplorer/lib/GeoExt/data/ScaleStore.js
===================================================================
--- sandbox/opengeo/geoexplorer/lib/GeoExt/data/ScaleStore.js (rev 0)
+++ sandbox/opengeo/geoexplorer/lib/GeoExt/data/ScaleStore.js 2009-04-14 21:38:00 UTC (rev 386)
@@ -0,0 +1,43 @@
+/* Copyright (C) 2008-2009 The Open Source Geospatial Foundation ¹
+ * Published under the BSD license.
+ * See http://geoext.org/svn/geoext/core/trunk/license.txt for the full text
+ * of the license.
+ *
+ * ¹ pending approval */
+
+/**
+ * @include GeoExt/data/LayerReader.js
+ */
+
+Ext.namespace("GeoExt.data");
+
+GeoExt.data.ScaleStore = Ext.extend(Ext.data.Store, {
+ map: null,
+
+ constructor: function(config) {
+ this.map = config.map;
+ delete config.map;
+ config = Ext.applyIf(config, {reader: new Ext.data.JsonReader({}, [
+ "level",
+ "resolution",
+ "scale"
+ ])});
+ GeoExt.data.ScaleStore.superclass.constructor.call(this, config);
+ this.map.events.register('changebaselayer', this, this.populateFromMap);
+ this.populateFromMap();
+ },
+
+ populateFromMap: function() {
+ var zooms = [];
+
+ for (var i = this.map.numZoomLevels-1; i > 0; i--) {
+ var res = this.map.getResolutionForZoom(i);
+ var units = this.map.baseLayer.units;
+ var scale = OpenLayers.Util.getScaleFromResolution(res, units);
+
+ zooms.push({level: i, resolution: res, scale: scale});
+ }
+
+ this.loadData(zooms);
+ }
+});
Modified: sandbox/opengeo/geoexplorer/lib/GeoExt.js
===================================================================
--- sandbox/opengeo/geoexplorer/lib/GeoExt.js 2009-04-14 21:27:05 UTC (rev 385)
+++ sandbox/opengeo/geoexplorer/lib/GeoExt.js 2009-04-14 21:38:00 UTC (rev 386)
@@ -65,6 +65,7 @@
"GeoExt/data/LayerReader.js",
"GeoExt/data/LayerStore.js",
"GeoExt/data/LayerStoreMediator.js",
+ "GeoExt/data/ScaleStore.js",
"GeoExt/data/ProtocolProxy.js",
"GeoExt/data/WMSCapabilitiesReader.js",
"GeoExt/data/WMSCapabilitiesStore.js",
Modified: sandbox/opengeo/geoexplorer/modifications.txt
===================================================================
--- sandbox/opengeo/geoexplorer/modifications.txt 2009-04-14 21:27:05 UTC (rev 385)
+++ sandbox/opengeo/geoexplorer/modifications.txt 2009-04-14 21:38:00 UTC (rev 386)
@@ -7,4 +7,5 @@
* Added examples of grid using WMSCapabilitiesStore (see #9)
* Added (with some tweaks) LegendPanel from GeoExt #2
* Made FeatureRecord.create() and LayerRecord.create() not modify prototype fields. (see #40)
+ * Added scale store (see #41)
Added: sandbox/opengeo/geoexplorer/tests/lib/GeoExt/data/ScaleStore.html
===================================================================
--- sandbox/opengeo/geoexplorer/tests/lib/GeoExt/data/ScaleStore.html (rev 0)
+++ sandbox/opengeo/geoexplorer/tests/lib/GeoExt/data/ScaleStore.html 2009-04-14 21:38:00 UTC (rev 386)
@@ -0,0 +1,64 @@
+<!DOCTYPE html>
+<html debug="true">
+ <head>
+ <script type="text/javascript" src="../../../../../openlayers/lib/OpenLayers.js"></script>
+ <script type="text/javascript" src="../../../../../ext/adapter/ext/ext-base.js"></script>
+ <script type="text/javascript" src="../../../../../ext/ext-all-debug.js"></script>
+ <script type="text/javascript" src="../../../../lib/GeoExt.js"></script>
+
+ <script type="text/javascript">
+
+ function createMap() {
+ var map = new OpenLayers.Map();
+ map.addLayer(new OpenLayers.Layer.Vector('dummy layer', {
+ maxExtent: new OpenLayers.Bounds(-180, -90, 180, 90),
+ isBaseLayer: true
+ }));
+ map.zoomToMaxExtent();
+ return map;
+ }
+
+ function loadMapPanel() {
+ var map = createMap();
+
+ var mapPanel = new GeoExt.MapPanel({
+ // panel options
+ id: "map-panel",
+ title: "GeoExt MapPanel",
+ renderTo: "mappanel",
+ height: 400,
+ width: 600,
+ // map panel-specific options
+ map: map,
+ center: new OpenLayers.LonLat(5, 45),
+ zoom: 4
+ });
+
+ return mapPanel;
+ }
+
+ function test_constructor(t) {
+ t.plan(1);
+
+ var store, map;
+
+ map = createMap();
+ store = new GeoExt.data.ScaleStore({map: map});
+ t.ok(store.map == map, "ctor sets the passed map in the instance");
+ }
+
+ function test_scalestore(t) {
+ t.plan(1);
+
+ var mapPanel = loadMapPanel();
+ var map = mapPanel.map;
+ var store = new GeoExt.data.ScaleStore({map: map});
+ t.eq(store.data.length, 15, 'Found expected number of zoomlevels');
+ }
+
+ </script>
+ </head>
+ <body>
+ <div id="mappanel" style="width:400px; height:300px"></div>
+ </body>
+</html>
Modified: sandbox/opengeo/geoexplorer/tests/list-tests.html
===================================================================
--- sandbox/opengeo/geoexplorer/tests/list-tests.html 2009-04-14 21:27:05 UTC (rev 385)
+++ sandbox/opengeo/geoexplorer/tests/list-tests.html 2009-04-14 21:38:00 UTC (rev 386)
@@ -6,6 +6,7 @@
<li>lib/GeoExt/data/LayerReader.html</li>
<li>lib/GeoExt/data/LayerStore.html</li>
<li>lib/GeoExt/data/LayerStoreMediator.html</li>
+ <li>lib/GeoExt/data/ScaleStore.html</li>
<li>lib/GeoExt/data/ProtocolProxy.html</li>
<li>lib/GeoExt/widgets/MapPanel.html</li>
<li>lib/GeoExt/widgets/Popup.html</li>
More information about the Commits
mailing list