Получить выбранную координату пина с помощью каркаса 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);
}
Дайте знать, если у вас появятся вопросы