0

我想自定义我的注释(图钉),以便能够更改其图像。我使用了一个函数(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
}
4

2 回答 2

0

您可以通过比较坐标信息来为不同的地方返回不同的注释视图。前任:

if ((annotation.coordinate.latitude == theCoordinate1.latitude) 
    && (annotation.coordinate.longitude == theCoordinate1.longitude))

{返回一些注释视图}

按照这个链接在xcode中将不同的图像添加到不同的注释视图

于 2017-05-29T05:23:22.743 回答
0

为不同的注释类型(或不同注释类型的组)返回不同视图的正确方法是子类化注释并为每个注释分配不同的重用标识符(在初始化期间)。此标识符类似于表格视图单元格标识符,用于在单元格滚动到视线之外时重用(而不是从头开始创建)单元格。注释也是如此,而不是每次可以重复使用“丢弃”的注释时都创建一个新注释。

然后在mapview viewfor annotation你可以测试annotation.identifier并分配正确的图像。

于 2017-05-29T05:31:45.357 回答