使用jTopo绘制的拓扑图在移动端如何实现拖动、缩放?

使用jTopo绘制的拓扑图在PC端上可以用鼠标进行拖动和缩放操作,但在移动端却无法用手指进行拖动和缩放操作,请教各位大大,有做够过类似案例吗? 指点一二平板模式下,无法拖拽,源码没看懂怎么修改

阅读 4.8k
2 个回答
// 1、定义这两个函数
function touchEventToMouseEvent(event, eventType) {
        if (!event.originalEvent || !event.originalEvent.targetTouches || event.originalEvent.targetTouches.length != 1)
            return false;
        var te = event.originalEvent.targetTouches[0];
        var clientX = te.clientX, clientY = te.clientY, screenX = te.screenX, screenY = te.screenY;

        var simEvent = new MouseEvent(eventType, {
            clientX: clientX,
            clientY: clientY,
            screenX: screenX,
            screenY: screenY,
            button: 0,
            buttons: 0
        });
        return simEvent;
    }
    
function findElm(targetElement) {
        targetElement.on('touchstart', function (e) {
            console.log('touchstart');
            console.log(e);
            var simEvent = touchEventToMouseEvent(e, 'mousedown');
            if (simEvent != null) {
                $(this)[0].dispatchEvent(simEvent);
            }
        });

        targetElement.on('touchmove', function (e) {
            e.preventDefault();
            console.log('touchmove');
            var simEvent = touchEventToMouseEvent(e, 'mousemove');
            if (simEvent != null) {
                $(this)[0].dispatchEvent(simEvent);
            }
        });

        targetElement.on('touchend', function (e) {
            console.log('touchend');
            console.log(e);
            var simEvent = touchEventToMouseEvent(e, 'mouseup');
            if (simEvent != null) {
                $(this)[0].dispatchEvent(simEvent);
            }
        });
}
   
// 2、执行 findElm(selectorElement) 即可将移动端的touch
findElm(selectorElement); 
    
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题