2017-07-27 3 views
0

アイコン用のカスタムレンダリング機能を備えたGoogleマップ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

は、マーカーを使用すると、対応するcallback

でカスタム情報ウィンドウを作成することができ、

それ以外の場合は情報ウィンドウを表示するsnippetを必要とします