Как я могу получить любую информацию, например, lat, долго, когда я касаюсь MKMapView в iPhone / iPad? - PullRequest
1 голос
/ 02 сентября 2011

У меня есть mapView, использующий файл xib, теперь, когда я касаюсь карты, я хочу указать широту и долготу этой конкретной области, так что есть какая-нибудь сыворотка или любой пример кода, который поможет мне в этой задаче. Спасибо заранее.

Ответы [ 3 ]

6 голосов
/ 02 сентября 2011

В iOS 3.2 или выше, вероятно, лучше и проще использовать UIGestureRecognizer с видом карты вместо того, чтобы пытаться разделить его на классы и перехватывать касания вручную.

Сначала добавьте распознаватель жестов на картуview:

UITapGestureRecognizer *tgr = [[UITapGestureRecognizer alloc] 
        initWithTarget:self action:@selector(tapGestureHandler:)];
tgr.delegate = self;  //also add <UIGestureRecognizerDelegate> to @interface
[mapView addGestureRecognizer:tgr];
[tgr release];

Далее, внедрите shouldRecognizeSimultaneouslyWithGestureRecognizer и верните YES, чтобы ваш распознаватель жестов касания мог работать одновременно с картой (в противном случае касания на булавках не будут обрабатываться картой автоматически).):

- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer 
    shouldRecognizeSimultaneouslyWithGestureRecognizer
        :(UIGestureRecognizer *)otherGestureRecognizer
{
    return YES;
}

Наконец, реализуйте обработчик жестов:

- (void)tapGestureHandler:(UITapGestureRecognizer *)tgr
{
    CGPoint touchPoint = [tgr locationInView:mapView];

    CLLocationCoordinate2D touchMapCoordinate 
        = [mapView convertPoint:touchPoint toCoordinateFromView:mapView];

    NSLog(@"tapGestureHandler: touchMapCoordinate = %f,%f", 
        touchMapCoordinate.latitude, touchMapCoordinate.longitude);
}
1 голос
/ 02 сентября 2011

Это что-то вроде хитрости.

Сначала вам нужно создать подкласс mkmapview

в

- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event

метод, вы можете найти местоположение касания, а затем с помощью этого метода

- (CLLocationCoordinate2D)convertPoint:(CGPoint)point toCoordinateFromView:(UIView *)view

вы можете найти широту и длину ..

0 голосов
/ 08 октября 2017

В Swift 3:

func tapGestureHandler(_sender: UITapGestureRecognizer) {
    let touchPoint = _sender.location(in: mapView)
    let touchMapCoordinate = mapView.convert(touchPoint, toCoordinateFrom:mapView)

    print("latitude: \(touchMapCoordinate.latitude), longitude: \(touchMapCoordinate,longitude)")
}
...