MonoTouch MapKit - adnotări - adăugarea unui buton pentru bule

voturi
7

Oricine știe dacă există oricum pentru a obține un buton pe o adnotare?

Aș vrea locația să fie selectabile - astfel încât să puteți spune .. selectați locația și de a lua toate evenimentele de la acea locație, făcând clic pe butonul.

Este posibil?

w: //

Întrebat 02/03/2010 la 18:19
sursa de către utilizator
În alte limbi...                            


2 răspunsuri

voturi
13

Iată codul am folosit pentru adnotare mea, acesta include un buton de pe partea dreaptă a bulei. Puteți seta un IBAction pentru a împinge o nouă vizualizare pe stivă pentru a afișa orice doriți

- (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;
}
Publicat 02/03/2010 la 20:39
sursa de către utilizator

voturi
5

Tocmai am ajutat pe altcineva cu acest lucru în c obiectiv, dar eu sunt sigur că conceptul este același cu mono. Ai nevoie pentru a crea un MKAnnotationView obiect personalizat și suprascrie GetViewForAnnotation (viewForAnnotation în obj-c) metoda de clasa MKMapViewDelegate ... verifica cealaltă întrebare .

Când creați particularizat MKAnnotationView acesta obiect este de fapt un UIView făcut pentru harta adnotări ... puteți adăuga pur și simplu butonul și alte informații pentru vizualizarea și va apărea atunci când utilizatorul lovește adnotată.

Aici un cod dur pentru metoda delegat:

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;
   }
}
Publicat 02/03/2010 la 18:30
sursa de către utilizator

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