Как добавить заголовок к выводу в MKMapView? - PullRequest
3 голосов
/ 08 сентября 2011

enter image description here

У меня есть код для контактного ключа.Но я хочу показать строку заголовка, как на картинке выше.Как добавить изображения звезды и просмотреть изображение?

Ответы [ 6 ]

0 голосов
/ 08 сентября 2011

Чтобы сделать это, вы должны поместить изображения в аннотацию, чтобы настроить их, я думаю, эта статья http://blog.asolutions.com/2010/09/building-custom-map-annotation-callouts-part-1 Джеймса Рантанена может вам помочь.

0 голосов
/ 08 сентября 2011

В противном случае, вы можете попробовать этот урок, чтобы получить пользовательские выноски: http://dev.tuyennguyen.ca/?p=298

0 голосов
/ 08 сентября 2011

Это то же самое, что и с пользовательскими ячейками в TableView.Вам просто нужно создать новый подкласс MKAnnotationView и нарисовать то, что вы хотите.

0 голосов
/ 08 сентября 2011

используйте этот метод делегата

 -(MKAnnotationView*)mapView:(MKMapView)mapView viewForAnnotation:(id<MKAnnotation>)annotation {
      // If you are showing the users location on the map you don't want to change it
      MKAnnotationView *view = nil;
      if (annotation != mapView.userLocation) {
        // This is not the users location indicator (the blue dot)
        view = [mapView dequeueReusableAnnotationViewWithIdentifier:@"myAnnotationIdentifier"];
        if (!view) {
          // Could not reuse a view ...

          // Creating a new annotation view, in this case it still looks like a pin
          view = [[[MKPinAnnotationView alloc] initWithAnnotation:annotation reuseIdentifier:@"myAnnotationIdentifier"] autorelease];
          view.canShowCallOut = YES; // So that the callout can appear

          UIImageView *myImageView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"someName"]];
          myImageView.frame = CGRectMake(0,0,31,31); // Change the size of the image to fit the callout

          // Change this to rightCallout... to move the image to the right side
          view.leftCalloutAccessoryView = myImageView;
          [myImageView release], myImageView = nil;
        }
      }
      return view;
    }
0 голосов
/ 08 сентября 2011
    - (MKAnnotationView *)mapView:(MKMapView *)mapViewTmp viewForAnnotation:(id<MKAnnotation>)annotation
    {
        if(annotation == mapView.userLocation)
            return nil;
        MKPinAnnotationView *pinView = (MKPinAnnotationView*)[mapViewTmp dequeueReusableAnnotationViewWithIdentifier:@"Pin"];
        if (pinView ==nil) {
            pinView = [[MKPinAnnotationView alloc]initWithAnnotation:annotation reuseIdentifier:@"Pin"];
            {

                if([addedAnns containsObject:annotation]){
                    MyAnnotation *a = [addedAnns objectAtIndex:[addedAnns indexOfObject:annotation]];
                    UIImage * image = [UIImage imageNamed:a.pinImage];
                    UIImageView *imageView = [[[UIImageView alloc] initWithImage:image] autorelease];
                    imageView.frame=[pinView bounds];
                    [pinView addSubview:imageView];
                    //[imageView release];
                    pinView.rightCalloutAccessoryView = [UIButton buttonWithType:UIButtonTypeDeta`enter code here`ilDisclosure];
                    pinView.rightCalloutAccessoryView.tag = a.iAnnId;
                    [(UIButton *)pinView.rightCalloutAccessoryView addTarget:self action:@selector(openSpot:) forControlEvents:UIControlEventTouchUpInside];


                    pinView.enabled = YES;
                    pinView.centerOffset = CGPointMake(0,-15);
                    pinView.calloutOffset = CGPointMake(-8,0);
                    pinView.canShowCallout = YES;
                }
            }
            pinView.animatesDrop = YES;     
        } 
        return pinView; // we cant release Or Auto release this object. Due To it will use futher
    }





// The left accessory view to be used in the standard callout.
                    @property (retain, nonatomic) UIView *leftCalloutAccessoryView;

                    // The right accessory view to be used in the standard callout.
                    @property (retain, nonatomic) UIView *rightCalloutAccessoryView;

Как видите, я добавляю кнопку к rightCalloutAccessoryView.Точно так же вы можете добавить изображения к нему.

0 голосов
/ 08 сентября 2011

Вы можете использовать свой пользовательский MKAnnotationView.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...