いっそ、Leaflet.js とかはどうですか?
Leaflet.jsを使って任意の画像の拡縮を行いたい - Qiita
leaflet js 画像拡大 - Google 検索
ついでに、適当にググってみた結果を貼っておきます。
https://www.jqueryscript.net/demo/Simple-jQuery-Image-Crop-Zoom-Plugin-ZoomCrop/
https://www.jqueryscript.net/demo/jQuery-Plugin-To-Pan-An-Image-In-A-Container-simplePan/
https://www.jqueryscript.net/demo/Customizable-jQuery-Image-Zoom-Pan-Plugin-panzoom/
https://www.jqueryscript.net/demo/Simple-jQuery-Image-Zoom-With-Mouse-Wheel-or-Touch-Scroll/
https://www.jqueryscript.net/demo/SVG-Zooming-Panning-Plugin-jQuery-SvgZoom/
https://www.jqueryscript.net/demo/Touch-enabled-Image-Zooming-Panning-Plugin-jQuery-imgViewer2/
https://www.jqueryscript.net/demo/Simple-Image-Viewer-jQuery/
https://www.jqueryscript.net/demo/zoom-wheel-pan-drag-image/
https://www.jqueryscript.net/demo/smooth-pan-zoom-alotta/
https://www.npmjs.com/package/react-image-zoom-pan
https://www.cssscript.com/demo/vanilla-js-library-for-image-zoom-and-pan/
https://www.cssscript.com/demo/image-pan-lc-mouse-drag/
補足依頼欄に合わせて追記
サンプル置いておきます。
https://jsfiddle.net/Lhankor_Mhy/jw91yx3p/
js
1 $.fn.ImageExpansion = function (options) {
2 var target = $(this);
3 var settings = $.extend({
4 'pan': 2,
5 'drag': 100
6 }, options);
7 /*
8 * 初期設定
9 */
10 var setImage = function (obj) {
11
12 //画像のSRC取得
13 var src = $("img", target).attr('src');
14 //右の枠の大きさ ドラッグ枠の数値 * 倍率
15 var hw = settings.drag * settings.pan;
16 $(".pan_image", target).css({ 'width': hw, 'height': hw });
17 //右の枠へ背景画像を設定
18 $(".pan_image", target).css({ 'background-image': 'url(' + src + ')' });
19 //左の画像の幅を倍率で割り、max-widthに指定する幅を得る
20 var img_w = $("img", target).width();
21 img_w = Math.floor(img_w / settings.pan);
22 var img_h = $("img", target).height();
23 img_h = Math.floor(img_h / settings.pan);
24 //左の枠の幅を上で計算した幅と高さに設定
25 $(target).css({ 'width': img_w, 'height': img_h });
26 //左の画像を上で計算した幅と高さに設定
27 $("img", target).css({ 'max-width': img_w, 'height': img_h });
28 //ドラッグ枠の大きさを設定
29 $(".pan_mouse", target).css({ 'width': settings.drag, 'height': settings.drag });
30 };
31
32 /*
33 * ドラッグ
34 */
35 $(".pan_mouse", target).draggable({
36 containment: "parent"
37 });
38
39 /*
40 * ドラッグした距離で背景画像の位置を変更
41 */
42 $(".pan_mouse", target).on('mousemove', function (e) {
43 //image_expansion ウインド上の位置
44 var div = $(target).offset();
45 var ex_left = Math.floor(div.left);
46 var ex_top = Math.floor(div.top);
47 //pan_mouse ウインド上の位置
48 var div = $('.pan_mouse', target).offset();
49 var pan_left = Math.floor(div.left);
50 var pan_top = Math.floor(div.top);
51 //image_expansion内におけるpan_mouseの上下位置差分
52 var left = (pan_left - ex_left) * settings.pan;
53 var top = (pan_top - ex_top) * settings.pan;
54
55 $(".pan_image", target).css({ 'background-position': '-' + left + 'px -' + top + 'px' });
56 });
57 return setImage($(this));
58 };