我正在做一个小项目,在地图上显示 7 种不同类型的注释。我的注释取自数组中的 url 结果,我使用 JSON 对其进行解析。我有很多注释,一旦地图加载,一切看起来都很好。放大和缩小后,pin 图像由于某种原因变为错误的 pin 图像(特定图像,不知道为什么)。
我确定我在这里遗漏了一些东西...请您帮忙:)?
这是我的代码的一部分,如果您需要它,请告诉我:
-(MKAnnotationView *)mapView:(MKMapView *)mapView viewForAnnotation:(id<MKAnnotation>)annotation{
static NSString *identifier;
if(_mapView.tag==1){identifier = @"TurbulencePin";}
if(_mapView.tag==2){identifier = @"IcingPin";}
if(_mapView.tag==3){identifier = @"WindsPin";}
if(_mapView.tag==4){identifier = @"TemperaturePin";}
if(_mapView.tag==5){identifier = @"CloudsPin";}
if(_mapView.tag==6){identifier = @"VisibilityPin";}
if(_mapView.tag==7){identifier = @"MultiplePin";}
if ([annotation isKindOfClass:[MKUserLocation class]])
return nil;
if ([annotation isKindOfClass:[Annotation class]]) {
CustomAnnotationView* annotationView = (CustomAnnotationView*)[mapView dequeueReusableAnnotationViewWithIdentifier:identifier];
annotationView = nil;
if (annotationView == nil) {
annotationView = [[CustomAnnotationView alloc] initWithAnnotation:annotation reuseIdentifier:identifier];
annotationView.enabled = YES;
annotationView.canShowCallout = YES;
UIImage *img = [UIImage imageNamed:[NSString stringWithFormat:@"%@.png",identifier]];
annotationView.image = img;
}
else
{
annotationView.annotation = annotation;
}
return annotationView;
}
return nil;
}
更新:
根据其他人的反馈,我修改了图像设置的代码如下:
Annotation *myCustomAnn = (Annotation *)annotation;
NSString *imgName = myCustomAnn.imageName;
UIImage *img = [UIImage imageNamed:[NSString stringWithFormat:@"%@Pin.png",imgName]];
annotationView.image = img;
return annotationView;
另外,我删除了annotationView = nil;
但是,我无法将 annotation.m 中的图像名称设置为硬编码值,因为我需要为每个注释显示不同的 pin 图像。我确定有一个解释,但我可以从 mapView:viewForAnnotation: 下的 annotation.m 获得的唯一值是注释坐标(myCustomAnn.coordinate.latitude
并且myCustomAnn.coordinate.longitude)
,我不知道如何从 annotation.m 获取其他属性
其他属性,例如 title、imgname 等返回为 null