MonoTouch MapKit - аннотаций - добавление кнопки в пузырьке

голоса
7

Кто-нибудь знает, если есть в любом случае, чтобы получить кнопку на аннотацию?

Я хотел бы место быть по выбору - так можно сказать .. выбрать место и получить все события в этом месте, нажав на кнопку.

Это возможно?

ш: //

Задан 02/03/2010 в 18:19
источник пользователем
На других языках...                            


2 ответов

голоса
13

Вот код, который я использовал для моей аннотации, она включает в себя кнопку на правой стороне пузыря. Вы можете установить 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;
}
Ответил 02/03/2010 в 20:39
источник пользователем

голоса
5

Я просто помог кому - то еще с этим в Objective 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;
   }
}
Ответил 02/03/2010 в 18:30
источник пользователем

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more