iPhone,地图,可点击的非矩形区域

Mat*_*wdy 6 iphone imagemap

任何人对如何在iPhone上实现以下内容有任何想法?我们有一张美国地图,它有不同的颜色区域(气候区域,我相信).它们不是矩形的,不遵循州或邮政编码或县或任何其他定义的行.所以,我们的地区非常圆,甚至不一定是连续的.

我很乐意让我们的用户能够点击他们的区域,我可以告诉他们从哪里触及它所在的区域,但对于我的生活,没有做出许多很多矩形来做到最合适曲线,我无法弄清楚如何做到这一点.

有任何想法吗?

编辑:区域可能像这个... 链接文本一样难

Ed *_*rty 10

这些地区是如何定义的?如果可以获取点数据,则使用以下命令创建CGPath:

CGPathRef path = CGPathCreateMutable();
CGPathMoveToPoint(path,null,xpoints[0],ypoints[0])
for (int i = 1; i < numpoints; ++i) {
  CGPathAddLineToPoint(path,null,xpoints[i],ypoints[i]);
}
CGPathCloseSubpath(path);
Run Code Online (Sandbox Code Playgroud)

然后,每当用户触摸时,对于每个区域,检查它是否包含触摸点:

if (CGPathContainsPoint(path,null,touchPoint,false)) ...
Run Code Online (Sandbox Code Playgroud)

当你完成这些地区时,别忘了发布:

CGPathRelease(path);
Run Code Online (Sandbox Code Playgroud)

请注意,您可以在一个CGPathRef中创建多个单独的子路径,并在检查包含时检查所有子路径.

如果你愿意,你可以尝试使用弧线或曲线来获得正确的线条,但这是我不太熟悉的东西.


Mik*_*ike 8

也许你需要一个颜色编码的位图来进行你的命中测试.

您可以显示一个位图,但另一个位图具有单色编码区域.当用户单击显示地图时,您可以检查该命中测试图中该像素的颜色,然后执行相应的操作.

  • +1用于一个非常古老和非常整洁的帽子戏法 (3认同)