作者热门文章
- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
我有一个实现 MKAnnotation 协议(protocol)的 MapItem 类。我正在使用 MKMarkerAnnotationView 在 map 上显示注释。
根据文档,MKMarkerAnnotationView 的 glyphText 属性设置为 nil 时,它会在标记上生成图钉图像。
当对注释进行聚类时,我想要在标记上使用相同的图钉图像。但系统默认情况下将其设置为聚类在此群集中的注释数。
我什至尝试将此属性设置为 nil,但没有任何效果。
func mapView(_ mapView: MKMapView, viewFor annotation: MKAnnotation) -> MKAnnotationView? {
if let item = annotation as? MapItem {
let annotationView = mapView.dequeueReusableAnnotationView(withIdentifier: "mapItem") as? MKMarkerAnnotationView
?? MKMarkerAnnotationView(annotation: annotation, reuseIdentifier: "mapItem")
annotationView.annotation = item
annotationView.glyphText = nil
annotationView.clusteringIdentifier = "mapItemClustered"
return annotationView
} else if let cluster = annotation as? MKClusterAnnotation {
let clusterView = mapView.dequeueReusableAnnotationView(withIdentifier: "clusterView") as? MKMarkerAnnotationView
?? MKMarkerAnnotationView(annotation: annotation, reuseIdentifier: "clusterView")
clusterView.annotation = cluster
clusterView.glyphText = nil
return clusterView
} else {
return nil
}
}
最佳答案
我是这样做的:
class POIMarkerClusterView: MKMarkerAnnotationView {
override var annotation: MKAnnotation? {
willSet {
update(newValue: newValue)
}
}
private func update(newValue: MKAnnotation?) {
if let cluster = newValue as? MKClusterAnnotation {
self.image = POIClusterImage(poiStatistics: poiStatistics, count: count)
// MKMarkerAnnotationView's default rendering usually hides our own image.
// so we make it invisible:
self.glyphText = ""
self.glyphTintColor = UIColor.clear
self.markerTintColor = UIColor.clear
}
}
}
这意味着您可以设置呈现为注释 View 的任意图像。我动态创建图像,但您可以从 MKMarkerAnnotationView
中借用图像并在此处设置它,使其看起来像您想要的图钉。
主要技巧是使用 UIColor.clear
隐藏您不想看到的内容。
关于swift - 为 MKClusterAnnotation 设置 MKMarkerAnnotationView 的 glyphText,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50813403/
我有一个实现 MKAnnotation 协议(protocol)的 MapItem 类。我正在使用 MKMarkerAnnotationView 在 map 上显示注释。 根据文档,MKMarkerA
我是一名优秀的程序员,十分优秀!