Кто-нибудь может предложить хороший учебник по реализации функции перетаскивания для MKPinAnnotationView
в iPhone MKMapView
?
Реализация функции перетаскивания MKPinAnnotationView?
comment
Дубликат: stackoverflow.com/questions/11927692/ и многие другие
- person MCKapur   schedule 24.12.2012
Ответы (2)
вы можете найти демонстрацию исходного кода для функции перетаскивания MKPinAnnotationView по этой ссылке .
Обновление: ссылка на проект Github, указанная в приведенном выше URL-адресе сайта, не работает. Но я нашел новый пример проекта для этого по этот URL.
person
Sunil Zalavadiya
schedule
24.12.2012
Чтобы сделать аннотацию перетаскиваемой, установите для свойства перетаскивания вида аннотации значение YES.
Обычно это делается в методе делегата viewForAnnotation, поэтому убедитесь, что вы установили для делегата MKMapView
значение self
и соответствуете ему в файле .h.
Например:
- (MKAnnotationView *)mapView:(MKMapView *)mapView viewForAnnotation:(id<MKAnnotation>)annotation
{
if ([annotation isKindOfClass:[MKUserLocation class]])
return nil;
static NSString *reuseId = @"pin";
MKPinAnnotationView *pav = (MKPinAnnotationView *)[mapView dequeueReusableAnnotationViewWithIdentifier:reuseId];
if (pav == nil)
{
pav = [[MKPinAnnotationView alloc] initWithAnnotation:annotation reuseIdentifier:reuseId];
pav.draggable = YES; // Right here baby!
pav.canShowCallout = YES;
}
else
{
pav.annotation = annotation;
}
return pav;
}
Итак, вот код для управления действием перетаскивания аннотаций:
- (void)mapView:(MKMapView *)mapView
annotationView:(MKAnnotationView *)annotationView
didChangeDragState:(MKAnnotationViewDragState)newState
fromOldState:(MKAnnotationViewDragState)oldState
{
if (newState == MKAnnotationViewDragStateEnding) // you can check out some more states by looking at the docs
{
CLLocationCoordinate2D droppedAt = annotationView.annotation.coordinate;
NSLog(@"dropped at %f,%f", droppedAt.latitude, droppedAt.longitude);
}
}
Это должно помочь!
person
MCKapur
schedule
24.12.2012