MonoTouch MapKit - anotaciones - añadir un botón a la burbuja

votos
7

Alguien sabe si hay alguna forma de conseguir un botón en una anotación?

Me gustaría que la ubicación de ser seleccionable - por lo que se puede decir .. seleccionar la ubicación y obtener todos los eventos en ese lugar haciendo clic en el botón.

¿es posible?

w: //

Publicado el 02/03/2010 a las 18:19
fuente por usuario
En otros idiomas...                            


2 respuestas

votos
13

Aquí está el código que utilicé para mi anotación, que incluye un botón en el lado derecho de la burbuja. Se puede establecer una IBAction para impulsar una nueva visión en la pila para mostrar lo que quiera

- (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;
}
Respondida el 02/03/2010 a las 20:39
fuente por usuario

votos
5

Acabo de ayudar a otra persona con este objetivo en c, pero estoy seguro de que el concepto es el mismo con el mono. Es necesario crear un objeto MKAnnotationView costumbre y anular el GetViewForAnnotation (viewForAnnotation en obj-c) Método de la clase MKMapViewDelegate ... echa un vistazo a la otra pregunta .

Al crear su costumbre MKAnnotationView objeto es básicamente un UIView hecho para anotaciones mapa ... simplemente puede añadir su botón y otra información a la vista y se mostrará cuando el usuario pulsa la anotación.

Aquí un poco de código en bruto para el método delegado:

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;
   }
}
Respondida el 02/03/2010 a las 18:30
fuente por usuario

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