Mono MapKit - kommentarer - legge en knapp for å boble

stemmer
7

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: //

Publisert på 02/03/2010 klokken 17:19
kilden bruker
På andre språk...                            


2 svar

stemmer
13

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;
}
Svarte 02/03/2010 kl. 19:39
kilden bruker

stemmer
5

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;
   }
}
Svarte 02/03/2010 kl. 17:30
kilden bruker

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