6

iPhoneで以下を実装する方法について誰かアイデアがありますか? 米国の地図があり、さまざまな色のさまざまな地域 (気候地域だと思います) があります。それらは長方形ではなく、州、郵便番号、郡、またはその他の定義された線に従っていません。したがって、私たちの地域は非常に丸みを帯びており、必ずしも連続しているわけではありません。

ユーザーが自分の地域をクリックできるようにしたいと思っています。ユーザーがどこからどの地域に触れたかを知ることができれば幸いです。曲線、これを行う方法がわかりません。

何か案は?

編集: 地域はこのように難しいかもしれません... リンクテキスト

4

2 に答える 2

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);

1 つの CGPathRef で複数の個別のサブパスを作成でき、包含をチェックするときにすべてのサブパスがチェックされることに注意してください。

必要に応じて、円弧や曲線を使用して線を正しく作成することもできますが、それは私があまり慣れていないことです.

于 2009-05-15T22:59:27.873 に答える
8

ヒット テストを行うには、色分けされたビットマップが必要な場合があります。

表示するビットマップは 1 つですが、単一の色分けされた領域を持つ別のビットマップがあります。ユーザーが表示マップをクリックすると、ヒット テスト マップでそのピクセルの色を確認し、適切なアクションを実行します。

于 2009-05-18T17:24:22.697 に答える