ユーザーが触れた場所に基づいて、地図に注釈を付ける方法を見つけようとしています。
私はサブクラス化を試みて、発砲MKMapView
するものを探しましたが、結局のところ、標準のtouchsメソッドを使用していません。touchesBegan
MKMapView
また、をサブクラス化し、子としてUIView
を追加しMKMapView
てから、HitTestとをリッスンしてみましtouchesBegan
た。これは多少機能します。私の地図がフルサイズの場合は、次のUIView
ようなものがあります
- (UIView *)hitTest:(CGPoint)point withEvent:(UIEvent *)event {
return map;
}
そしてそれはうまくいきます、私touchesBegan
は使用してポイントを得ることができるでしょう
- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event {
for (UITouch *touch in touches){
CGPoint pt = [touch locationInView:map];
CLLocationCoordinate2D coord= [map convertPoint:pt toCoordinateFromView:map];
NSLog([NSString stringWithFormat:@"x=%f y=%f - lat=%f long = %f",pt.x,pt.y,coord.latitude,coord.longitude]);
}
}
しかし、マップはスクロールしない、ダブルタップしない限りズームインしないなどの奇妙な動作をしますが、ズームアウトすることはできます。マップをビューとして返す場合にのみ機能します。ヒットテストメソッドがない場合、マップは正常に機能しますが、明らかにデータを取得しません。
座標を間違えようとしていますか?もっと良い方法があると教えてください。注釈をうまく追加する方法を知っています。ユーザーが地図に触れた場所とタイミングで注釈を追加する例を見つけることができません。