iPhone:创建 MKAnnotation

Posted

技术标签:

【中文标题】iPhone:创建 MKAnnotation【英文标题】:iPhone: Create MKAnnotation 【发布时间】:2010-05-21 00:09:12 【问题描述】:

我可以创建一个MKAnnotation,还是只读的?我有坐标,但我发现使用setCoordinate 手动创建MKAnnotation 并不容易。

想法?

【问题讨论】:

【参考方案1】:

MKAnnotation 是一个协议。所以你需要编写自己的注解对象来实现这个协议。所以你的 MyAnnotation 标头看起来像:

@interface MyAnnotation : NSObject<MKAnnotation> 
    CLLocationCoordinate2D coordinate;


@property (nonatomic, readonly) CLLocationCoordinate2D coordinate;

// add an init method so you can set the coordinate property on startup
- (id) initWithCoordinate:(CLLocationCoordinate2D)coord;

你的实现看起来像(MyAnnotation.m):

- (id) initWithCoordinate:(CLLocationCoordinate2D)coord

    coordinate = coord;
    return self;

所以要将您的注释添加到地图中:

MyAnnotation * annotation = [[[MyAnnotation alloc] initWithCoordinate:coordinate] autorelease];
[self.mapView addAnnotation:annotation];

如果注释标注上没有标题和副标题,则需要添加标题和副标题属性。

【讨论】:

这正是我所需要的。我应该把 - (id) initWithCoordinate:(CLLocationCoordinate2D)coord;方法?在我的 .h 文件或 .m 中? 没问题。我已经用更多细节更新了答案:) 由于某种原因,我在尝试构建和运行时没有找到“-initWithCoord:”方法。 对不起。我的示例代码是 initWithCoord,它应该是 initWithCoordinate。 如何添加注解图片?【参考方案2】:

在 iPhone OS 4 中有一个新的类 MKPointAnnotation,它是 MKAnnotation 协议的具体实现。

【讨论】:

如果您只需要基本注释,这将非常方便。谢谢! MKPointAnnotation* pointAnnotation = [[MKPointAnnotation alloc] init]; pointAnnotation.coordinate = location.coordinate; [mkMapView addAnnotation:pointAnnotation];【参考方案3】:

检查苹果 MapCallouts 项目。您需要的一切都在该文件中: http://developer.apple.com/iphone/library/samplecode/MapCallouts/Introduction/Intro.html

【讨论】:

太棒了,正是我想要的。

以上是关于iPhone:创建 MKAnnotation的主要内容,如果未能解决你的问题,请参考以下文章

iPhone:创建 MKAnnotation

如何在不为 iphone 和 ipad 创建单独的 xib 的情况下为所有 ipad 和 iphone 创建通用 xib?不是故事板

如何为 iPhone 创建自定义 Interface Builder 插件?

在 iPad/iPhone 上创建图表

iPhone:JSON 消息未正确创建

是否可以创建与 iPad 兼容的 iPhone 应用程序?