2017-09-01 22 views
0

私はデフォルトの赤いGoogleマップマーカーを変更したい場所にiOSアプリケーションを構築しています。残念ながら、私はインターネット上を見渡そうとしましたが、解決策を見つけることはできません。 私の問題は、gmaps utilsでクラスタリングしているgmapsを実装していることですが、クラスPOIItemの項目のアイコンを変更する方法が見つからないようです。メーカーの外観を変更しようとすると、デフォルトとカスタムの両方のマーカーが表示されます。 FUNCのgetClubs(){誰もが、非常に私はプログラミングに非常に新しいですいただければ幸い解決策を持っており、それは私がこだわっているしばらくしている場合はGoogleマップを変更するPOIItemマーカー

 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() 

だからここでは、コードスニペットですこれはしばらくの間です。ここで

Below is a screenshot of my output

答えて

0

のGoogleドキュメントのリンクです:Customizing Marker Clusters

SOここSWIFTで答える:作品apprentlyそのきれいではありません。その他の基本的なマーカーの

How to implement GMUClusterRenderer in Swift

:ここでは基本的なマーカーのためのGoogleの

ドキュメントは、リンクされています、それは私が必要なものを change the marker color

marker.icon = GMSMarker.markerImage(with: .black) 
+0

おかげでたくさんです! –

関連する問題