【问题标题】:How to get Yahoo's woeid by location? [closed]如何按位置获取雅虎的woeid? [关闭]
【发布时间】:2013-03-24 22:21:51
【问题描述】:
// Get woeid by lati/long
            HttpGet hg = new HttpGet(
                        "http://where.yahooapis.com/geocode?location=" + latlon + "&flags=J&gflags=R)");
            HttpClient hc = new DefaultHttpClient();
            HttpResponse weatherHR = hc.execute(hg);

            if (weatherHR.getStatusLine().getStatusCode() != HttpStatus.SC_OK) {
                if (DEBUG)
                    Utils.log("", "Location != HttpStatus.SC_OK");
                return null;
            }

我之前使用过这个API,它工作正常,但是从今天开始它返回错误,HttpStatus.SC_OK 不正常。此 API 是否已关闭?谢谢。

【问题讨论】:

    标签: geolocation yahoo weather


    【解决方案1】:

    雅虎已转移到名为 BOSS 的付费服务,但他们确实提供非商业服务:

    Yahoo Geo API 的非商业用途

    雅虎!继续全面支持在非商业环境中基于 Placefinder 和 PlaceSpotter 构建的开发人员应用程序。您可以通过 YQL 使用这两种服务,并且每个表的查询次数限制为 2000 个。详细了解如何使用 Placefinder 和 Placespotter YQL 表。

    使用Placefinder可以反向查找经纬度:

    http://developer.yahoo.com/yql/console/?q=select%20*%20from%20geo.placefinder%20where%20text%3D%2237.416275%2C-122.025092%22%20and%20gflags%3D%22R%22

    可以转换成json请求:

    http://query.yahooapis.com/v1/public/yql?q=select%20*%20from%20geo.placefinder%20where%20text%3D%2237.416275%2C-122.025092%22%20and%20gflags%3D%22R%22&format=json

    【讨论】:

      【解决方案2】:

      【讨论】:

      • 雅虎!天气 API 已于 2013 年 4 月 3 日失效。
      • 雅虎已转向付费的BOSS 服务,但您的替代方案也是付费服务,只需在 6 月之前提供免费试用。
      • @Cas 我们每个 ip 有 200 次调用,这意味着您可以免费为 n 个客户端实现服务客户端,无需身份验证!我们将在几天内用一些很酷的东西和计划来改变它(免费!)
      • metwit 也关闭了
      【解决方案3】:

      city 也可以用作location,如下所示:

      select * 
      from weather.forecast 
      where woeid in (
          select woeid 
          from geo.places(1) 
          where text="frankfurt"
      ) and u="c"
      

      "frankfurt" 可以替换为任何选择的位置。

      【讨论】:

        【解决方案4】:

        要通过经纬度获取Yahoo Weather WOEID,可以使用这个

        https://query.yahooapis.com/v1/public/yql?q=select%20woeid%20from%20geo.places%20where%20text%3D%22(20,34)%22%20limit%201&diagnostics=false&format=json
        

        您会收到如下回复:

        {
          "query":{
            "count":1,
            "created":"2017-03-17T20:34:50Z",
            "lang":"es-AR",
            "results":{
              "place":{
                "woeid":"1435509"
              }
            }
          }
        }
        

        【讨论】:

          【解决方案5】:

          如果还有人需要 answear。您有基本网址:

          https://query.yahooapis.com/v1/public/yql?q=

          现在您必须做出正确的 YQL 语句(将 city 替换为您的城市名称)例如

          select * from geo.places where text="city"

          现在您必须编码为 URI。您可以使用 javascript 方法:encodeURIComponent()。 然后你必须合并 basicURL 和编码的 YQL 语句和

          &format=json

          因此,旧金山的整个链接示例如下:

          http://query.yahooapis.com/v1/public/yql?q=select%20*%20from%20geo.places%20where%20text%3D%22san%20francisco%2C%20ca%22&format=json

          现在您必须从回复中获取 WOEID 号码。您可以通过以下方式获得: 查询>结果>地点>[0]>woeid

          所以在 Javascript 中它会是这样的:

          const woeidNumber = responseObject['query']['results']['place'][0]['woeid'];
          

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2013-01-25
            • 2012-01-11
            • 1970-01-01
            • 1970-01-01
            • 2011-07-23
            • 1970-01-01
            • 2018-02-18
            • 1970-01-01
            相关资源
            最近更新 更多