gpt4 book ai didi

swift - 为 MKClusterAnnotation 设置 MKMarkerAnnotationView 的 glyphText

转载 作者:搜寻专家 更新时间:2023-10-31 22:54:47 28 4
gpt4 key购买 nike

我有一个实现 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/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com