2017-09-01 4 views
0

Ich baue eine iOS-App, wo ich die standardmäßigen roten Google Maps-Markierungen ändern möchte, leider habe ich versucht, über das Internet zu suchen und kann keine Lösungen finden. Mein Problem ist, dass ich das Gmaps-Clustering mit gmaps utils implementiert habe, aber ich finde keinen Weg, das Symbol eines Elements der Klasse POIItem zu ändern. Wenn versucht wird, das Aussehen des Herstellers zu ändern, werden beide Markierungen angezeigt, der Standard und der Benutzer.Ändern von Google Maps POIItem Marker

Also hier ist ein Code-Schnipsel: func getClubs() {

 ref.child("Clubs").observe(.value, with: { (snapshot) in 
      for child in snapshot.children{ 
       let snap = child as! DataSnapshot 
       let value = snap.value as? [String: Any] 
       //print(value!) 
       let name = value?["Name"] as? String 
       //let latitude = value?["Latitude"] as? String 
       //let longitude = value?["Longitude"] as? String 
       let contact = value?["Contact"] as? String 
       let prix = value?["Prix"] as? [String:Int] 

       var adresse = value?["Adresse"] as? String 
       if adresse == nil { 
        adresse = value?["Address"] as? String 
       } 
       var idFB = value?["ID Facebook"] as? Int 
       if idFB == nil { 
        idFB = value?["Facebook ID"] as? Int 
       } 

       //let clubFbId = String(describing: idFB) 
       //print(clubFbId) 
       print("\(idFB)") 

       let clubStruct: Club = Club(name: name!, adresse: adresse!, contact: contact!, clubIdFb: idFB!) 

       if prix != nil { 
        clubStruct.prix = prix 
       } 

       self.clubArray.updateValue(clubStruct, forKey: idFB!) 
       print(self.clubArray[idFB!]?.name) 
      } 
     }){ (error) in 
      print(error.localizedDescription) 
     } 

     ref.child("Events").observe(.value, with: { (snapshot) in 
      //var indice: Int = 1 
      for child in snapshot.children{ 
       let snap = child as! DataSnapshot 
       //print(snap.key) 
       let event = snap.childSnapshot(forPath: "0").value as? [String:Any] 
       let place = snap.childSnapshot(forPath: "0").childSnapshot(forPath: "place").value as? [String:Any] 

       let clubFbId = place?["id"] as? String 

       let name = event?["name"] as? String 
       let start_time = event?["start_time"] as? String 
       let end_time = event?["end_time"] as? String 
       let eventFbId = event?["id"] as? String 
       let videoURL = event?["videoURL"] as? String 
       let timetable = event?["timetable"] as? [String:String] 

       let dateFormatter = DateFormatter() 
       dateFormatter.dateFormat = "yyyy-MM-dd'T'HH:mm:ssZ" 
       dateFormatter.timeZone = TimeZone(abbreviation: "GMT+2:00") 

       let start = dateFormatter.date(from: start_time!)! 
       let end = dateFormatter.date(from: end_time!)! 

       if self.currentDate! > end { 
        continue 
       } 

       let location = snap.childSnapshot(forPath: "0").childSnapshot(forPath: "place").childSnapshot(forPath: "location").value as? [String:Any] 

       let latitude = location?["latitude"] as? CLLocationDegrees 
       let longitude = location?["longitude"] as? CLLocationDegrees 

       let eventStruct: Event = Event(latitude: latitude!, longitude: longitude!, clubIdFb: clubFbId!, eventIdFb: Int(eventFbId!)!, name: name!, start: start, end: end, idFirebase: snap.key) 

       if videoURL != nil { 
        eventStruct.videoURL = videoURL 
       } 

       if timetable != nil { 
        eventStruct.timetable = timetable 
       } 

       self.eventArray.updateValue(eventStruct, forKey: clubFbId!) 
       //print(self.eventArray[clubFbId!]?.name) 


       let event_marker = GMSMarker() 
       let clubimage = UIImage(named: "clubmarker") 
       let markerView = UIImageView(image: clubimage) 
       markerView.frame = CGRect(x: 0, y: 0, width: 58, height: 103) 
       event_marker.position = CLLocationCoordinate2D(latitude: latitude!, longitude: longitude!) 




       event_marker.map = mapViewFirst 
       event_marker.iconView = markerView 
       event_marker.isTappable = true 
       event_marker.groundAnchor = CGPoint(x: 0.5, y: 0.5) 
       let position = CLLocationCoordinate2D(latitude: latitude!, longitude: longitude!) 
       let event_item = POIItem(position:position, marker: event_marker) 
       self.clusterManager.add(event_item) 
       self.clusterManager.cluster() 
       //  var iconGenerator : GMUDefaultClusterIconGenerator! 
       //  let renderer = GMUDefaultClusterRenderer(mapView: mapViewFirst, clusterIconGenerator: iconGenerator) 

       if event_marker.position.latitude == self.latitude{ 
        event_marker.iconView?.tintColor = UIColor.red 
       } 

      } 
     }){ (error) in 
      print(error.localizedDescription) 
     } 

    } 
    print(eventArray) 

    getClubs() 

Wenn jemand eine Lösung hat wäre es sehr ich die Programmierung bin ganz neu geschätzt werden, und es ist schon eine Weile ich mit bin stecken das für eine Weile.

Below is a screenshot of my output

Antwort