我有一个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。它们的坐标设置正确。有任何想法吗?

最佳答案

后端使用的MongoDB颠倒了纬度/经度。因此,注释被添加到地图坐标平面上不存在的位置。我感觉像个白痴,没有早点注意到这一点。感谢您的回答!

07-28 03:31
查看更多