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];
}
}