ユーザーが地図に触れるとアノテーションを追加する際にいくつかの問題があります。MapKitとUIGestureRecognizerを使用して注釈ピンを追加する
私はUIGestureRecognizer
を使用してユーザーの接触を検出しています。
長押しが検出されると、私はこの関数を呼んでいる:
- (void)handleLongPressGesture:(UIGestureRecognizer*)gestureRecognizer{
if (gestureRecognizer.state == UIGestureRecognizerStateEnded) return;
NSLog(@"long press");
CGPoint touchPoint = [gestureRecognizer locationInView:mapView];
CLLocationCoordinate2D touchMapCoordinate =
[mapView convertPoint:touchPoint toCoordinateFromView:mapView];
RdvAnnotation *rdvAnnotation = [[RdvAnnotation alloc] init];
[rdvAnnotation initWithCoordinate:touchMapCoordinate];
[mapView removeAnnotations:mapView.annotations];
[mapView addAnnotation:rdvAnnotation];
[rdvAnnotation release]; }
私は缶は、コンソールでのNSLogを参照してrdvAnnotation
は座標良いで初期化されます。
マップ上に注釈が表示されない理由がわかりません。
ここに私の- (MKAnnotationView *)mapView:(MKMapView *)theMapView viewForAnnotation:(id <MKAnnotation>)annotation
方法です:あなたは上の二回のinitを呼び出している
RdvAnnotation *rdvAnnotation = [[RdvAnnotation alloc] init];
[rdvAnnotation initWithCoordinate:touchMapCoordinate];
:私はちょうど奇妙なようで何かに気づいた
- (void)viewDidLoad {
[super viewDidLoad];
mapView = [[MKMapView alloc] initWithFrame:self.view.frame];
[mapView setShowsUserLocation:TRUE];
[mapView setMapType:MKMapTypeStandard];
[mapView setDelegate:self];
CLLocationManager *locationManager=[[CLLocationManager alloc] init];
[locationManager setDelegate:self];
[locationManager setDesiredAccuracy:kCLLocationAccuracyNearestTenMeters];
[locationManager startUpdatingLocation];
self.navigationItem.title = @"Rendez-vous" ;
}
' - (MKAnnotationView *)mapView:(MKMapView *)mapView viewForAnnotation:(id)注釈' MapViewデリゲートを実装しましたか?これは、実際のビューが作成される場所です。 –
adig
はい、私は質問を更新しました。あなたは間違ったことを見ますか? – Serviet
大丈夫です。ジェスチャの場所に関連したもので、コンバージョンを調整できますか?座標がマップビューの可視領域にあるかどうか確認できますか? – adig