这里我遇到了mapview上显示多个引脚的问题。我有10个带有不同位置值的注释,而不是显示在不同位置的引脚都显示在一个点上,这是我的代码
-(IBAction)searchMarinaAction
{
MarinasListviewController *controller = [[MarinasListviewController alloc]initWithNibName:@"MarinasListviewController" bundle:nil];
UIPopoverController *popoverView = [[UIPopoverController alloc]initWithContentViewController:controller];
[popoverView setDelegate:self];
marinasList = [controller.marinasListArray copy];
NSMutableArray *pinsArray = [[NSMutableArray alloc]init];
NSLog(@"\n marinas list count = %d",[marinasList count]);
for(int i = 0; i < [marinasList count]; i++)
{
MarinaObject *obj = [marinasList objectAtIndex:i];
NPAnnotation *annot = [[NPAnnotation alloc]init];
annot.title = obj.marinaTitle;
annot.subTitle = obj.marinaSubTitle;
annot.marinaLocation = obj.marinaLocation;
NSLog(@"\n %d. %@ , %@, %f, %f ",i, annot.title, annot.subTitle,annot.marinaLocation.latitude,annot.marinaLocation.longitude);
[pinsArray addObject:annot];
isFromSearchMarina = YES;
[annot release];
}
[mkView addAnnotations:pinsArray];
}
- (MKAnnotationView *)mapView:(MKMapView *)map viewForAnnotation:(id <MKAnnotation>)annotation{
MKPinAnnotationView *pinView = (MKPinAnnotationView*)[mkView dequeueReusableAnnotationViewWithIdentifier:@"Prospects"];
if(pinView == nil) {
pinView = [[MKPinAnnotationView alloc] initWithAnnotation:annotation reuseIdentifier:@"Prospects"];
pinView.pinColor = MKPinAnnotationColorGreen;
pinView.animatesDrop = YES;
pinView.canShowCallout = YES;
} else {
pinView.annotation = annotation;
}
return pinView;
}
任何人都可以帮助我做错了。
感谢所有人, Monish
答案 0 :(得分:1)
你的注释类NPAnnotation需要实现MKAnnotation,对于这些,你需要有一个坐标属性。
你需要调用marinaLocation作为坐标,它需要是一个CLLocationCoordinate2D。
你的副标题也需要被称为副标题。
来自苹果文档:
采用此协议的对象必须实现坐标 属性。该协议的其他方法是可选的。
致以最诚挚的问候,希望对您有所帮助。
-