Guest User

Untitled

a guest
Jan 22nd, 2019
90
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.57 KB | None | 0 0
  1. import UIKit
  2. import CoreLocation
  3. import Alamofire
  4. import SwiftyJSON
  5.  
  6. class ViewController: UIViewController, CLLocationManagerDelegate {
  7.  
  8. let base_URL = "https://api.darksky.net/forecast/[API Key]/"
  9.  
  10. //Instance variable
  11. let locationManager = CLLocationManager()
  12. let windDataModel = WindDataModel()
  13.  
  14. @IBOutlet weak var windDirectionArrow: UIImageView!
  15. @IBOutlet weak var yard: UILabel!
  16. @IBOutlet weak var gust: UILabel!
  17. @IBOutlet weak var wind: UILabel!
  18.  
  19.  
  20. override func viewDidLoad() {
  21. super.viewDidLoad()
  22.  
  23. //Location manager set up
  24. locationManager.delegate = self
  25. locationManager.desiredAccuracy = kCLLocationAccuracyBest
  26. locationManager.requestWhenInUseAuthorization()
  27. locationManager.startUpdatingHeading()
  28. locationManager.startUpdatingLocation()
  29.  
  30. }
  31.  
  32. //Update location heading and course
  33.  
  34. func locationManager(manager: CLLocationManager, didUpdateHeading newHeading: CLHeading) {
  35. print (newHeading.trueHeading)
  36.  
  37. }
  38.  
  39.  
  40.  
  41. //Get wind data method
  42.  
  43. func getWindData(url: String, latitude: String, longitude: String) {
  44.  
  45. let urlStr = "(base_URL)(latitude),(longitude)"
  46. Alamofire.request(urlStr, method: .get, parameters:nil, encoding: JSONEncoding.default).responseJSON { [weak self]
  47.  
  48. response in
  49. if response.result.isSuccess {
  50.  
  51. print("Success! Got the weather data")
  52. let windJSON : JSON = JSON(response.result.value!)
  53.  
  54. self!.updateWindData (json: windJSON)
  55. }
  56.  
  57. else {
  58. print("Error (String(describing: response.result.error))")
  59. self?.wind.text = "Connection issues" }
  60.  
  61. }
  62.  
  63. }
  64.  
  65. //Write the updateWeatherData method here:
  66.  
  67. func updateWindData(json: JSON) {
  68.  
  69. let windSpeed = json["currently"]["windSpeed"].intValue
  70.  
  71. windDataModel.speed = windSpeed
  72.  
  73. let windGust = json["currently"]["windGust"].intValue
  74.  
  75. windDataModel.gust = windGust
  76.  
  77. let windBearing = json["currently"]["windBearing"].doubleValue
  78.  
  79. windDataModel.bearing = windBearing - newHeading.trueHeading
  80.  
  81. windDataModel.arrow = windDataModel.updateArrowIcon(bearing: windDataModel.bearing)
  82.  
  83. updateUIWithWindData()
  84. }
  85.  
  86.  
  87. //Write the updateUIWithWeatherData method here:
  88.  
  89. func updateUIWithWindData() {
  90.  
  91. wind.text = "Wind (windDataModel.speed) MPH"
  92. gust.text = "Gusts (windDataModel.gust) MPH"
  93. yard.text = String(windDataModel.bearing)
  94. windDirectionArrow.image = UIImage(named: windDataModel.arrow)
  95. }
  96.  
  97.  
  98.  
  99. //Did update method
  100.  
  101. func locationManager(_ manager: CLLocationManager, didUpdateLocations locations: [CLLocation]) {
  102. let location = locations[locations.count - 1]
  103. if location.horizontalAccuracy > 0 {
  104. self.locationManager.stopUpdatingLocation()
  105. self.locationManager.delegate = nil
  106.  
  107. let latitude = String(location.coordinate.latitude)
  108. let longitude = String(location.coordinate.longitude)
  109.  
  110. getWindData(url: base_URL, latitude: latitude, longitude: longitude)
  111. }
  112. }
  113.  
  114.  
  115. //Did fail with error method
  116. func locationManager(_ manager: CLLocationManager, didFailWithError error: Error) {
  117. print(error)
  118. wind.text = "Error"
  119. }
  120.  
  121. }
Add Comment
Please, Sign In to add comment