private double currentZoom = 12.0000;
 
public Page()
{     InitializeComponent();
 
viewMap.View = new Microsoft.VirtualEarth.MapControl.MapViewSpecification(
    new Location(40.7025506014784, -73.9726731532458), 12.0000);
 
viewMap.ViewChangeStart += new EventHandler<MapEventArgs>(viewMap_ViewChangeStart);
viewMap.ViewChangeEnd += new EventHandler<MapEventArgs>(viewMap_ViewChangeEnd);
}
void viewMap_ViewChangeEnd(object sender, MapEventArgs e)
{
    var m = (Map)sender;
    if (currentZoom != m.ZoomLevel)
    {
        if (m.ZoomLevel < 12)
        {
            if (m.ZoomLevel == 11)
            {
                CourseMap4Scale.ScaleX = 1 / 2.0;
                CourseMap4Scale.ScaleY = 1 / 2.0;
 
                CourseMapScale.ScaleX = CourseMapScale.ScaleY = 1.245 / 2.0;
 
                CourseScaleTranslate.X = -24;
                CourseScaleTranslate.Y = 415; //X="-48" Y="830"
                
            }
            else
            {
                CourseMap4Scale.ScaleX = 1 / Math.Pow((12 - m.ZoomLevel), 2);
                CourseMap4Scale.ScaleY = 1 / Math.Pow((12 - m.ZoomLevel), 2);
 
                CourseMapScale.ScaleX = CourseMapScale.ScaleY = 1.245 / Math.Pow((12 - m.ZoomLevel), 2);
 
                CourseScaleTranslate.X = -48 / Math.Pow((12 - m.ZoomLevel), 2);
                CourseScaleTranslate.Y = 830 / Math.Pow((12 - m.ZoomLevel), 2); //X="-48" Y="830"
            }
        }
        else if (m.ZoomLevel > 12)
        {
            if (m.ZoomLevel == 13)
            {
                CourseMap4Scale.ScaleX = 2;
                CourseMap4Scale.ScaleY = 2;
 
                CourseMapScale.ScaleX = CourseMapScale.ScaleY = 1.245 * 2.0;
 
                CourseScaleTranslate.X = -48 * 2;
                CourseScaleTranslate.Y = 830 * 2; //X="-48" Y="830"
                
            }
            else
            {   // 14 or higher --. 4
                CourseMap4Scale.ScaleX = Math.Pow((m.ZoomLevel-12), 2);
                CourseMap4Scale.ScaleY = Math.Pow((m.ZoomLevel-12), 2);
 
                CourseMapScale.ScaleX = CourseMapScale.ScaleY = 1.245 * Math.Pow((m.ZoomLevel - 12), 2);
 
                CourseScaleTranslate.X = -48.0 * Math.Pow((m.ZoomLevel - 12.0), 2);
                CourseScaleTranslate.Y = 830.0 * Math.Pow((m.ZoomLevel - 12.0), 2); //X="-48" Y="830"
            }
        }
        else
        {
            CourseMap4Scale.ScaleX = 1;
            CourseMap4Scale.ScaleY = 1;
 
            CourseMapScale.ScaleX = CourseMapScale.ScaleY = 1.245;
 
            CourseScaleTranslate.X = -48 ;
            CourseScaleTranslate.Y = 830 ;
        }
        currentZoom = m.ZoomLevel;
    }
    NewCourseMap.Visibility = Visibility.Visible;
    CourseMap4.Visibility = Visibility.Visible;
}
 
void viewMap_ViewChangeStart(object sender, MapEventArgs e)
{
    var m = (Map)sender;
    if (currentZoom != m.ZoomLevel)
    {
        NewCourseMap.Visibility = Visibility.Collapsed;
        CourseMap4.Visibility = Visibility.Collapsed;
    }
}