Guest User

TrafficLayer

a guest
Sep 24th, 2018
158
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Swift 2.07 KB | None | 0 0
  1. protocol OnTrafficSpeedQueriedDelegate {
  2.     func onQuerySuccess(proposedSpeed: Int)
  3. }
  4.  
  5.  
  6. class TrafficSpeedLayer: AGSFeatureLayer, AGSFeatureLayerQueryDelegate, AGSLayerDelegate {
  7.    
  8.     var featureLayer: AGSFeatureLayer!
  9.     var point: AGSPoint!
  10.     var trafficSpeedDelegate: OnTrafficSpeedQueriedDelegate!
  11.    
  12.     override init!(url: URL!, mode: AGSFeatureLayerMode, credential cred: AGSCredential!) {
  13.        
  14.         super.init(url: url, mode: mode, credential: cred)
  15.         self.delegate = self
  16.         self.queryDelegate = self
  17.     }
  18.    
  19.     deinit {
  20.        
  21.     }
  22.    
  23.     required init!(json: [AnyHashable: Any]!) {
  24.         fatalError("init(JSON:) has not been implemented")
  25.     }
  26.    
  27.     func layerDidLoad(_ layer: AGSLayer!) {
  28.         if layer != nil {
  29.             let query = AGSQuery()
  30.             query.whereClause = "1=1"
  31.             query.outFields = ["*"]
  32.             query.returnGeometry = true
  33.             query.geometry = point
  34.             query.spatialRelationship = .intersects
  35.             query.outSpatialReference = Constants.WGS84_SPATIAL_REFERENCE
  36.            
  37.             self.queryDelegate = self
  38.             self.queryFeatures(query)
  39.         }
  40.     }
  41.    
  42.     func featureLayer(_ featureLayer: AGSFeatureLayer!, operation op: Operation!, didQueryFeaturesWith featureSet: AGSFeatureSet!) {
  43.        
  44.             if featureSet.features.count == 0 {
  45.                 // No data for the queried road
  46.                 trafficSpeedDelegate.onQuerySuccess(proposedSpeed: 0)
  47.            } else {
  48.                 for speed in featureSet.features {
  49.                    
  50.                     if let value = (speed as AnyObject).allAttributes()["DATA"] {
  51.                         if value is NSNull {
  52.                             // No value
  53.                            
  54.                            
  55.                         } else {
  56.                             trafficSpeedDelegate.onQuerySuccess(proposedSpeed: value as! Int)
  57.                            
  58.                         }
  59.                     }
  60.                 }
  61.             }
  62.     }
  63. }
Advertisement
Add Comment
Please, Sign In to add comment