Диспетчер кластеров не обновляется после удаления маркера из кластера.Взяв старое изображение для маркера - PullRequest
0 голосов
/ 22 сентября 2018

Вот мой код для реализации кластеризации.справа от первого шага. Пожалуйста, дайте мне знать, если есть какая-либо ошибка в приведенном ниже коде.

var clusterManager: GMUClusterManager?
var clusterItems : [POIItem] = []

 func removeMarker(userId : Double){

for (index,item) in clusterItems.enumerated(){
    if item.participantUserId == userId{
        clusterItems.remove(at: index)
        clusterManager?.remove(item)
    }
}
clusterManager?.cluster()
 }

Вот метод делегата для этого

   func renderer(_ renderer: GMUClusterRenderer, willRenderMarker marker: GMSMarker) {

    if let poiItem = marker.userData as? POIItem {

        if participantImageView == nil{
            participantImageView = RideParticipantsImageView.loadFromNibNamed(nibNamed: "RideParticipantImageView") as? RideParticipantsImageView
        }
        participantImageView!.participantImageView.image = poiItem.image
        marker.icon = ViewCustomizationUtils.getImageFromView(view: participantImageView!)

        for rideParticipantLocation in rideParticipantLocationObject{

            if poiItem.participantUserId == rideParticipantLocation.userId!{

                if isLocationUpdateExpired(ridePartcipantLocation: rideParticipantLocation){
                    marker.opacity = GoogleMapUtils.MARKER_HALF_OPACITY
                }else{
                    marker.opacity = GoogleMapUtils.MARKER_FULL_OPACITY
                }
            }
        }
     marker.zIndex = 11
    }

}

, но кластер необновление и получение изображения старого размера, а также нового размера для значка кластера.

class CustomizedCusterIconGenerator: GMUDefaultClusterIconGenerator{

var markerView: RideParticipantsCountView?

override func icon(forSize size: UInt) -> UIImage {
    if size == 2{
        let image = UIImage(named : "cluster_image1")
        return image!
    }
    else if size == 3{
        let image = UIImage(named : "cluster_image2")
        return image!
    }
    else if size == 4{
        let image = UIImage(named : "cluster_image3")
        return image!
    }
    else if size == 5{
        let image = UIImage(named : "cluster_image4")
        return image!
    }
    else{
        self.markerView = RideParticipantsCountView.loadFromNibNamed(nibNamed: "RideParticipantsCountView") as? RideParticipantsCountView
        markerView?.setMarker(count: size)
      UIGraphicsBeginImageContextWithOptions(markerView!.frame.size,false, 0)
        markerView!.layer.render(in: UIGraphicsGetCurrentContext()!)
        let image = UIGraphicsGetImageFromCurrentImageContext()
        UIGraphicsEndImageContext()
        return image!
    }
}

}

, если что-то не так в коде выше.Пожалуйста помоги.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...