Hi,
My map data is located in a centralized web service server and it returns my desktop app images in bytes. The panning seems not smooth enough after I added more layers.
The following is how I add my layers. It's built from the C# web service sample code with spatial index for each shape file.
if (Application["usaLayer"] == null)
{
layer = new ShapeFileFeatureLayer(Path.Combine(AppDomain.CurrentDomain.BaseDirectory, @"App_Data\USStates.shp"), ShapeFileReadWriteMode.ReadOnly);
layer.ZoomLevelSet.ZoomLevel01.ApplyUntilZoomLevel = ApplyUntilZoomLevel.Level20;
layer.ZoomLevelSet.ZoomLevel01.DefaultAreaStyle = AreaStyles.State1;
layer.ZoomLevelSet.ZoomLevel01.DefaultAreaStyle.OutlinePen.LineJoin = DrawingLineJoin.Round;
layer.ZoomLevelSet.ZoomLevel01.DefaultTextStyle = TextStyles.City1("STATE_NAME");
layer.ZoomLevelSet.ZoomLevel01.DefaultTextStyle.BestPlacement = true;
Application["usaLayer"] = layer;
}
if (Application["worldLayer"] == null)
{
layer = new ShapeFileFeatureLayer(Path.Combine(AppDomain.CurrentDomain.BaseDirectory, @"App_Data\Countries02.shp"), ShapeFileReadWriteMode.ReadOnly);
layer.ZoomLevelSet.ZoomLevel01.DefaultAreaStyle = AreaStyles.Country1;
layer.ZoomLevelSet.ZoomLevel01.ApplyUntilZoomLevel = ApplyUntilZoomLevel.Level20;
Application["worldLayer"] = layer;
}
if (Application["canadaLayer4"] == null)
{
layer = new ShapeFileFeatureLayer(Path.Combine(AppDomain.CurrentDomain.BaseDirectory, @CommonTypes.CANADALAYER4), ShapeFileReadWriteMode.ReadOnly);
layer.ZoomLevelSet.ZoomLevel01.ApplyUntilZoomLevel = ApplyUntilZoomLevel.Level20;
layer.ZoomLevelSet.ZoomLevel01.DefaultAreaStyle = AreaStyles.State1;
layer.ZoomLevelSet.ZoomLevel01.DefaultAreaStyle.OutlinePen.LineJoin = DrawingLineJoin.Round;
Application["canadaLayer4"] = layer;
}
if (Application["oceanLayer"] == null)
{
layer = new ShapeFileFeatureLayer(Path.Combine(AppDomain.CurrentDomain.BaseDirectory, @CommonTypes.OCEANLAYER), ShapeFileReadWriteMode.ReadOnly);
layer.ZoomLevelSet.ZoomLevel01.ApplyUntilZoomLevel = ApplyUntilZoomLevel.Level20;
layer.ZoomLevelSet.ZoomLevel01.DefaultAreaStyle = waterStyle; // AreaStyles.Water1;
layer.ZoomLevelSet.ZoomLevel01.DefaultAreaStyle.OutlinePen.LineJoin = DrawingLineJoin.Round;
Application["oceanLayer"] = layer;
}
if (Application["islandLayer"] == null)
{
layer = new ShapeFileFeatureLayer(Path.Combine(AppDomain.CurrentDomain.BaseDirectory, @CommonTypes.ISLANDLAYER), ShapeFileReadWriteMode.ReadOnly);
layer.ZoomLevelSet.ZoomLevel01.ApplyUntilZoomLevel = ApplyUntilZoomLevel.Level20;
layer.ZoomLevelSet.ZoomLevel01.CustomStyles.Add( AreaStyles.Country1 );
layer.ZoomLevelSet.ZoomLevel01.DefaultAreaStyle.OutlinePen.LineJoin = DrawingLineJoin.Round;
Application["islandLayer"] = layer;
}
if (Application["landuseALayer"] == null)
{
layer = new ShapeFileFeatureLayer(Path.Combine(AppDomain.CurrentDomain.BaseDirectory, @CommonTypes.LANDUSEALAYER), ShapeFileReadWriteMode.ReadOnly);
layer.ZoomLevelSet.ZoomLevel01.ApplyUntilZoomLevel = ApplyUntilZoomLevel.Level20;
layer.ZoomLevelSet.ZoomLevel01.CustomStyles.Add(AreaStyles.Park1);
layer.ZoomLevelSet.ZoomLevel01.DefaultAreaStyle.OutlinePen.LineJoin = DrawingLineJoin.Round;
Application["landuseALayer"] = layer;
}
if (Application["landuseBLayer"] == null)
{
layer = new ShapeFileFeatureLayer(Path.Combine(AppDomain.CurrentDomain.BaseDirectory, @CommonTypes.LANDUSEBLAYER), ShapeFileReadWriteMode.ReadOnly);
layer.ZoomLevelSet.ZoomLevel01.ApplyUntilZoomLevel = ApplyUntilZoomLevel.Level20;
layer.ZoomLevelSet.ZoomLevel01.CustomStyles.Add(AreaStyles.Grass1);
layer.ZoomLevelSet.ZoomLevel01.DefaultAreaStyle.OutlinePen.LineJoin = DrawingLineJoin.Round;
Application["landuseBLayer"] = layer;
}
if (Application["landcustLayer"] == null)
{
layer = new ShapeFileFeatureLayer(Path.Combine(AppDomain.CurrentDomain.BaseDirectory, @CommonTypes.LANDCUSTLAYER), ShapeFileReadWriteMode.ReadOnly);
layer.ZoomLevelSet.ZoomLevel01.ApplyUntilZoomLevel = ApplyUntilZoomLevel.Level20;
layer.ZoomLevelSet.ZoomLevel01.CustomStyles.Add(AreaStyles.Urban1);
layer.ZoomLevelSet.ZoomLevel01.DefaultAreaStyle.OutlinePen.LineJoin = DrawingLineJoin.Round;
Application["landcustLayer"] = layer;
}
if (Application["water1Layer"] == null)
{
layer = new ShapeFileFeatureLayer(Path.Combine(AppDomain.CurrentDomain.BaseDirectory, @CommonTypes.WATERWAY1LAYER), ShapeFileReadWriteMode.ReadOnly);
layer.ZoomLevelSet.ZoomLevel01.ApplyUntilZoomLevel = ApplyUntilZoomLevel.Level20;
layer.ZoomLevelSet.ZoomLevel01.CustomStyles.Add(waterStyle);//AreaStyles.Water1);
layer.ZoomLevelSet.ZoomLevel01.DefaultAreaStyle.OutlinePen.LineJoin = DrawingLineJoin.Round;
Application["water1Layer"] = layer;
}
if (Application["water2Layer"] == null)
{
layer = new ShapeFileFeatureLayer(Path.Combine(AppDomain.CurrentDomain.BaseDirectory, @CommonTypes.WATERWAY2LAYER), ShapeFileReadWriteMode.ReadOnly);
layer.ZoomLevelSet.ZoomLevel01.ApplyUntilZoomLevel = ApplyUntilZoomLevel.Level20;
layer.ZoomLevelSet.ZoomLevel01.CustomStyles.Add(waterStyle);//AreaStyles.Water1);
layer.ZoomLevelSet.ZoomLevel01.DefaultAreaStyle.OutlinePen.LineJoin = DrawingLineJoin.Round;
Application["water2Layer"] = layer;
}
if (Application["sm_street1Layer"] == null)
{
layer = new ShapeFileFeatureLayer(Path.Combine(AppDomain.CurrentDomain.BaseDirectory, @CommonTypes.STREETLAYER1), ShapeFileReadWriteMode.ReadOnly);
layer.ZoomLevelSet.ZoomLevel14.DefaultLineStyle.OuterPen = new GeoPen(GeoColor.FromArgb(200, GeoColor.StandardColors.WhiteSmoke), 5);
layer.ZoomLevelSet.ZoomLevel14.ApplyUntilZoomLevel = ApplyUntilZoomLevel.Level15;
Application["sm_street1Layer"] = layer;
}
if (Application["sm_street1labelLayer"] == null)
{
layer = new ShapeFileFeatureLayer(Path.Combine(AppDomain.CurrentDomain.BaseDirectory, @CommonTypes.STREETLAYER1), ShapeFileReadWriteMode.ReadOnly);
layer.ZoomLevelSet.ZoomLevel14.ApplyUntilZoomLevel = ApplyUntilZoomLevel.Level15;
layer.ZoomLevelSet.ZoomLevel14.CustomStyles.Add(TextStyles.LocalRoad1("NAME"));
Application["sm_street1labelLayer"] = layer;
}
if (Application["street1Layer"] == null)
{
layer = new ShapeFileFeatureLayer(Path.Combine(AppDomain.CurrentDomain.BaseDirectory, @CommonTypes.STREETLAYER1), ShapeFileReadWriteMode.ReadOnly);
layer.ZoomLevelSet.ZoomLevel16.CustomStyles.Add(LineStyles.LocalRoad1);
layer.ZoomLevelSet.ZoomLevel16.ApplyUntilZoomLevel = ApplyUntilZoomLevel.Level20;
Application["street1Layer"] = layer;
}
if (Application["street1labelLayer"] == null)
{
layer = new ShapeFileFeatureLayer(Path.Combine(AppDomain.CurrentDomain.BaseDirectory, @CommonTypes.STREETLAYER1), ShapeFileReadWriteMode.ReadOnly);
layer.ZoomLevelSet.ZoomLevel16.ApplyUntilZoomLevel = ApplyUntilZoomLevel.Level20;
TextStyle textStyle = TextStyles.LocalRoad1("NAME");
textStyle.TextLineSegmentRatio = double.MaxValue;
textStyle.SplineType = SplineType.StandardSplining;
layer.ZoomLevelSet.ZoomLevel16.CustomStyles.Add(textStyle);
Application["street1labelLayer"] = layer;
}
if (Application["hwyLayer"] == null)
{
layer = new ShapeFileFeatureLayer(Path.Combine(AppDomain.CurrentDomain.BaseDirectory, @CommonTypes.HWYLAYER), ShapeFileReadWriteMode.ReadOnly);
layer.ZoomLevelSet.ZoomLevel13.CustomStyles.Add(LineStyles.Highway1);
layer.ZoomLevelSet.ZoomLevel13.ApplyUntilZoomLevel = ApplyUntilZoomLevel.Level20;
Application["hwyLayer"] = layer;
}
if (Application["hwylabelLayer"] == null)
{
layer = new ShapeFileFeatureLayer(Path.Combine(AppDomain.CurrentDomain.BaseDirectory, @CommonTypes.HWYLAYER), ShapeFileReadWriteMode.ReadOnly);
layer.ZoomLevelSet.ZoomLevel13.ApplyUntilZoomLevel = ApplyUntilZoomLevel.Level20;
TextStyle textStyle = TextStyles.LocalRoad1("NAME");
textStyle.TextLineSegmentRatio = double.MaxValue;
textStyle.SplineType = SplineType.StandardSplining;
layer.ZoomLevelSet.ZoomLevel13.CustomStyles.Add(textStyle);
Application["hwylabelLayer"] = layer;
}
mapEngine.StaticLayers.Add("usaLayer", (ShapeFileFeatureLayer)Application["usaLayer"]);
mapEngine.StaticLayers.Add("worldLayer", (ShapeFileFeatureLayer)Application["worldLayer"]);
mapEngine.StaticLayers.Add("canadaLayer4", (ShapeFileFeatureLayer)Application["canadaLayer4"]);
mapEngine.StaticLayers.Add("oceanLayer", (ShapeFileFeatureLayer)Application["oceanLayer"]);
mapEngine.StaticLayers.Add("islandLayer", (ShapeFileFeatureLayer)Application["islandLayer"]);
mapEngine.StaticLayers.Add("landuseALayer", (ShapeFileFeatureLayer)Application["landuseALayer"]);
mapEngine.StaticLayers.Add("landuseBLayer", (ShapeFileFeatureLayer)Application["landuseBLayer"]);
mapEngine.StaticLayers.Add("landcustLayer", (ShapeFileFeatureLayer)Application["landcustLayer"]);
mapEngine.StaticLayers.Add("water1Layer", (ShapeFileFeatureLayer)Application["water1Layer"]);
mapEngine.StaticLayers.Add("water2Layer", (ShapeFileFeatureLayer)Application["water2Layer"]);
mapEngine.StaticLayers.Add("sm_street1Layer", (ShapeFileFeatureLayer)Application["sm_street1Layer"]);
mapEngine.StaticLayers.Add("sm_street1labelLayer", (ShapeFileFeatureLayer)Application["sm_street1labelLayer"]);
mapEngine.StaticLayers.Add("street1Layer", (ShapeFileFeatureLayer)Application["street1Layer"]);
mapEngine.StaticLayers.Add("street1labelLayer", (ShapeFileFeatureLayer)Application["street1labelLayer"]);
mapEngine.StaticLayers.Add("hwyLayer", (ShapeFileFeatureLayer)Application["hwyLayer"]);
mapEngine.StaticLayers.Add("hwylabelLayer", (ShapeFileFeatureLayer)Application["hwylabelLayer"]);
mapEngine.OpenAllLayers();
mapEngine.DrawStaticLayers(bitmap, GeographyUnit.DecimalDegree);
mapEngine.CloseAllLayers();
Thanks