Получить выбранную координату пина с помощью каркаса MapKit (Objective-C)

У меня есть регион карты с примерно десятью аннотированными объектами MapPin (координаты извлекаются из plist). В приведенном ниже коде 'location' - это массив NSMutable, содержащий широту и долготу аннотации к выводу.

for (int i = 0; i<[locations count]; i++) {
        MKCoordinateSpan span = MKCoordinateSpanMake(0, 0);
        CLLocationCoordinate2D center = CLLocationCoordinate2DMake(0, 0);
        pinRegion = MKCoordinateRegionMake(center, span);
        MapPin *pin = [[MapPin alloc] init];

        pinRegion.center.longitude = [locations[i][0] doubleValue];
        pinRegion.center.latitude  = [locations[i][1] doubleValue];
        pin.title = names[i];
        pin.coordinate = pinRegion.center;

        [self.mapView addAnnotation:pin];

}

Выбрав любой вывод, я хочу вернуть его координату. Я могу проверить любой адрес объекта pin следующим образом:

NSLog(@"%@", self.mapView.selectedAnnotations);

... показывает уникальный адрес для выбранного контакта, такой как "<MapPin: 0x16d2f610>"

Но я не знаю, как получить доступ к объектам координатных свойств, таких как долгота и широта.

Пожалуйста, вы можете помочь?

Спасибо!

1 ответ

Убедитесь, что вашему представлению карты присвоен делегат (в этом примере мы будем использовать ваш контроллер представления)

    mapView.delegate = self

Затем обработайте делегат обратного вызова для отводов аннотаций, подобных этому:

стриж

func mapView(mapView: MKMapView, didSelectAnnotationView view: MKAnnotationView)
    {
        if let annotationCoordinate = view.annotation?.coordinate
        {
            print("User tapped on annotation with title: \(annotationCoordinate")
        }
    }

Цель - С

- (void)mapView:(MKMapView *)mapView didSelectAnnotationView:(MKAnnotationView *)view{

      NSLog(view.annotation.coordinate);
}

Дайте знать, если у вас появятся вопросы

Другие вопросы по тегам