MonoTouch MapKit - annotazioni - l'aggiunta di un pulsante per la bolla

voti
7

Qualcuno sa se c'è comunque per ottenere un pulsante su un'annotazione?

Mi piacerebbe la posizione di essere selezionabili - in modo da poter dire .. selezionare la posizione e ottenere tutti gli eventi in quella posizione facendo clic sul pulsante.

È possibile?

w: //

È pubblicato 02/03/2010 alle 18:19
fonte dall'utente
In altre lingue...                            


2 risposte

voti
13

Ecco il codice che ho usato per il mio annotazione, che include un pulsante sul lato destro della bolla. È possibile impostare un IBAction per spingere una nuova vista nello stack per visualizzare quello che vuoi

- (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;
}
Risposto il 02/03/2010 a 20:39
fonte dall'utente

voti
5

Ho solo aiutato qualcun altro con questo in Objective C, ma sono sicuro che il concetto è lo stesso con mono. È necessario creare un oggetto personalizzato MKAnnotationView e sovrascrivere il GetViewForAnnotation (viewForAnnotation in obj-c) il metodo della classe MKMapViewDelegate ... controllare l'altra domanda .

Quando si crea la vostra abitudine MKAnnotationView oggetto è fondamentalmente un UIView fatta per mappa annotazioni ... si può semplicemente aggiungere il pulsante e altre informazioni per la vista e sarà visualizzato quando l'utente preme l'annotazione.

Qui un certo codice di massima per il metodo delegato:

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;
   }
}
Risposto il 02/03/2010 a 18:30
fonte dall'utente

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