我必须开发一个可拖动和可缩放的世界地图,并且在一个封闭的系统上,不能依赖谷歌地图之类的东西。
这不会是一个完整的“地图”应用程序,它会在缩放时显示更多细节,但基本上会用各种针脚显示世界,当缩放时,放大当前居中的地图区域在阶段。
我已经能够使用 Kinetic.Path 方法创建地图,还能够创建滑块来设置该 Path 元素的比例因子。我还将该元素的可拖动状态设置为 true。
但是在缩放时,它总是缩放到路径的左上角,所以基本上是坐标(0,0)。我已经使用 setOffset() 将路径偏移量移动到路径的中心(0.5 宽度,0.5 高度)。这有将图像的 3/4 放在舞台外的副作用,因此我将路径的 XY 调整为宽度的 0.5 和高度的 0.5,这又使其居中。
所以我现在有一个位于舞台中心的路径,当缩放时,会缩放到路径的中心。美丽的。但是,当我拖动它然后再次缩放时,它会继续根据路径的中心进行缩放。我需要缩放点(我假设它是由 setOffset() 控制的)以相对于舞台中心保持居中。这样,当他们拖动路径并继续缩放时,它将缩放到视图的中心。
我尝试了各种数学(这不是我的强项)来尝试调整拖动后的偏移量,但我似乎无法让它正常工作。任何人都可以向我解释这种模式吗?