public static IPoint TileToGeographic(int tileX, int tileY, int zoom)
{
// From http://wiki.openstreetmap.org/wiki/Slippy_map_tilenames#C.23
IPoint point = new PointClass();
double n = Math.PI - ((2.0 * Math.PI * tileY) / Math.Pow(2.0, zoom));
point.X = (float)((tileX / Math.Pow(2.0, zoom) * 360.0) - 180.0);
point.Y = (float)(180.0 / Math.PI * Math.Atan(Math.Sinh(n)));
return point;
}