MonoTouch MapKit - adnotacje - dodanie przycisku bulgotać

głosy
7

Ktoś wie, czy jest w każdym razie, aby uzyskać przycisk na adnotacją?

Chciałbym lokalizacja być wybierane - tak można powiedzieć .. wybrać lokalizację i uzyskać wszystkie wydarzenia w tej lokalizacji, klikając na przycisk.

czy to możliwe?

szer: //

Utwórz 02/03/2010 o 18:19
źródło użytkownik
W innych językach...                            


2 odpowiedzi

głosy
13

Oto kod użyłem mojego adnotacją, że zawiera przycisk po prawej stronie bańki. Można ustawić IBAction pchnąć nowy widok na stosie, aby wyświetlić cokolwiek chcesz

- (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;
}
Odpowiedział 02/03/2010 o 20:39
źródło użytkownik

głosy
5

Właśnie pomógł komuś z tym w Objective C, ale jestem pewien, że koncepcja jest taka sama z mono. Musisz utworzyć własny obiekt MKAnnotationView i zastąpić GetViewForAnnotation (viewForAnnotation w obj-c) metodę klasy MKMapViewDelegate ... sprawdź inne pytanie .

Podczas tworzenia niestandardowego MKAnnotationView to obiekt jest w zasadzie UIView wykonane na mapie adnotacji ... można po prostu dodać do guzików i pozostałe informacje do widoku i pokaże się, gdy użytkownik wciśnie adnotacji.

Oto niektóre kodu szorstki dla metody delegata:

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;
   }
}
Odpowiedział 02/03/2010 o 18:30
źródło użytkownik

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