У меня проблема с информацией выноски перетаскиваемой аннотации: я использую MKReverseGeocoder, чтобы получить адрес координат, соответствующих положению аннотации.
Но есть кое-что, что мне не удаетсядля контроля: каждый раз, когда перетаскиваемая аннотация удаляется, появляется информация выноски.Очень часто MKReverseGeocoder не успевал обновить информацию об адресе, прежде чем это произойдет.Таким образом, в этих обычных случаях выноска аннотации отображает информацию об адресе, соответствующую предыдущим координатам аннотации.
Вот код:
1) Метод делегата, вызываемый при удалении аннотации:
- (void)mapView:(MKMapView *)mapView annotationView:(MKAnnotationView *)annotationView didChangeDragState:(MKAnnotationViewDragState)newState fromOldState:(MKAnnotationViewDragState)oldState{
if (oldState == MKAnnotationViewDragStateDragging) {
MKReverseGeocoder *reverseGeocoder = [[MKReverseGeocoder alloc] initWithCoordinate:annotationView.annotation.coordinate];
reverseGeocoder.delegate = self;
[reverseGeocoder start];
while (reverseGeocoder.querying) {
[[NSRunLoop currentRunLoop] runMode:NSDefaultRunLoopMode beforeDate:[NSDate distantFuture]];
}
[reverseGeocoder release];
}
}
2) Метод делегата вызывается, когда reverseGeocoder находит ответ:
- (void)reverseGeocoder:(MKReverseGeocoder *)geocoder didFindPlacemark:(MKPlacemark *)placemark {
NSString *newSubtitle = [NSString stringWithFormat:@"%@ %@, %@ %@, %@",placemark.subThoroughfare,placemark.thoroughfare,placemark.postalCode,placemark.locality, placemark.country];
Grocery *draggableGrocery = [myMapView.annotations objectAtIndex:0];
draggableGrocery.address = newSubtitle;
self.addressNewGrocery = newSubtitle;
}
Есть идеи?
Спасибо!