如何查找天气预报城市ID


final String FORECAST_BASE_URL =
        "http://api.openweathermap.org/data/2.5/forecast/daily?";
final String QUERY_PARAM = "q";

你好。我正在制作一个天气预报应用程序。但是当我使用"http://openweathermap.org"的 API 时,我有问题,如何获得城市代码或ID"q"?我试图找到城市ID,但我不能。

示例代码 按城市 ID 呼叫:

api.openweathermap.org/data/2.5/forecast/daily?id=524901

我听说"q"也用于"id"。我的意思是

api.openweathermap.org/data/2.5/forecast/daily?q=524901

也是可能的。我想这样做。

那么,如何找到城市ID?有人知道吗?

OpenWeatherMap 支持中心也提出了类似的问题。这是链接 开放天气地图

另外,这里有一个指向城市列表及其各自ID的链接(只需CTRL + F即可找到您想要的城市): 城市和ID列表

CityID的完整列表可以从以下位置下载: http://bulk.openweathermap.org/sample/city.list.json.gz

您可以手动搜索该文件(解压缩后)以查找您的城市名称或从外壳中搜索,例如:

grep -i "london" city.list.json

关于"q"与"id"查询标签:

您可以使用"q"标签按城市(和国家/地区)搜索,如下所示:

http://api.openweathermap.org/data/2.5/forecast/daily?q=London,GB

(请注意,国家/地区代码不一定是必需的)

只要没有关于哪个城市的问题,这就可以了。但是,如果一个国家/地区有多个同名城市,则可以在上面链接的列表中找到正确的标识符后,使用 CityID 指定某个城市,如下所示:

http://api.openweathermap.org/data/2.5/forecast/daily?id=2643743

它还返回伦敦的天气,

但确保您不会意外获得美国肯塔基州伦敦或美国俄亥俄州伦敦的天气,如果您选择不使用"q"标签中的国家/地区代码。

听起来你的应用需要在用户键入城市名称时搜索城市。您可以通过在某种托管上运行OpenWeatherMap City Finder服务器来做到这一点(在Heroku上,在Docker主机上,也许以每月5美元的价格从Digital Ocean购买自己最便宜的VM),然后使用OWM City Finder客户端访问该服务器并解析用户输入到JSON城市数组中的任何字符串, 使用全球定位系统和身份证。

OWM 城市查找器服务器无需设置,只需在目标计算机上运行以下命令:

docker run --rm -ti -p25314:25314 mvysny/owm-city-finder-server:0.1

要测试服务器并执行城市查询,只需运行:

$ curl localhost:25314/city?query=helsinki
[{"id":658226,"name":"Helsinki","country":"FI","coord":{"lon":24.93417,"lat":60.17556}},{"id":658225,"name":"Helsinki","country":"FI","coord":{"lon":24.93545,"lat":60.169521}},{"id":658224,"name":"Helsinki","country":"FI","coord":{"lon":21.438101,"lat":60.60778}}]

您可以直接从您的应用程序访问 REST,也可以使用提供的客户端更轻松地访问。阅读更多内容,请访问 https://gitlab.com/mvysny/owm-city-finder/tree/master/owm-city-finder-server

使用openweathermap,您需要在此处创建一个帐户。之后,您可以生成一个将在地址栏中使用的API密钥。喜欢这个:

http://api.openweathermap.org/data/2.5/forecast?id=524901&APPID=*******************************

只需用生成的密钥替换星号

最新更新