Swift 谷歌地图与集群。检查是否已渲染标记
我使用集群,并为Swift 谷歌地图与集群。检查是否已渲染标记,swift,google-maps-sdk-ios,Swift,Google Maps Sdk Ios,我使用集群,并为标记和集群设置了自定义的iconView,如下所示: func renderer(_ renderer: GMUClusterRenderer, willRenderMarker marker: GMSMarker) { // Check if marker or cluster if marker.userData is PlaceMarker { if let userData = marker.userData as? Pla
标记
和集群
设置了自定义的iconView
,如下所示:
func renderer(_ renderer: GMUClusterRenderer, willRenderMarker marker: GMSMarker) {
// Check if marker or cluster
if marker.userData is PlaceMarker {
if let userData = marker.userData as? PlaceMarker {
marker.iconView = MarkerView(caption: userData.caption)
}
marker.groundAnchor = CGPoint(x: 0.5, y: 1)
marker.isFlat = true
marker.appearAnimation = kGMSMarkerAnimationPop
} else {
// Apply custom view for cluster
marker.iconView = ClusterViewIcon(caption: userData.caption)
// Show clusters above markers
marker.zIndex = 1000;
marker.groundAnchor = CGPoint(x: 0.5, y: 1)
marker.isFlat = true
marker.appearAnimation = kGMSMarkerAnimationPop
}
}
func渲染器(renderer:GMUClusterRenderer,willRenderMarker:GMSMarker){}
每次缩放级别发生变化时(即使没有发生群集/取消群集),都会调用get,并且makrer.iconView
始终位于nil
位置,即使之前已设置
如何实现保护
仅在第一次呈现标记时设置iconView
和其他标记
属性?否则就是浪费资源。。(每次缩放级别更改时也会出现动画)
编辑:我能想到的一种方法是将已经渲染的标记
id
存储在一个数组中,并对照它进行检查。。但那是一种肮脏的方式
参考: