-1

我正在开始开发 iPad 应用程序,以帮助测量员进行建筑/现场调查。基本场景是应用程序将呈现选定建筑物或地点的平面图(可以以通常的 iPad 方式进行操作 - 缩放、旋转、平移)。然后,测量员(用户)将能够选择要放置在计划上的图钉,该图将弹出用于输入针对图钉的调查详细信息的弹出窗口。想想 iOS 地图应用程序,但使用计划/图表而不是地图,并且(我猜)使用图像坐标而不是地理信息。

我已将计划加载到 UIImageView 中,并且各种手势都工作顺利,我现在面临的一个大问题是如何在缩放/旋转时将引脚“连接”或锁定到计划/平移(并保存/恢复)。我尝试了一些想法,例如使用 addsubview 将引脚作为 UIImageView 对象添加到基本计划图像。这样做的原因是,引脚被锁定在基本图像上的位置,但是当使用手势时,它们也会随着基本图像一起缩放和旋转。然后我对这种方法提出的问题是......如何在基本图像可以缩放和旋转时跟踪与基本图像(平面图/图表)相关的引脚位置?如何防止引脚缩放(始终大小相同)?保持引脚方向?

再次,考虑到 iOS 地图应用程序(或谷歌地图),我正在寻求一些指导,以在更高级别上寻求最佳方法,但显然越详细和细节越好!

提前谢谢了。迈克尔。

4

2 回答 2

1

这个问题在我随后询问的另一个问题中得到解决,可以在这里找到... iOS - 数学帮助 - 使用捏合手势缩放基本图像需要叠加图像调整 X/Y 坐标相对

基本上,我改用了 scrollView 并使用以下计算来定位 x,y ...

newX = (pin.baseX * scrollView.zoomScale) + 
    (((pin.frame.size.width * scrollView.zoomScale) - 
    pin.frame.size.width) / 2);
newY = (pin.baseY * scrollView.zoomScale) + 
    ((pin.frame.size.height * scrollView.zoomScale) - 
    pin.frame.size.height);

注意:“pin”是从 UIImageView 继承的自定义对象,它具有“baseX”和“baseY”属性,我将 pin 的原始 x/y 坐标存储在 zoomScale 1.0 处。有关我的完整实施示例,请参阅上面的链接。谢谢。

于 2012-05-25T10:19:18.223 回答
0

您必须以数学方式计算引脚的坐标,而不是使用像素,例如,如果您的图像是 100 x 100 并且您想将引脚放在地图的中心点而不是设置 x 和 y 坐标到 (50, 50) 您将它们设置为 (image.size.width/2,image.size.height/2) 因为如果您要缩小视图,则引脚将保留在中心点。

显然,这是一个相当基本的示例,但无论您将图钉放在图像上的何处,都可以应用相同的逻辑。

希望这可以帮助。

或者

您可以通过图像的缩放程度来计算新坐标。如果图像再次为 100 x 100 并且您将其缩小到 50 x 50 并且您希望您的图钉保持在您会做的相同位置 (x / (100/50), y / (100/50))

公式为:

x = x /(原始宽度/新宽度)

y = y /(原始高度/新高度)

于 2012-05-18T16:21:08.747 回答