Swift-使用OpenWeatherMap获取天气的实时数据、预测数据

阅读: 评论:0

Swift-使⽤OpenWeatherMap 获取天⽓的实时数据、预测数据我们做⼀些Web 应⽤或者是⼿机应⽤,有时会需要展⽰出实时的天⽓数据或者天⽓预报数据。这⾥推荐⼀个好⽤的天⽓API 服务: OpenWeatherMap  。1,OpenWeatherMap 介绍
(1) OpenWeatherMap  提供⼴泛的⽓象数据,如包含当前天⽓的地图,⼀周预报,降⽔,风,云,来⾃⽓象站的其他数据。
(2)数据结果提供  JSON  、 XML  ,、以及  HTML  等多种格式。
(3)免费⽤户可以使⽤绝⼤部分功能。同收费⽤户⽐起来,只是对每分钟查询次数有限制(60次/分钟)。但这个也⾜够我们使⽤了。 2,OpenWeatherMap 注册
要使⽤  OpenWeatherMap  的服务,⾸先我们要到它的官⽹上注册⼀个帐号,地址:
然后再登录帐号,注册个  apikey 。这个在后⾯获取⽓候信息时参数中需要带上。(注册这些都是免费的。)
3,API 提供的功能介绍
(1)实时天⽓数据
(2)最近5天的天⽓预报数据(时间精度:每3⼩时⼀条数据)
(3)最近16天的天⽓预报数据(时间精度:每天⼀条数据)
(4)历史数据查询
(5)紫外线指数查询
(6)提供天⽓图层(Weather map layers )
(7)⽓象站数据提供
(8)批量数据下载
(9)空⽓污染查询
官⽅API 说明地址: 。下⾯我通过两个简单的样例,演⽰使⽤⽅法。
4,实时天⽓查询
API ⽀持根据城市名称、城市ID 、城市邮编、经纬度坐标这4种⽅式查询对应城市的天⽓信息。
下⾯样例使⽤城市名称来查询,查询出北京当前的实时天⽓,效果图如下:
(注意:这⾥对返回的  JSON  数据我使⽤  SwiftyJSON  来解析,具体⽤法可以参考我原来写的这篇⽂章: )
5,未来天⽓预测
下⾯样例查询出未来5天内,北京的天⽓预报数据。效果图如下:1
2
华沙条约组织3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
芜湖属于哪个省份23
24
25
26
27
28
29
30
31
江西十大垃圾专科学院32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
黑龙江旅游景点大全景点排名51
52
53
54
55
56
57
58
59
60
61
62
63
64
65import  UIKit  class  ViewController  :  UIViewController  {          let  apiId =  "12b2817fbec86915a6e9b4dbbd3d9036"      override  func  viewDidLoad() {        super  .viewDidLoad()                  getCurrentWeatherData();    }          //获取当前天⽓数据(北京)    func  getCurrentWeatherData(){        let  urlStr =  "\(apiId)"        let  url =  NSURL  (string: urlStr)!        guard  let  weatherData =  NSData  (contentsOfURL: url)  else  {  return  }                  //将获取到的数据转为json 对象        let  jsonData =  JSON  (data: weatherData)                  //⽇期格式化输出        let  dformatter =  NSDateFormatter  ()        dformatter.dateFormat =  "yyyy 年MM ⽉dd ⽇ HH:mm:ss"                  print  ( "城市:\(jsonData[" name "].string!)" )                  let  weather = jsonData[ "weather" ][0][ "main" ].string!        print  ( "天⽓:\(weather)" )        let  weatherDes = jsonData[ "weather" ][0][ "description" ].string!        print  ( "详细天⽓:\(weatherDes)" )                  let  temp = jsonData[ "main" ][ "temp" ].number!        print  ( "温度:\(temp)°C" )                  let  humidity = jsonData[ "main" ][ "humidity" ].number!        print  ( "湿度:\(humidity)%" )                  let  pressure = jsonData[ "main" ][ "pressure" ].number!        print  ( "⽓压:\(pressure)hpa" )                  let  windSpeed = jsonData[ "wind" ][ "speed" ].number!        print  ( "风速:\(windSpeed)m/s" )                  let  lon = jsonData[ "coord" ][ "lon" ].number!        let  lat = jsonData[ "coord" ][ "lat" ].number!        print  ( "坐标:[\(lon),\(l
at)]" )                  let  timeInterval1 =  NSTimeInterval  (jsonData[ "sys" ][ "sunrise" ].number!)        let  date1 =  NSDate  (timeIntervalSince1970: timeInterval1)        print  ( "⽇出时间:\(dformatter.stringFromDate(date1))" )                  let  timeInterval2 =  NSTimeInterval  (jsonData[ "sys" ][ "sunset" ].number!)        let  date2 =  NSDate  (timeIntervalSince1970: timeInterval2)        print  ( "⽇落时间:\(dformatter.stringFromDate(date2))" )                  let  timeInterval3 =  NSTimeInterval  (jsonData[ "dt" ].number!)        let  date3 =  NSDate  (timeIntervalSince1970: timeInterval3)        print  ( "数据时间:\(dformatter.stringFromDate(date3))" )    }      override  func  didReceiveMemoryWarning() {        super  .didReceiveMemoryWarning()    }}
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60import UIKit
class ViewController :  UIViewController  {
let  apiId =  "12b2817fbec86915a6e9b4dbbd3d9036"
override func  viewDidLoad() {
super .viewDidLoad()
getForcastWeatherData();
}
//获取未来天⽓数据(北京)仙华山景区旅游介绍
func  getForcastWeatherData(){
let  urlStr =  "\(apiId)"
let  url =  NSURL (string: urlStr)!
guard  let  weatherData =  NSData (contentsOfURL: url)  else  {  return  } //将获取到的数据转为json对象
let  weatherJson =  JSON (data: weatherData)
print ( "城市:\(weatherJson[" city "][" name "].string!)" )
let  lon = weatherJson[ "city" ][ "coord" ][ "lon" ].number!
let  lat = weatherJson[ "city" ][ "coord" ][ "lat" ].number!
print ( "坐标:[\(lon),\(lat)]" )
//⽇期格式化输出
let  dformatter =  NSDateFormatter ()
dformatter.dateFormat =  "yyyy年MM⽉dd⽇ HH:mm:ss"
//遍历数据
for  (_,jsonData):( String ,  JSON )  in  weatherJson[ "list" ] {
let  timeInterval =  NSTimeInterval (jsonData[ "dt" ].number!)
let  date =  NSDate (timeIntervalSince1970: timeInterval)
print ( "--- 时间:\(dformatter.stringFromDate(date)) ---" )
let  weather = jsonData[ "weather" ][0][ "main" ].string!
print ( "天⽓:\(weather)" )
let  weatherDes = jsonData[ "weather" ][0][ "description" ].string!
print ( "详细天⽓:\(weatherDes)" )
let  temp = jsonData[ "main" ][ "temp" ].number!
print ( "温度:\(temp)°C" )
let  humidity = jsonData[ "main" ][ "humidity" ].number!
print ( "湿度:\(humidity)%" )
let  pressure = jsonData[ "main" ][ "pressure" ].number!
print ( "⽓压:\(pressure)hpa" )
let  windSpeed = jsonData[ "wind" ][ "speed" ].number!
print ( "风速:\(windSpeed)m/s" )
沈阳世博园地图}
}
override func  didReceiveMemoryWarning() {
super .didReceiveMemoryWarning()
}
}
原⽂出⾃:转载请保留原⽂链接:

本文发布于:2023-08-26 20:58:56,感谢您对本站的认可!

本文链接:http://www.035400.com/whly/3/598611.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:数据   查询   城市   预报   注册   提供   保留   帐号
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2024-2030 Comsenz Inc.Powered by © 文化旅游网 滇ICP备2022007236号-403 联系QQ:1103060800网站地图