为了跟进,我最终只是禁用了默认的缩放和平移选项,然后编写了一个函数来平移 svg 和表单元素,以便它们一起移动。
(其中一些代码的灵感来自另一个 Stack Exchange 答案,我曾短暂查找过该答案但无法再找到。如果我记得,我稍后会参考它。)
像大多数解决方案一样,以这种方式解决问题会带来更多问题。例如,表单可以完美地随鼠标移动,但由于某种原因,函数 panBy(xpixel, ypixel) 平移了太多(鼠标的微小移动会将其从页面中抛出。)
我想这是我的解决方案,尽管它有这个问题。我已经坚持了这么久,并且很感激有很多人可以帮助我弄清楚为什么 panBy 表现得很奇怪。
// Pan when mouse is dragged
$(window).on('mousedown', function(event){
var initClick = {
x : event.pageX,
y : event.pageY
};
var initPosition = $('#form1').offset();
var handlers = {
mousemove : function(event){
panZoom.panBy({x: event.pageX - initClick.x, y: event.pageY - initClick.y});
$('#form1').css({"top": initPosition.top + (event.pageY - initClick.y),
"left": initPosition.left + (event.pageX - initClick.x)});
},
mouseup : function(event){
$(this).off(handlers);
}
};
$(document).on(handlers);
});