Кто-либо знает, должен ли там так или иначе получить кнопку на аннотацию?
Я хотел бы, чтобы местоположение можно выбрать - таким образом, можно сказать.. выберите местоположение и получите все события в том местоположении путем нажатия на кнопку.
действительно ли это возможно?
w://
Вот код, который я использовал для аннотации, он включает кнопку справа сторона пузыря. Вы можете настроить IBAction на добавление нового представления в стек для отображения того, что вы хотите
- (MKAnnotationView *)mapView:(MKMapView *)mV viewForAnnotation:(id <MKAnnotation>)annotation
{
MKPinAnnotationView *pinAnnotation = nil;
if(annotation != mapView.userLocation)
{
static NSString *defaultPinID = @"myPin";
pinAnnotation = (MKPinAnnotationView *)[mapView dequeueReusableAnnotationViewWithIdentifier:defaultPinID];
if ( pinAnnotation == nil )
pinAnnotation = [[[MKPinAnnotationView alloc] initWithAnnotation:annotation reuseIdentifier:defaultPinID] autorelease];
pinAnnotation.canShowCallout = YES;
//instatiate a detail-disclosure button and set it to appear on right side of annotation
UIButton *infoButton = [UIButton buttonWithType:UIButtonTypeDetailDisclosure];
pinAnnotation.rightCalloutAccessoryView = infoButton;
}
return pinAnnotation;
}
Я только что помог кому-то еще с этим в цели c, но я уверен, что концепция такая же и с моно. Вам нужно создать собственный объект MKAnnotationView и переопределить метод GetViewForAnnotation (viewForAnnotation в obj-c) вашего класса MKMapViewDelegate ... проверьте другой вопрос .
Когда вы создаете свой собственный объект MKAnnotationView, это в основном UIView, созданный для аннотаций карты ... вы можете просто добавить свою кнопку и другую информацию в представление, и она будет отображаться, когда пользователь нажимает на аннотацию.
Вот примерный код метода делегата:
public override MKAnnotationView GetViewForAnnotation(
MKMapView mapView,NSObject annotation) {
var annotationId = "location";
var annotationView = mapView.DequeueReusableAnnotation(annotationId);
if (annotationView == null) {
// create new annotation
annotationView = new CustomAnnotationView(annotation, annotationId);
}
else {
annotationView.annotation = annotation;
}
annotation.CanShowCallout = true;
// setup other info for view
// ..........
return annotationView;
}
}