任何人对如何在iPhone上实现以下内容有任何想法?我们有一张美国地图,它有不同的颜色区域(气候区域,我相信)。它们不是矩形的,不遵循州或邮政编码或县或任何其他定义的行。所以,我们的地区非常圆,甚至不一定是连续的。
我愿意让我们的用户能够点击他们的区域,我可以告诉他们从哪里触及它所在的区域,但对于我的生活,没有做出许多很多矩形来做最适合曲线,我无法弄清楚如何做到这一点。
有什么想法吗?
编辑:这些地区可能会像这样...... link text
答案 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)
也许你需要一个颜色编码的位图来进行你的命中测试。
您可以显示一个位图,但另一个位图具有单色编码区域。当用户点击显示地图时,您可以检查该命中测试地图中该像素的颜色,然后执行相应的操作。