Try replacing UV mapping with shader sampling based on view direction
Make the panning match the cursor
Enforce a minimum zoom that will keep the edges of the sphere from showing
This probably just needs simple math with the aspect and/or the viewport's diagonal length.
Enforce a maximum zoom that matches the pixel density of the original image at its natural dimensions, normal to the camera
Choose a pleasant initial zoom
Allow pinch-zooming
Add data- attribute for minimum zoom
Add data- attribute for starting angle
Add data- attributes for canvas dimensions
Automatically create canvas for each marked once it loads, and display:none the
Set default canvas dimensions to match the size of the image
Add a class to the