Noen som vet om det er allikevel å få en knapp på en merknad?
Jeg vil gjerne plasseringen å være valgbar - så du kan si .. velge plasseringen og få alle hendelser på dette stedet ved å klikke på knappen.
Er dette mulig?
w: //
Noen som vet om det er allikevel å få en knapp på en merknad?
Jeg vil gjerne plasseringen å være valgbar - så du kan si .. velge plasseringen og få alle hendelser på dette stedet ved å klikke på knappen.
Er dette mulig?
w: //
Her er koden jeg brukte for min merknad, det inkluderer en knapp på høyre side av boblen. Du kan angi en IBAction å presse et nytt syn på stakken for å vise hva du vil
- (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;
}
Jeg hjalp noen andre med dette i Objective C, men jeg er sikker på at konseptet er det samme med mono. Du må opprette en tilpasset MKAnnotationView objekt og overstyre GetViewForAnnotation (viewForAnnotation i obj-c) metoden for din MKMapViewDelegate klasse ... sjekk ut det andre spørsmålet .
Når du oppretter en tilpasset MKAnnotationView objekt det er i utgangspunktet en UIView laget for kart merknader ... kan du bare legge til knappen og annen info til visningen, og det vil dukke opp når brukeren treffer merknader.
Her noen grove koden for delegat metoden:
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;
}
}