public static BoundingBox GetWgs84ImageBoundingBox(int row, int column, int zoom)
        {
            int numberOfImages = (int)Math.Pow(2, zoom);

            var unit = 360.0 / numberOfImages;

            double minLongitude = column * unit;

            double maxLongitude = (column + 1) * unit;

            minLongitude = minLongitude - 180;

            maxLongitude = maxLongitude - 180;

            var yUnit = (MaxIsometricLatitude - MinIsometricLatitude) / numberOfImages;

            var maxTempRow = row;

            double minTempRow = row;

            if (row > numberOfImages / 2.0)
            {
                maxTempRow = (int)(row - numberOfImages / 2.0);

                minTempRow = maxTempRow + 1;

                yUnit *= -1;
            }
            else
            {
                maxTempRow = (int)(numberOfImages / 2.0) - row;

                minTempRow = maxTempRow - 1;
            }

            var latitude01 = MapProjects.IsometricLatitudeToGeodeticLatitude(maxTempRow * yUnit, FirstEccentricity);

            var latitude02 = MapProjects.IsometricLatitudeToGeodeticLatitude(minTempRow * yUnit, FirstEccentricity);

            double minLatitude, maxLatitude;

            if (latitude01 < latitude02)
            {
                minLatitude = latitude01;

                maxLatitude = latitude02;
            }
            else
            {
                minLatitude = latitude02;

                maxLatitude = latitude01;
            }

            //var min = Transformation.ChangeDatum(new Point(minLongitude, minLatitude), Ellipsoids.Sphere, Ellipsoids.WGS84);

            //var max = Transformation.ChangeDatum(new Point(maxLongitude, maxLatitude), Ellipsoids.Sphere, Ellipsoids.WGS84);

            //return new BoundingBox(min.X, min.Y, max.X, max.Y);

            return(new BoundingBox(minLongitude, minLatitude, maxLongitude, maxLatitude));
        }