MKMapView不会添加任何注释

时间:2011-08-30 15:19:27

标签: iphone objective-c map annotations mkmapview

我有一个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 个答案:

答案 0 :(得分:3)

后端正在使用反转纬度/经度的MongoDB。因此,注释被添加到地图的坐标平面上不存在的位置。我觉得这个白痴很快就没有注意到这一点。谢谢你的答案!

答案 1 :(得分:0)

您是否收到有关MapPerson的警告?我相信它在文档中说如果你想实现MKAnnotation,你还需要提供一个标题和副标题。

您是否可以提供填充mapPeople的代码?

编辑:重新阅读文档,如果您打算创建可选择的注释,则只需要标题和副标题。

答案 2 :(得分:0)

您是否检查过ppeoplenil