如何在MKAnnotation上设置标题

时间:2012-11-05 22:10:16

标签: ios mkmapview mkannotation

所有

尝试确定如何在搜索注释引脚标题时显示用户搜索位置的名称,而不是将它们预先确定,这很容易。我用户输入位置的搜索栏的当前代码如下:

- (IBAction) showAddress
{
    [addressField resignFirstResponder];
    CLLocationCoordinate2D location = [self addressLocation];

    MKCoordinateRegion region;
    MKCoordinateSpan span;
    span.latitudeDelta=0.2;
    span.longitudeDelta=0.2;

    region.span=span;
    region.center=location;

    [mapView setRegion:region animated:TRUE];
    [mapView regionThatFits:region];

     MapViewAnnotation *addAnnotation = [[MapViewAnnotation alloc] initWithTitle:@"" andCoordinate:location];
     [self.mapView addAnnotation:addAnnotation];
}

我在下面声明了我的标题信息:

@implementation AddressAnnotation
@synthesize _name;

-(id)initWithName:(NSString*)name address:(NSString*)address coordinate:(CLLocationCoordinate2D)coordinate  {
if ((self = [super init]))
{
    _name = [name copy];
}
    return self;
}

-(NSString *)title
{
  if ([_name isKindOfClass:[NSNull class]])
    return @"Unknown charge";
  else
    return _name;
}

@end

我的理解是我需要用标题变量名替换我的initWithTitle,但我的问题是它会是什么样的,并且足以显示用户对这些自定义搜索的标题?

谢谢!! 格雷格

2 个答案:

答案 0 :(得分:1)

如果您想坚持使用当前的AddressAnnotation定义,请将showAddress的最后两行更改为

 AddressAnnotation *addAnnotation = [[AddressAnnotation alloc] initWithName:@"" coordinate:location];
 [self.mapView addAnnotation:addAnnotation];

您需要将@“”替换为您想要的标题。

但是,您可能希望更改AddressAnnotation以使用title而不是_name,以便@synthsize为您完成所有工作。在初始化功能期间,如果需要,可以将标题设置为“未知”。

答案 1 :(得分:0)

您只需设置引脚注释的标题即可。

这是一个很好的教程......

http://www.richardhyland.com/diary/2009/10/27/how-to-add-a-pin-to-embedded-map/