получить широту и долготу из точки в MKMapView? - PullRequest
0 голосов
/ 16 августа 2010

Я просто хочу реализовать небольшую функцию, которая позволяет системе получить местоположение на MKMapView, где пользователь коснулся. Я написал некоторый код следующим образом:

#import "UIViewTouch.h"


@implementation UIViewTouch
@synthesize viewTouched;

- (UIView *)hitTest:(CGPoint)point withEvent:(UIEvent *) event{
    NSLog(@"Hit Test");
    NSLog(@"x = %f, y = %f", point.x, point.y);
    MKMapView *mapView = (MKMapView *) [self.subviews objectAtIndex:0];
    CLLocationCoordinate2D coordinate = [mapView convertPoint:point toCoordinateFromView:self];
    NSLog(@"Lat = %f, Lng = %f", coordinate.latitude,coordinate.longitude);
        //MapAnnotation is a custom class and confirms to MKAnnotation.
    MapAnnotation *annotation = [[MapAnnotation alloc] initWithCoordinate:coordinate];
    [mapView addAnnotation:annotation];
    return [super hitTest:point withEvent:event];
}

- (BOOL) pointInside:(CGPoint)point withEvent:(UIEvent *)event{
    return [super pointInside:point withEvent:event];
}

@end

Может нормально работать, если я не добавлю аннотацию на MKMapView, в противном случае приложение выдаст исключение:

Завершение приложения из-за необработанного исключения 'NSInvalidArgumentException', причина: '- [TESTViewController openCallout:]: нераспознанный селектор отправлен на экземпляр 0x6b60180 '

Есть идеи?

Большое спасибо!

Ответы [ 2 ]

0 голосов
/ 17 августа 2010

Не совсем связано, но вы должны реализовать сенсорную обработку в touchesBegan: withEvent :.Самопроизвольное добавление аннотации в hitTest: withEvent: в лучшем случае сомнительно, поскольку, вероятно, добавит вид к представлению карты ...

0 голосов
/ 16 августа 2010

Ваш код выглядит хорошо для меня. Как выглядит стек вызовов в точке исключения? Есть ли у вас какие-либо вызовы, по-видимому, несуществующего селектора -openCallout:?

...