我现在一直在寻找一个关于如何添加注释的好教程,给出一个包含对象位置和图像的类(在我的例子中,对象被称为EVENT)。
查看我到目前为止所做的工作,我从viewDidLoad中调用此方法 setupAnnotations 。
- (void)setupAnnotations {
_allEvents = [EventEntity MR_findAll];
for (EventEntity *event in _allEvents) {
AVEventAnnotationView *annotation = [[AVEventAnnotationView alloc] initWithOperator:event];
CLLocation *eventLocation = [[CLLocation alloc] initWithLatitude:[[event latitude] doubleValue] longitude:[[event longitude] doubleValue]];
annotation.coordinate = eventLocation.coordinate;
MKPlacemark *eventPlacemark = [[MKPlacemark alloc] initWithCoordinate:eventLocation.coordinate addressDictionary:nil];
MKMapItem *eventItem = [[MKMapItem alloc] initWithPlacemark:eventPlacemark];
// Im loading image from URL for or based on event object
UIImageView *imageContainer = [[UIImageView alloc] init];
[imageContainer sd_setImageWithURL:[NSURL URLWithString:[NSString stringWithFormat:@"%@%@",fullBannerImgPath,[event bannerImg]]]];
[_bannerImagesArray addObject:imageContainer];
BOOL hasAnnotation = NO;
for (AVEventAnnotationView *ann in self.mapView.annotations) {
if([ann isKindOfClass:[AVEventAnnotationView class]])
{
if([[annotation.eventEntity dataId] isEqualToString:[ann.eventEntity dataId]])
{
hasAnnotation = YES;
break;
}
}
}
if(!hasAnnotation)
[self.mapView addAnnotation:annotation];
}
}
这是我的mapview代表:
- (MKAnnotationView *)mapView:(MKMapView *)mapViewIn viewForAnnotation:(id <MKAnnotation>)annotation {
if (mapViewIn != self.mapView || [annotation isKindOfClass:[MKUserLocation class]]) {
return nil;
}
static NSString *annotationIdentifier = @"SPGooglePlacesAutocompleteAnnotation";
MKAnnotationView *annotationView = [[MKAnnotationView alloc] initWithAnnotation:annotation reuseIdentifier:annotationIdentifier];
// STUCK HERE
annotationView.image = [UIImage imageNamed:@"LocationBlue"];
annotationView.frame = CGRectMake(0, 0, 80, 80);
annotationView.draggable = NO;
annotationView.canShowCallout = YES;
return annotationView;
}
我是实施MKMapView的新手。我刚刚读过注释和注释视图之间的区别。
无论如何,回到我的主要问题或我的主要问题:如何将注释/注释视图放到mkmapview给定我有一系列具有纬度,经度和图像的事件?
答案 0 :(得分:0)
我不知道AVAnnotationView是什么,但我会说你不需要它。您只需要使您的Event类符合MKAnnotation协议,即将CLLocationCoordinate2D类型的属性坐标添加到Event类。在此之后,只需使用addAnnotations将事件添加到地图中。
在mapView:viewForAnnotation中:您确定正在显示的注释是什么(正在显示的事件是什么),因此您可以获得要显示的图像(您可以使用标记或任何其他方法)和设置注释视图的图像。
或者您只是说:
if event = annotation as? AVEventAnnotationView {
//add your image and do stuff
}