データモデルを改善するために編集
これを行うには、マップ イメージを背景に持つ UIView を用意します。これは、UIImageView を使用するか、drawRect で自分で画像をレンダリングすることによって行うことができます。
次に、いくつかの CGPath 参照を定義します。このようなことを行うことで、建物ごとに 1 つ...ポイントの配列から CGPathRef を作成する方法ポイントは、各建物の角になります。
これらのパスを何らかの方法で配列に格納します。「クリック可能な」建物ごとに 1 つのパスが必要です。
建物オブジェクトか何かの中にパスを保存します...
@interface Building : NSObject
@property (nonatomic) CGPath path;
@end
UIView サブクラスでオーバーライドします- (void)touchesBegan...
。次に、タッチポイントを取得し、パスを反復処理して、タッチされたパスを見つけることができます...
- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
{
UITouch *touch = [touches anyObject];
CGPoint touchPoint = [touch locationInView:self];
for (Building *building in self.buildings) {
if (CGPathContainsPoint(building.path, CGAffineTransformIdentity, touchPoint, YES)) {
//the touch was inside this building!
//now do something with this knowledge.
}
}
}