我有一个应用程序(除其他外),它使用雅虎天气API来显示用户选择的位置的天气状况。
在用户可以输入位置的配置对话框中,我希望提供自动完成功能,以便在用户键入位置名称时,建议列出匹配的城市。
我可以使用YQL获取与前缀匹配的位置,即:
select * from geo.places where text = 'Vie*'
但问题是,并不是每个地方都有与之相关的气象站,我很乐意在我的自动完成列表中略过这些。
使用社区表(称为weather.woeid),下面的查询将将以前的查询与天气api连接起来,只返回有气象站的位置:
select location from weather.woeid where w in (select woeid from geo.places where text = 'Vie*')
这几乎解决了我的问题,除了以前的查询(它产生与天气api调用相同的结果)不返回WOEID,也不返回任何类型的标识符,我可以使用它在配置后直接查询天气API。如何捕获连接参数w的值?我尝试过类似select w, location ...
的东西,但这似乎行不通。
有没有其他方法可以获得位置列表(包括。( WOEID)匹配某些有天气数据的前缀吗?
发布于 2011-04-19 20:16:29
Afaik YQL不可能通过从Sub-Select (内部SELECT语句)到外部SELECT的值,如果我正确地理解了您,我就是您想要做的。
基于您的用例,我想提出另一种解决方案:我假设与其相关的气象站位置列表是相对静态的,这意味着这个列表不会经常更改。如果是这样的话,那么每次使用YQL重新生成该列表在性能上都不是很好。相反,我会脱机生成该列表,将其存储在文件、MySQL或其他地方,然后使用静态列表响应自动完成字段的AJAX调用。
静态列表中的数据可能如下所示:
{
"Vienna" => 72342,
"Hamburg" => 12334,
...
}
一旦用户选择了一个位置并按enter键,您就可以将YQL查询发送到weather.woeid,以便根据WOEID查找当前天气。
https://stackoverflow.com/questions/5370088
复制相似问题