我有一个MKMapView,其委托在Interface Builder中设置,并且是其视图控制器的保留属性(也在Interface Builder中连接) . 是的,我相信他们已经正常联系了 . 我正在尝试向mapView添加注释,但是没有调用mapView:viewForAnnotation:并且在使用[self.map addAnnotation:annot]添加所有注释之后,打印mapView的注释数组的计数产生零 . 我不知道造成这种情况的原因是因为我的MapPerson对象使用只读坐标属性实现了MKAnnotation协议 . 这是我的业务代码......
#import <Foundation/Foundation.h>
#import <MapKit/MapKit.h>
@interface MapPerson : NSObject <MKAnnotation> {
CLLocationCoordinate2D _coo;
}
@property (nonatomic, readonly) CLLocationCoordinate2D coordinate;
@end
它的实施......
#import "MapPerson.h"
@implementation MapPerson
@synthesize coordinate=_coo;
- (id)init
{
self = [super init];
if (self) {
// Initialization code here.
}
return self;
}
- (id)initWithCoordinate:(CLLocationCoordinate2D)loc {
self = [super init];
if (self) {
_coo = loc;
}
return self;
}
我试图在一个委托方法中从一个服务类创建这些注释,该服务类从服务器获取坐标到包含mapView的视图控制器 . 我已经尝试将该代码移动到一个帮助方法,我确保在主线程上调用,但没有任何反应 .
- (void)refreshMap {
for (MapPerson *p in mapPeople) {
[self.map addAnnotation:p];
}
NSLog(@"Mapview has %i annotations.", self.map.annotations.count);
// is always 1 for the user's location
}
我有Google搜索和SO,并查看了几个不同的教程,除了名称之外,这些教程与我的代码没有什么不同 . 我在mapView:viewForAnnotation:中放了一个断点,并且只为用户的位置注释调用一次 . mapPeople的计数是5.他们的坐标正确设置 . 有任何想法吗?
3 回答
后端正在使用具有逆转纬度/经度的MongoDB . 因此,注释被添加到 Map 的坐标平面上不存在的位置 . 我觉得这个白痴很快就没有注意到这一点 . 谢谢你的回答!
您是否收到有关MapPerson的警告?我相信它在文档中说如果你想实现MKAnnotation,你还需要提供 Headers 和副 Headers .
你可以提供填充mapPeople的代码吗?
编辑:重新阅读文档,它说如果你打算创建可选择的注释,只有你的 Headers 和副 Headers .
你检查过
p
或people
是否nil
?