我使用Google Maps ios utils
群集并为iconView
&设置了自定义marker
cluster
喜欢这样:
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(_ renderer: GMUClusterRenderer, willRenderMarker marker: GMSMarker) { }
每次有缩放级别更改时都会调用get,即使没有发生聚类/去聚,并且makrer.iconView
总是nil
,即使之前已经设置了它。
如果第一次呈现标记时,如何才能实现guard
仅设置iconView
和其他marker
属性?否则它只是浪费资源..(并且动画也会在每个缩放级别更改时发生)
编辑:我能想到的一种方法是将已经渲染的标记id
存储在一个数组中并检查它..但这是一种肮脏的方式..
参考:https://github.com/googlemaps/google-maps-ios-utils/issues/96