MKMapView - 在加载更多结果时未调用viewForAnnotation

时间:2010-03-22 18:37:39

标签: objective-c mkmapview mkannotation mkannotationview

编辑添加*我还没有找到解决方案,有人可以帮忙吗?我的问题与此类似,但发布的答案对我不起作用 - MKMapView refresh after pin moves *结束编辑

我有一个启用搜索的地图视图。当用户点击搜索时,我的自定义注释会添加到地图视图中。搜索返回20个带有“加载更多”链接的结果。当我点击加载更多时,应该在地图视图中添加更多注释。

问题是 - 注释会添加到地图视图中,但不会显示在地图上。如果我放大或缩小以更改地图区域,则会显示引脚。

我发现viewForAnnotations:当我点击'加载更多'时没有被调用。我不知道如何触发这个。任何人?

-(void)completedSearch:(NSNotification *)resultNotification
 {
   //begin loop
   //get coordinate
   customAnnotation *annot = [[customAnnotation alloc] initWithCoordinate:coordinate];
   //set title subtitle 
   [annotationsArray addObject:annot];
   //end loop
   [mView addAnnotations:annotationsArray];
   [mView setRegion:region animated:YES];
   [mView regionThatFits:region];
 }

  //custom annotation
  @interface customAnnotation : NSObject <MKAnnotation> 
 { 
   CLLocationCoordinate2D coordinate;  
   NSString*              title; 
   NSString*              info; 
 } 
 @property (nonatomic, retain) NSSting *title;
 @property (nonatomic, retain) NSSting *info;

 -(id) initWithCoordinate:(CLLocationCoordinate2D)c;
 @end

 @implementation customAnnotation
 @synthesize coordinate, title, info;
 -(id) initWithCoordinate:(CLLocationCoordinate2D)c
 {
   coordinate = c;
   return self;
 }
 -(void)dealloc{//dealloc stuff here}
 @end

3 个答案:

答案 0 :(得分:5)

只是想确认一下 我正在从一个线程添加注释 - 这不起作用。 一旦我使用了这个(addCameraIconOnMain添加我的annoations)

[self performSelectorOnMainThread:@selector(addCameraIconOnMain:) withObject:cd waitUntilDone:true];    

它的工作!谢谢!

答案 1 :(得分:1)

这与接收通知然后添加注释引脚的时间流逝有关。强制它使用主线程添加注释引脚工作。

答案 2 :(得分:0)

就我而言,问题是我在地图委托之前添加了注释。它必须是这样的:

- (void)viewDidLoad
{
    ...

   // map delegate
   [mView setDelegate:self];

   ...

   // add annotation
   [_map addAnnotation:_poiAnnotation];

   ...
}