GMUClusterRendererDelegate отображает значок маркера только при визуализации кластера, а не до этого swift 5 - PullRequest
0 голосов
/ 14 апреля 2020

Я пытаюсь создать кластеры в моей карте Google. Когда я показываю кластеры на карте, я хочу показывать только количество кластеров, а когда кластер щелкают или увеличивают масштаб, я хочу показать только мой пользовательский вид маркера. Но представление маркера уже присутствует перед кластеризацией, и когда я увеличиваю масштаб кластера, отображаются контакты по умолчанию, чего я не хочу.

ниже приведен код для кластеризации

                        for data in self.map_data {
                            //check if map data is on or off and show map data accordignly
                            let offerdata = data
                            let geocoder = CLGeocoder()
                            let strAddress = "\(offerdata.agent_street ?? "")"+" "+"\(offerdata.agent_city ?? "")"+" "+"\(offerdata.agent_zipcode ?? "")"

                            //MARK: GEOCODER FOR GETTING LAT LONG BASE ON ADDRESS
                            geocoder.geocodeAddressString(strAddress) {
                                placemarks, error in
                                let placemark = placemarks?.first
                                let lat =  Double(placemark?.location?.coordinate.latitude ?? 0.00)
                                let lon = Double(placemark?.location?.coordinate.longitude ?? 0.00)
                                print("Lat: \(String(describing: lat)), Lon: \(String(describing: lon))")

                                let camera = GMSCameraPosition.camera(withLatitude: lat, longitude: lon, zoom: 5)
                                let marker = GMSMarker()
                                marker.position = CLLocationCoordinate2D(latitude: lat, longitude: lon)
                                marker.title = "\(offerdata.agent_firstname ?? "")"+" \(offerdata.agent_lastname ?? " ")"
                                marker.iconView?.backgroundColor = .lightGray
                                marker.userData  = data

                                //amrut
                                // Clustering
                                let item = POIItem(position: CLLocationCoordinate2DMake(lat, lon), name: "marker.title" ?? "",data: data)
                                self.clusterManager.add(item)


                                //map info views
                                var image = UIImage()
                                var currency  = String()
                                if data.currency == "AUD"{
                                    currency = "$\(data.currency ?? "")"
                                }
                                else if data.currency == "EUR"{
                                    currency = "€\(data.currency ?? "")"
                                }
                                else{
                                    currency = "£\(data.currency ?? "")"
                                }

                                let amount = "\(data.offer_amount ?? "")".convertTo2Decimal+" "+currency

                                //create custom marker accordin to condtions
//                                    "\(agent.offer_amount ?? "")".convertTo2Decimal+" "+"\(agent.currency ?? "AUD")"
                                if data.auto_approval_on_off == "ON"{
                                    if (data.is_badge_display == "1") {
                                        image = UIImage(named: "blueMarker.png") ?? UIImage()//blue
                                    } else {
                                           image = UIImage(named: "orangeMarker.png") ?? UIImage()//oranfge
                                       }
                                }
                                 else if (data.is_badge_display == "1") {
                                    image = UIImage(named: "blueMarker.png") ?? UIImage()//blue
                                } else {
                                    image = UIImage(named: "blackMarker.png") ?? UIImage()//black
                                }

                                let customMarker = CustomMarkerView(frame: CGRect(x: 0, y: 0, width: 100, height: 40), image:image , lblText:amount)
//                                    marker.iconView=customMarker

                                marker.map = self.MapView
                                self.MapView.camera = camera
                            }
                        }

и То же самое я делаю, когда в методе делегата 'GMUClusterRendererDelegate willRenderMarker' и просто раскомментирую marker.iconView = customMarker

Может кто-нибудь, пожалуйста, помогите мне, что мне нужно делать. Это будет очень полезно Изображение для справки Изображение для справки2

Две вещи, которые я хочу: 1 - показать кластеризацию для начальной загрузки без просмотра значков карты 2 - показать только карту вид значка, а не штырьки после визуализации кластера / zoom

Пожалуйста, кто-нибудь, помогите мне

1 Ответ

0 голосов
/ 04 мая 2020

У меня есть проблема, похожая на эту. Обходной путь, который я придумал, состоял в том, чтобы запустить функцию clearMarkers, а затем заново добавить весь массив маркеров обратно с помощью функции addMarkers

Я все еще работаю над этим, поэтому, если я найду лучший ответ, я обновлю

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