// 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已关闭吗?感谢。
答案 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)
如果仍然有人需要治安。您有基本的网址:
现在您必须做出正确的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'];