I just helped someone with this in lens c, but I'm sure the concept is the same with mono. You need to create a custom MKAnnotationView object and override the GetViewForAnnotation method (viewforAnnotation in obj-c) of your MKMapViewDelegate class ... check another question .
When you create your own MKAnnotationView object, it is basically a UIView made for map annotations ... you can simply add your button and other information to the view and it will appear when the user clicks the annotation.
Here is an example of the rough code for the delegate method:
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; } }
Ryan ferretti
source share