如何通过位置获得雅虎的阵营?

时间:2013-04-03 09:53:44

标签: geolocation yahoo weather

// 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已关闭吗?感谢。

5 个答案:

答案 0 :(得分:10)

雅虎已转向名为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

答案 1 :(得分:6)

答案 2 :(得分:1)

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

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

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

答案 3 :(得分:1)

要按纬度和经度获取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"
      }
    }
  }
}

答案 4 :(得分:0)

如果仍然有人需要治安。您有基本的网址:

  

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

现在您必须做出正确的YQL声明(用城市名称替换城市),例如。

  

从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号。您可以通过以下方式获得它: query>结果>位置> [0]>糟糕

因此在Javascript中,它将类似于:

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