Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/image-processing/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Swift 谷歌地图与集群。检查是否已渲染标记_Swift_Google Maps Sdk Ios - Fatal编程技术网

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
存储在一个数组中,并对照它进行检查。。但那是一种肮脏的方式

参考: