Ios 如何将详图索引添加到地图视图中的单个注释中

Ios 如何将详图索引添加到地图视图中的单个注释中,ios,mkmapview,mkannotation,Ios,Mkmapview,Mkannotation,我正在尝试使用不同的详图索引详细信息设置每个注释 当前,当我单击任何注释位置时,它会显示所有标注信息 #import "AnnotationViewController.h" #import "Annotation.h" @implementation AnnotationViewController @synthesize mapView; -(void)viewDidLoad { [super viewDidLoad]; [mapView setMapType:MKMa

我正在尝试使用不同的详图索引详细信息设置每个注释

当前,当我单击任何注释位置时,它会显示所有标注信息

#import "AnnotationViewController.h"
#import "Annotation.h"

@implementation AnnotationViewController
@synthesize mapView;

-(void)viewDidLoad {

    [super viewDidLoad];
    [mapView setMapType:MKMapTypeStandard];
    [mapView setZoomEnabled:YES];
    [mapView setScrollEnabled:YES];
    [mapView setDelegate:self];

    MKCoordinateRegion TT = { {0.0, 0.0} , {0.0, 0.0} };
    TT.center.latitude = 43.65343;
    TT.center.longitude = -79.396311;
    TT.span.longitudeDelta = 0.02f;
    TT.span.latitudeDelta = 0.02f;
    [mapView setRegion:TT animated:YES];

    Annotation *ann1 = [[Annotation alloc] init];
    ann1.title = @"Annotation 01";
    ann1.subtitle = @"Message 01";
    ann1.coordinate = TT.center;
    [mapView addAnnotation:ann1];

    MKCoordinateRegion TTY = { {0.0, 0.0} , {0.0, 0.0} };
    TTY.center.latitude = 43.76919;
    TTY.center.longitude = -79.41245;
    TTY.span.longitudeDelta = 0.02f;
    TTY.span.latitudeDelta = 0.02f;
    [mapView setRegion:TTY animated:YES];

    Annotation *ann2 = [[Annotation alloc] init];
    ann2.title = @"Annotation 02";
    ann2.subtitle = @"Message 02";
    ann2.coordinate = TTY.center;
    [mapView addAnnotation:ann2];

}


-(MKAnnotationView *) mapView:(MKMapView *)mapView viewForAnnotation:id<MKAnnotation>)annotation
{
    MKPinAnnotationView *view = [[MKPinAnnotationView alloc] initWithAnnotation:annotation reuseIdentifier:@"pin"];
    view.pinColor = MKPinAnnotationColorPurple;
    view.enabled = YES;
    view.animatesDrop = YES;
    view.canShowCallout = YES;

    UIImageView *imageView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"GPSicon.png"]];
    view.leftCalloutAccessoryView = imageView;
    view.rightCalloutAccessoryView = [UIButton buttonWithType:UIButtonTypeDetailDisclosure];

    return view;

}

- (void)mapView:(MKMapView *)mapView annotationView:(MKAnnotationView *)view calloutAccessoryControlTapped:(UIControl *)control
{
    NSString *msg = [@"Location 01" stringByAppendingFormat:@"Opening 01"];
    UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Plaza 01" message:msg delegate:self cancelButtonTitle:@"OK" otherButtonTitles:nil];
    [alert show];

    NSString *msg02 = [@"Location 02" stringByAppendingFormat:@"Opening 02"];
    UIAlertView *alert02 = [[UIAlertView alloc] initWithTitle:@"Plaza 02" message:msg02 delegate:self cancelButtonTitle:@"OK" otherButtonTitles:nil];
    [alert02 show];

}


-(void)button:(id)sender {

    NSLog(@"Button action");

}

- (void)dealloc
{

}

- (void)didReceiveMemoryWarning
{
    // Releases the view if it doesn't have a superview.
    [super didReceiveMemoryWarning];

    // Release any cached data, images, etc that aren't in use.
}

#pragma mark - View lifecycle

/*
 // Implement viewDidLoad to do additional setup after loading the view, typically from a nib.
 - (void)viewDidLoad
 {
 [super viewDidLoad];
 }
 */

