2016-06-12 3 views
0

どのように各バブルを異なる色にするのですか?ここで配列の複数のMapKitオーバーレイカラー

は色の私の配列です:

var tableColors = [UIColor(red: 220.0/255.0, green: 95.0/255.0, blue: 19.0/255.0, alpha: 0.9), // Rust 
    UIColor(red: 255.0/255.0, green: 191.0/255.0, blue: 59.0/255.0, alpha: 0.9), // Yellow 
    UIColor(red: 255.0/255.0, green: 91.0/255.0, blue: 51.0/255.0, alpha: 0.9), // Red 
    UIColor(red: 0.0/255.0, green: 160.0/255.0, blue: 174.0/255.0, alpha: 0.9), // KAL 
    UIColor(red: 0.0/255.0, green: 121.0/255.0, blue: 95.0/255.0, alpha: 0.9), // Green 
    UIColor(red: 104.0/255.0, green: 68.0/255.0, blue: 88.0/255.0, alpha: 0.9), // Purple 
    UIColor(red: 244.0/255.0, green: 97.0/255.0, blue: 119.0/255.0, alpha: 0.9), // Pink 
    UIColor(red: 1.0/255.0, green: 116.0/255.0, blue: 200.0/255.0, alpha: 0.9), // Blue 
    UIColor(red: 0.0/255.0, green: 188.0/255.0, blue: 111.0/255.0, alpha: 0.9), // Light Green 
    UIColor(red: 0.0/255.0, green: 196.0/255.0, blue: 179.0/255.0, alpha: 0.9), // Aqua 
    UIColor(red: 246.0/255.0, green: 50.0/255.0, blue: 62.0/255.0, alpha: 0.9)] // Hot 

ここCloudKitデータから場所を作成するコードです。

func fetchBubble() { 

    let query = CKQuery(recordType: "Collection", predicate: NSPredicate(format: "TRUEPREDICATE", argumentArray: nil)) 

    publicDB!.performQuery(query, inZoneWithID: nil) { results, error in 

     if error == nil { 

      for collection in results! { 

       let collectionLocation = collection.valueForKey("Location") as? CLLocation 

       let collectionName = collection.valueForKey("Name") as! String 

       dispatch_async(dispatch_get_main_queue(), {() -> Void in 

        if CLLocationManager.isMonitoringAvailableForClass(CLCircularRegion.self) { 

         let intrepidLat: CLLocationDegrees = (collectionLocation?.coordinate.latitude)! 

         let intrepidLong: CLLocationDegrees = (collectionLocation?.coordinate.longitude)! 

         let title = collectionName 

         let coordinate = CLLocationCoordinate2DMake(intrepidLat, intrepidLong) 

         let regionRadius = 50.0 

         let region = CLCircularRegion(center: CLLocationCoordinate2D(latitude: coordinate.latitude, 
          longitude: coordinate.longitude), radius: regionRadius, identifier: title) 

         self.locationManager.startMonitoringForRegion(region) 

         let restaurantAnnotation = MKPointAnnotation() 

         self.mapView.addAnnotation(restaurantAnnotation) 

         restaurantAnnotation.coordinate = coordinate 

         let circle = MKCircle(centerCoordinate: coordinate, radius: regionRadius) 

         self.mapView.addOverlay(circle) 

         self.numberOfObjectsInMyArray() 

        } 

        else { 

         print("System can't track regions") 

        } 


       }) 

      } 

     } 

     else { 

      print(error) 

     } 

    } 

} 

そして、私は色をループしかし現時点では、それは各アレイからの同じ色を適用しているのいくつかの方法を試みた

func mapView(mapView: MKMapView, rendererForOverlay overlay: MKOverlay) -> MKOverlayRenderer { 

    let circleRenderer = MKCircleRenderer(overlay: overlay) 

    for index in 1...5 { 

     circleRenderer.fillColor = self.tableColors[index + 1] 

    } 

    return circleRenderer 

} 

次のコードで円を描きます気泡の

ご協力いただければ幸いです。

答えて

0

rendererForOverlay吹き出しメソッドでは、すべてのcircleRendererに同じ最終カラーを設定しています。だからではなく、あなたのコード

for index in 1...5 { 
    circleRenderer.fillColor = self.tableColors[index + 1] 
} 

circleRenderer.fillColor = self.randomTableColors() 

と交換して、次のようにランダムに色を与えるために、このメソッドを実装します。

func randomTableColors() -> UIColor { 
    let randomIndex = Int(arc4random_uniform(UInt32(tableColors.count))) 
    return tableColors[randomIndex] 
}