MonoTouch MapKit - anotace - přidání tlačítka na bublině

hlasů
7

Někdo vědět, jestli je tam tak jako tak, aby tlačítka na anotací?

Rád bych umístění být volitelně - takže si můžete říct .. vyberte místo a dostat všechny události na tomto místě po kliknutí na tlačítko.

Je to možné?

w: //

Položena 02/03/2010 v 18:19
zdroj uživatelem
V jiných jazycích...                            


2 odpovědí

hlasů
13

Zde je kód jsem použil pro své anotaci, že obsahuje tlačítko na pravé straně bubliny. Můžete nastavit IBAction, aby se zasadila nový pohled na stoh zobrazit, co chcete

- (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;
}
Odpovězeno 02/03/2010 v 20:39
zdroj uživatelem

hlasů
5

Jen jsem pomohl někoho jiného s tím v Objective C, ale jsem si jistý, že koncept je stejný s mono. Musíte vytvořit vlastní MKAnnotationView objekt a potlačit GetViewForAnnotation (viewForAnnotation v obj-c) způsob vašeho MKMapViewDelegate třídy ... podívejte se na jinou otázku .

Při vytváření vlastního MKAnnotationView to objekt je v podstatě UIView stanovit mapových poznámky ... stačí přidat tlačítko a další informace k názoru, a to se projeví, když uživatel zasáhne anotaci.

Zde několik hrubý kód pro metodu delegáta:

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;
   }
}
Odpovězeno 02/03/2010 v 18:30
zdroj uživatelem

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