- (void)viewDidUnload
{
    [super viewDidUnload];
    // Release any retained subviews of the main view.
    // e.g. self.myOutlet = nil;
}

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
{
    // Return YES for supported orientations
    return (interfaceOrientation == UIInterfaceOrientationPortrait);
}

end
My Annotation.h文件代码

#import "Annotation.h"


@implementation Annotation
@synthesize coordinate, title, subtitle;

-(void)dealloc {


}

@end
#import <Foundation/Foundation.h>
#import <MapKit/MKAnnotation.h>


@interface Annotation : NSObject <MKAnnotation> {

CLLocationCoordinate2D coordinate;
NSString *title;
NSString *subtitle;

}

@property(nonatomic, assign) CLLocationCoordinate2D coordinate;
@property(nonatomic, copy) NSString *title;
@property(nonatomic, copy) NSString *subtitle;

@end
#导入
#进口
@接口注释:NSObject{
CLLocationCoordinate2D坐标;
NSString*标题;
NSString*副标题;
}
@属性(非原子,赋值)CLLocationCoordinate2D坐标;
@属性(非原子,副本)NSString*标题;
@属性(非原子,复制)NSString*副标题;
@结束

我是否必须为每个注释创建大量的h/m文件才能使详图索引有所不同?我只是在这一点上跺脚。任何猜测都很好,谢谢

Callout AccessoryControlTapped
中,代码显示了两个警报视图,其中标题和消息的文本依次为硬编码文本。很明显,这就是你得到的

calloutAccessoryControlTapped
方法中,其callout按钮被点击的注释对象可通过
view.annotation
访问

view
参数是
MKAnnotationView
,它具有一个指向其相关注释的
annotation
属性

因此,将代码更改为仅显示一个警报视图,并根据注释对象的属性显示标题和消息

检查注释的类以确保它是您期望的注释类型也是一个好主意

例如:

- (void)mapView:(MKMapView *)mapView annotationView:(MKAnnotationView *)view calloutAccessoryControlTapped:(UIControl *)control
{
    //first make sure the annotation is our custom class...
    if ([view.annotation isKindOfClass:[Annotation class]])
    {
        //cast the object to our custom class...
        Annotation *ann = (Annotation *)view.annotation;

        //show one alert view with title set to annotation's title
        //and message set to annotation's subtitle...
        UIAlertView *alert = [[UIAlertView alloc] 
                                 initWithTitle:ann.title 
                                 message:ann.subtitle 
                                 delegate:self 
                                 cancelButtonTitle:@"OK" 
                                 otherButtonTitles:nil];

        [alert show];
    }
}

请不要显示两个警告视图。举个例子吧。对不起,我没说清楚。我试图让它显示不同的标注信息,然后气泡信息。抱歉,我没有说清楚。我试图让它显示不同的标注信息,然后气泡信息。在每个注释中,添加要显示到注释类的信息。在创建每个注释时设置该信息。然后在calloutAccessoryControlTapped中,访问该信息,就像访问标题和副标题一样。您能给我看一个示例脚本吗?我对xcode本身有点陌生。非常感谢您尝试帮助我。请看这个问题:它仍然在一个注释中显示所有标注。安娜:如果我能付钱/雇你来帮我,有没有可能?我的时间有点短,我需要完成这个项目。请让我知道。你可以联系我“assamiea@gmail.com"
- (void)mapView:(MKMapView *)mapView annotationView:(MKAnnotationView *)view calloutAccessoryControlTapped:(UIControl *)control
{
    //first make sure the annotation is our custom class...
    if ([view.annotation isKindOfClass:[Annotation class]])
    {
        //cast the object to our custom class...
        Annotation *ann = (Annotation *)view.annotation;

        //show one alert view with title set to annotation's title
        //and message set to annotation's subtitle...
        UIAlertView *alert = [[UIAlertView alloc] 
                                 initWithTitle:ann.title 
                                 message:ann.subtitle 
                                 delegate:self 
                                 cancelButtonTitle:@"OK" 
                                 otherButtonTitles:nil];

        [alert show];
    }
}