谷歌地图与集群。检查标记是否已经渲染

时间:2017-05-01 15:56:07

标签: swift google-maps-sdk-ios

我使用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

0 个答案:

没有答案