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

时间:2009-05-15 20:06:38

标签: iphone imagemap

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

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

有什么想法吗?

编辑:这些地区可能会像这样...... link text

2 个答案:

答案 0 :(得分: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);

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

if (CGPathContainsPoint(path,null,touchPoint,false)) ...

不要忘记在完成区域后发布:

CGPathRelease(path);

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

如果你愿意,你可以尝试使用弧线或曲线来确定正确的线条,但这是我不太熟悉的事情。

答案 1 :(得分:8)

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

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