If you want to use existing jQuery plugin's, you should check out Hammer.js. It's a very nice library to work with.
However if you prefer pure Javascript solutions, you may want to check out this one:
https://github.com/rombdn/img-touch-canvas
I found it very useful for drag and zoom images on canvas using touch events.
Besides, here is my solutions, it's very simple and easy but it's a draggable only solution for using pure Javascript:
HTML:
<canvas id="canvas"></canvas>
JS:
var can = document.getElementById("canvas");
can.addEventListener("touchstart", ctxTouchStart, false);
can.addEventListener("touchmove", ctxTouchMove, false);
can.addEventListener("touchend", ctxTouchEnd, false);
var oX, oY, dX, dY, iX, iY;
iX = 0; iY = 0;
function ctxTouchStart(e) {
if (!e)
var e = event;
e.preventDefault();
mouseIsDown = 0;
oX = e.targetTouches[0].pageX - canvas.offsetLeft;
oY = e.targetTouches[0].pageY - canvas.offsetTop;
}
function ctxTouchMove(e) {
if (!e)
var e = event;
e.preventDefault();
var canX = e.targetTouches[0].pageX - canvas.offsetLeft;
var canY = e.targetTouches[0].pageY - canvas.offsetTop;
dX = canX - oX;
dY = canY - oY;
/* redraw img on canvas
* where -(iX + dX) is the startX
* and -(iY + dY) is the startY
*/
reDrawImageOnCanvas(can, img, -(iX + dX), -(iY + dY));
}
function ctxTouchEnd(e) {
if (!e)
var e = event;
e.preventDefault();
iX += dX;
iY += dY;
}
By doing so your image can be dragged through the canvas smoothly.
However I didn't figured out how to do the zooming part so I searched online and found https://github.com/rombdn/img-touch-canvas useful and switched to use this one instead. Hope my answer helps.