Check out on iOS and you'll notice that it shows a "Max Texture Size: 4096". Although iOS does support panorama images up to 4096*2048, there seems to be a bug in three.js. My testing has revealed that if a panorama image exceeds the size of 4096, it will automatically scale down to 4096*2048 and render correctly. However, when the image size is exactly 4096*2048, scaling doesn't occur and rendering issues arise.
To address this issue, a simple modification can be made to the function clampToMaxSize in three.js:
Instead of
if ( image.width > maxSize || image.height > maxSize ) {
Use
if ( image.width >= maxSize || image.height >= maxSize ) {
This change allows for proper scaling of images with dimensions 4096*2048. The key operation in the clampToMaxSize function is:
context.drawImage( image, 0, 0, image.width, image.height, 0, 0, canvas.width, canvas.height );