MonoTouch MapKit - aantekeningen - het toevoegen van een knop om te bellen

stemmen
7

Iedereen weet of er hoe dan ook op een knop te krijgen op een annotatie?

Ik wil graag de locatie te kiezen - dus je kunt zeggen .. selecteert u de locatie en je krijgt alle gebeurtenissen op die locatie door te klikken op de knop.

Is dit mogelijk?

w: //

De vraag is gesteld op 02/03/2010 om 18:19
bron van user
In andere talen...                            


2 antwoorden

stemmen
13

Hier is de code die ik gebruikte voor mijn annotatie, het bevat een knop aan de rechterkant van de bubble. U kunt een IBAction ingesteld om een ​​nieuwe kijk te duwen op de stapel om te laten zien wat je wilt

- (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;
}
antwoordde op 02/03/2010 om 20:39
bron van user

stemmen
5

Ik hielp gewoon iemand anders met dit in Objective C, maar ik weet zeker dat het concept is hetzelfde met mono. Je moet een aangepaste MKAnnotationView object te maken en voorrang op de GetViewForAnnotation (viewForAnnotation in obj-c) methode van uw MKMapViewDelegate klas ... ga dan naar de andere vraag .

Bij het maken van uw aangepaste MKAnnotationView zij bezwaren is eigenlijk een UIView gemaakt kaartnotities ... kunt u gewoon uw knoop en andere informatie toe te voegen aan het uitzicht en het zal verschijnen wanneer de gebruiker de annotatie raakt.

Hier enkele ruwe code voor de afgevaardigde methode:

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;
   }
}
antwoordde op 02/03/2010 om 18:30
bron van user

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