2017-07-27 85 views
0

我正在使用带有自定义渲染功能的Google Maps SDK for iOS。不幸的是,当我点击标记时,没有显示infoWindow。以下是我的代码:适用于iOS的Google Maps SDK - 群集管理器不会在标记点击上显示标记标题

// MyViewController.swift 
override func viewDidLoad() { 
     super.viewDidLoad() 
     let algorithm = GMUNonHierarchicalDistanceBasedAlgorithm() 
     let renderer = GMUDefaultClusterRenderer(mapView: self.mapView, clusterIconGenerator: iconGenerator) 
     renderer.delegate = self 
     self.clusterManager = GMUClusterManager(map: self.mapView, algorithm: algorithm, renderer: renderer) 

     for (index, marker) in markers.enumerated() { 
      let markerItem = POIItem(position: marker.position, name: "Marker \(index)") 
      self.clusterManager.add(markerItem) 
     } 
     self.mapViewContainer.addSubview(self.mapView) 
     clusterManager.cluster() 
    } 

func renderer(_ renderer: GMUClusterRenderer, willRenderMarker marker: GMSMarker) { 
     let pinImageView = UIImageView(image: #imageLiteral(resourceName: "pin")); 
     let iconView = UIView(frame: CGRect(x: 0, y: 0, width: pinImageView.frame.width, height: pinImageView.frame.height)) 
     iconView.clipsToBounds = false 

     iconView.backgroundColor = .clear 
     iconView.addSubview(pinImageView) 
     iconView.layoutIfNeeded() 

     if let markerData = marker.userData { 
      if let markerClusterData = (markerData as? GMUCluster) { 
       let totalLabel = UILabel(frame: CGRect(x: 0, y: 0, width: 25, height: 25)) 
       let labelContainerView = UIView(frame: CGRect(x: 20, y: -10, width: 25, height: 25)) 
       labelContainerView.backgroundColor = #colorLiteral(red: 0.9803921569, green: 0.7058823529, blue: 0.1176470588, alpha: 1) 
       totalLabel.font = totalLabel.font.withSize(12.0) 
       totalLabel.text = "\(markerClusterData.count)+" 
       totalLabel.textAlignment = .center 
       totalLabel.textColor = .white 
       labelContainerView.addSubview(totalLabel) 
       labelContainerView.layer.cornerRadius = 12.5 
       labelContainerView.layoutIfNeeded() 
       iconView.addSubview(labelContainerView) 
       iconView.bounds = iconView.frame.union(labelContainerView.frame) 
      } 
     } 

     marker.iconView = iconView 
    } 
// Default POIITem implementation, exactly like Google teaches. 
class POIItem: NSObject, GMUClusterItem { 
    var position: CLLocationCoordinate2D 
    var name: String! 

    init(position: CLLocationCoordinate2D, name: String) { 
     self.position = position 
     self.name = name 
    } 
} 

没有显示infoWindow,有或没有自定义委派方法。

回答

0

标记需要一个snippet显示信息窗口

否则,您可以在相应的callback

创建一个自定义信息窗口
相关问题