I will answer the question 2 and let Johnny answer question1.
All layers inheriting from RasterLayer (EcwRasterLayer, GdiPlusRasterLayer, GeoTiffRasterLayer, MrSidRasterLayer and WmsRasterLayer), basically all image layers, you use the properties LowerThreshold and UpperThreshold to control between what scales the layer is going to be displayed. For example, if you use the GeoTiff World.tif that comes with the "How Do I" samples and you want to display that layer between the scales 1: 73,000,000 and 1: 4,000,000, then you would use the following code: (The code is for Desktop but the same principles apply for Web)
private void Post8553()
{
winformsMap1.MapUnit = GeographyUnit.DecimalDegree;
GeoTiffRasterLayer geoTiff = new GeoTiffRasterLayer(@"../../data/world.tif");
geoTiff.LowerThreshold = 4000000;
geoTiff.UpperThreshold = 73000000;
LayerOverlay layerOverlay = new LayerOverlay();
layerOverlay.Layers.Add(geoTiff);
winformsMap1.Overlays.Add(layerOverlay);
geoTiff.Open();
winformsMap1.CurrentExtent = geoTiff.GetBoundingBox();
geoTiff.Close();
winformsMap1.Refresh();
}
private void winformsMap1_CurrentScaleChanged(object sender, CurrentScaleChangedWinformsMapEventArgs e)
{
double scale = Math.Round(winformsMap1.CurrentScale,0);
lblScale.Text = "1: " + scale;
}
For all Layers inheriting from FeatureLayers such as ShapefileFeatureLayers etc, for the same purpose, we have more control because a feature layer can be displayed in different ways using different styles. To help the developer, we offer the API ZoomLevels that is a collection of 20 preset zoom levels their own upper and lower scales of each zoom levels. You can also use your own custom zoom levels if you wish. Actually, we have various Code Community samples on that subject such as Map Scales and Zoom Level Partitioning. wiki.thinkgeo.com/wiki/Map_Suite_We...ng_Samples