public static void LongLatToPixelXY(double longitude, double latitude, double levelOfDetail, out double pixelX, out double pixelY)
        {
            latitude  = VirtualEarthTileSystem.Clip(latitude, -85.05112878, 85.05112878);
            longitude = VirtualEarthTileSystem.Clip(longitude, -180.0, 180.0);
            double num  = (longitude + 180.0) / 360.0;
            double num2 = Math.Sin(latitude * 3.1415926535897931 / 180.0);
            double num3 = 0.5 - Math.Log((1.0 + num2) / (1.0 - num2)) / 12.566370614359172;
            uint   num4 = VirtualEarthTileSystem.MapSize(levelOfDetail);

            pixelX = VirtualEarthTileSystem.Clip(num * (double)num4 + 0.5, 0.0, (double)(num4 - 1));
            pixelY = VirtualEarthTileSystem.Clip(num3 * (double)num4 + 0.5, 0.0, (double)(num4 - 1));
        }
 public static double GroundResolution(double latitude, int levelOfDetail)
 {
     latitude = VirtualEarthTileSystem.Clip(latitude, -85.05112878, 85.05112878);
     return(Math.Cos(latitude * 3.1415926535897931 / 180.0) * 2.0 * 3.1415926535897931 * 6378137.0 / (double)VirtualEarthTileSystem.MapSize(levelOfDetail));
 }