[mapguide-commits] r7503 - in branches/maestro-4.0.x: MaestroAPITests OSGeo.MapGuide.MaestroAPI/Mapping

svn_mapguide at osgeo.org svn_mapguide at osgeo.org
Mon May 20 04:24:19 PDT 2013


Author: jng
Date: 2013-05-20 04:24:19 -0700 (Mon, 20 May 2013)
New Revision: 7503

Modified:
   branches/maestro-4.0.x/MaestroAPITests/RuntimeMapTests.cs
   branches/maestro-4.0.x/OSGeo.MapGuide.MaestroAPI/Mapping/RuntimeMapLayer.cs
Log:
#2233: Fix scale ranges not initialized properly when creating a RuntimeMap. Unit tests updated to check for this.

Modified: branches/maestro-4.0.x/MaestroAPITests/RuntimeMapTests.cs
===================================================================
--- branches/maestro-4.0.x/MaestroAPITests/RuntimeMapTests.cs	2013-05-20 10:38:29 UTC (rev 7502)
+++ branches/maestro-4.0.x/MaestroAPITests/RuntimeMapTests.cs	2013-05-20 11:24:19 UTC (rev 7503)
@@ -169,6 +169,12 @@
             var map2 = mapSvc.CreateMap("Session:" + _conn.SessionID + "//TestCreate2.Map", "Library://UnitTests/Maps/Sheboygan.MapDefinition", 1.0);
             //var map3 = mapSvc.CreateMap("Library://UnitTests/Maps/Sheboygan.MapDefinition", 1.0);
 
+            Assert.NotNull(map.Layers["Parcels"]);
+            var parcelsLayers = map.Layers["Parcels"];
+            Assert.AreEqual(1, parcelsLayers.ScaleRanges.Length);
+            Assert.AreEqual(0.0, parcelsLayers.ScaleRanges[0].MinScale);
+            Assert.AreEqual(13000.0, parcelsLayers.ScaleRanges[0].MaxScale);
+
             Assert.NotNull(map);
             Assert.NotNull(map2);
             //Assert.NotNull(map3);
@@ -249,6 +255,11 @@
 
             //Tweak some settings
             var parcels = map2.GetLayerByName("Parcels");
+            //Check these values still came through
+            Assert.AreEqual(1, parcels.ScaleRanges.Length);
+            Assert.AreEqual(0.0, parcels.ScaleRanges[0].MinScale);
+            Assert.AreEqual(13000.0, parcels.ScaleRanges[0].MaxScale);
+
             var rail = map2.GetLayerByName("Rail");
             Assert.NotNull(parcels);
 

Modified: branches/maestro-4.0.x/OSGeo.MapGuide.MaestroAPI/Mapping/RuntimeMapLayer.cs
===================================================================
--- branches/maestro-4.0.x/OSGeo.MapGuide.MaestroAPI/Mapping/RuntimeMapLayer.cs	2013-05-20 10:38:29 UTC (rev 7502)
+++ branches/maestro-4.0.x/OSGeo.MapGuide.MaestroAPI/Mapping/RuntimeMapLayer.cs	2013-05-20 11:24:19 UTC (rev 7503)
@@ -127,6 +127,7 @@
                 _featureSourceId = vl.ResourceId;
                 _filter = vl.Filter;
                 InitIdentityProperties(vl);
+                InitScaleRanges(vl);
                 _hasTooltips = !string.IsNullOrEmpty(vl.ToolTip);
             }
             else if (ldf.SubLayer.LayerType == LayerType.Raster)
@@ -135,6 +136,7 @@
                 _qualifiedClassName = rl.FeatureName;
                 _geometryPropertyName = rl.Geometry;
                 _featureSourceId = rl.ResourceId;
+                InitScaleRanges(rl);
             }
 
             _expandInLegend = false;
@@ -143,10 +145,47 @@
             _selectable = true;
             _showInLegend = true;
             _visible = true;
-
             _disableChangeTracking = false;
         }
 
+        private void InitScaleRanges(IRasterLayerDefinition rl)
+        {
+            List<double> scales = new List<double>();
+            foreach (var gsr in rl.GridScaleRange)
+            {
+                if (gsr.MinScale.HasValue)
+                    scales.Add(gsr.MinScale.Value);
+                else
+                    scales.Add(0.0);
+
+                if (gsr.MaxScale.HasValue)
+                    scales.Add(gsr.MaxScale.Value);
+                else
+                    scales.Add(InfinityScale);
+            }
+            _scaleRanges = scales.ToArray();
+            EnsureOrderedMinMaxScales();
+        }
+
+        private void InitScaleRanges(IVectorLayerDefinition vl)
+        {
+            List<double> scales = new List<double>();
+            foreach (var vsr in vl.VectorScaleRange)
+            {
+                if (vsr.MinScale.HasValue)
+                    scales.Add(vsr.MinScale.Value);
+                else
+                    scales.Add(0.0);
+
+                if (vsr.MaxScale.HasValue)
+                    scales.Add(vsr.MaxScale.Value);
+                else
+                    scales.Add(InfinityScale);
+            }
+            _scaleRanges = scales.ToArray();
+            EnsureOrderedMinMaxScales();
+        }
+
         /// <summary>
         /// Initializes a new instance of the <see cref="RuntimeMapLayer"/> class.
         /// </summary>



More information about the mapguide-commits mailing list