【问题标题】:Google API to Get Weather InformationGoogle API 获取天气信息
【发布时间】:2013-01-15 03:13:09
【问题描述】:

我需要根据用户的当前位置获取天气信息。请向我提供 Google API 以获取天气信息。

我正在使用http://www.google.com/ig/api?weather=Mumbai,但 Google 返回一些错误:

我们很抱歉...

...但是您的计算机或网络可能正在发送自动查询。为了保护我们的用户,我们现在无法处理您的请求。

有关详细信息,请参阅 Google 帮助。

当我在 Google 上查找时,我发现 Google API 已关闭。

请指导我使用最新的 Google API 来获取天气信息。

【问题讨论】:

标签: ios iphone google-weather-api


【解决方案1】:

Google 永久终止 Weather API...

您也可以使用:

  1. WunderGround API
  2. Yahoo API

【讨论】:

  • 注意-Yahoo API 刚刚将他们的 API 更改为需要 oAuth
  • 这不再是真的了。您可以使用 Google 的感知 API 根据当前位置获取天气信息。
  • 重要 EOL 通知:自 2019 年 1 月 3 日星期四起,Yahoo Weather API 的 weather.yahooapis.com 和 query.yahooapis.com 将停用。要继续使用我们免费的 Yahoo Weather API,请使用 weather-ydn-yql.media.yahoo.com/forecastrss。按照以下说明获取凭据并加入此免费的 Yahoo Weather API 服务。
【解决方案2】:

【讨论】:

  • 感谢 nithin 会检查它。你对地下天气 api 有任何想法吗。
  • 自 2018 年 10 月起,Weather Underground 已停止向新用户发放 API 访问权限,因为他们正在缩减运营规模
【解决方案3】:

最好的天气 API 是here

他们的 JSON 响应示例如下:

{
  "response": {
  "version": "0.1",
  "termsofService": "http://www.wunderground.com/weather/api/d/terms.html",
  "features": {
  "conditions": 1
  }
  },
  "current_observation": {
  "image": {
  "url": "http://icons-ak.wxug.com/graphics/wu2/logo_130x80.png",
  "title": "Weather Underground",
  "link": "http://www.wunderground.com"
  },
  "display_location": {
  "full": "San Francisco, CA",
  "city": "San Francisco",
  "state": "CA",
  "state_name": "California",
  "country": "US",
  "country_iso3166": "US",
  "zip": "94101",
  "latitude": "37.77500916",
  "longitude": "-122.41825867",
  "elevation": "47.00000000"
  },
  "observation_location": {
  "full": "SOMA - Near Van Ness, San Francisco, California",
  "city": "SOMA - Near Van Ness, San Francisco",
  "state": "California",
  "country": "US",
  "country_iso3166": "US",
  "latitude": "37.773285",
  "longitude": "-122.417725",
  "elevation": "49 ft"
  },
  "estimated": {},
  "station_id": "KCASANFR58",
  "observation_time": "Last Updated on June 27, 5:27 PM PDT",
  "observation_time_rfc822": "Wed, 27 Jun 2012 17:27:13 -0700",
  "observation_epoch": "1340843233",
  "local_time_rfc822": "Wed, 27 Jun 2012 17:27:14 -0700",
  "local_epoch": "1340843234",
  "local_tz_short": "PDT",
  "local_tz_long": "America/Los_Angeles",
  "local_tz_offset": "-0700",
  "weather": "Partly Cloudy",
  "temperature_string": "66.3 F (19.1 C)",
  "temp_f": 66.3,
  "temp_c": 19.1,
  "relative_humidity": "65%",
  "wind_string": "From the NNW at 22.0 MPH Gusting to 28.0 MPH",
  "wind_dir": "NNW",
  "wind_degrees": 346,
  "wind_mph": 22.0,
  "wind_gust_mph": "28.0",
  "wind_kph": 35.4,
  "wind_gust_kph": "45.1",
  "pressure_mb": "1013",
  "pressure_in": "29.93",
  "pressure_trend": "+",
  "dewpoint_string": "54 F (12 C)",
  "dewpoint_f": 54,
  "dewpoint_c": 12,
  "heat_index_string": "NA",
  "heat_index_f": "NA",
  "heat_index_c": "NA",
  "windchill_string": "NA",
  "windchill_f": "NA",
  "windchill_c": "NA",
  "feelslike_string": "66.3 F (19.1 C)",
  "feelslike_f": "66.3",
  "feelslike_c": "19.1",
  "visibility_mi": "10.0",
  "visibility_km": "16.1",
  "solarradiation": "",
  "UV": "5",
  "precip_1hr_string": "0.00 in ( 0 mm)",
  "precip_1hr_in": "0.00",
  "precip_1hr_metric": " 0",
  "precip_today_string": "0.00 in (0 mm)",
  "precip_today_in": "0.00",
  "precip_today_metric": "0",
  "icon": "partlycloudy",
  "icon_url": "http://icons-ak.wxug.com/i/c/k/partlycloudy.gif",
  "forecast_url": "http://www.wunderground.com/US/CA/San_Francisco.html",
  "history_url": "http://www.wunderground.com/history/airport/KCASANFR58/2012/6/27/DailyHistory.html",
  "ob_url": "http://www.wunderground.com/cgi-bin/findweather/getForecast?query=37.773285,-122.417725"
  }
}

【讨论】:

    【解决方案4】:

    Google 天气 API 已关闭。查看以下替代方案:

    Open Weather Map

    National Digital Forecast

    Weather.com

    我一直在使用第一个链接。它像 Open Street Maps 一样免费。

    编辑:

    这是获取 JSON 的基本代码:

    NSError *error = nil;
    NSData *jsonData = [NSData dataWithContentsOfURL:[NSURL URLWithString:@"http://openweathermap.org/data/2.1/find/city?lat=32.85190&lon=57.65878&cnt=1&type=JSON"]];
    
    if (jsonData) {
    
        id jsonObjects = [NSJSONSerialization JSONObjectWithData:jsonData options:NSJSONReadingMutableContainers error:&error];
    
        if (error) {
            NSLog(@"error is %@", [error localizedDescription]);
    
            // Handle Error and return
            return;
    
        }
    
        NSArray *keys = [jsonObjects allKeys];
        // values in foreach loopDic]
        for (NSString *key in keys) {
            NSLog(@"%@ is %@",key, [jsonObjects objectForKey:key]);
        }
    
    
    } else {
        // Handle Error
    }
    

    将其添加到viewDidLoad

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-03-29
    • 1970-01-01
    • 1970-01-01
    • 2021-12-15
    • 2012-10-08
    • 1970-01-01
    • 2012-02-24
    • 1970-01-01
    相关资源
    最近更新 更多