我想自定义我的注释(引脚),以便我可以更改其图像。我使用了一个函数(mapview)来改变图片,所以我不知道是否应该再次使用它来改变另一组引脚的图片;假设我有两个地方,一个餐馆和一个医院,所以我想分别放一个盘子和一个红叉。这是我的功能代码:
func mapView(_ mapView: MKMapView, viewFor annotation: MKAnnotation) -> MKAnnotationView? {
if annotation is MKUserLocation {
return nil
}
var annotationView = mapView.dequeueReusableAnnotationView(withIdentifier: "identifier")
if annotationView == nil{
annotationView = MKAnnotationView(annotation: annotation, reuseIdentifier: "identifier")
annotationView!.canShowCallout = true
annotationView!.rightCalloutAccessoryView = UIButton(type: .detailDisclosure)
let pinImg = UIImage(named: "curz")
let size = CGSize(width: 50, height: 50)
UIGraphicsBeginImageContext(size)
pinImg!.draw(in: CGRect(x: 0, y: 0, width: size.width, height: size.height))
let resizedImage = UIGraphicsGetImageFromCurrentImageContext()
UIGraphicsEndImageContext()
annotationView!.image = resizedImage
}
else {
annotationView!.annotation = annotation
}
return annotationView
}
答案 0 :(得分:0)
您可以通过比较坐标信息为不同的地方返回不同的注释视图。例如:
if ((annotation.coordinate.latitude == theCoordinate1.latitude)
&& (annotation.coordinate.longitude == theCoordinate1.longitude))
{ 返回someAnnotationView }
点击此链接Adding different images to different annotation views in xcode
答案 1 :(得分:0)
为不同的注释类型(或不同注释类型的组)返回不同视图的正确方法是对注释进行子类化,并为每个注释分配不同的重用标识符(在init期间)。该标识符类似于表视图单元标识符,用于在单元格滚出视线时重用(而不是从头开始创建)单元格。对于注释也是如此,而不是每次被删除时都创建一个新的注释。注释可以重复使用。
然后在mapview viewfor annotation
中,您可以测试annotation.identifier
并分配正确的图像。