【问题标题】:Google Maps SDK for iOS - Cluster Manager don't show marker title on marker tap适用于 iOS 的 Google Maps SDK - 集群管理器在标记点按时不显示标记标题
【发布时间】:2018-01-03 15:01:57
【问题描述】:

我正在使用适用于 iOS 的 Google Maps SDK,并为我的图标提供自定义渲染功能。不幸的是,当我点击标记时,没有显示 infoWindow。这是我的代码:

// 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。

【问题讨论】:

    标签: ios swift google-maps


    【解决方案1】:

    标记需要snippet 来显示信息窗口

    否则,您可以在对应的callback中创建自定义信息窗口

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-05-15
      • 1970-01-01
      • 2011-01-19
      • 1970-01-01
      • 2013-04-17
      • 2016-02-08
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多