【问题标题】:Most efficient method of pulling in weather data for multiple locations提取多个位置的天气数据的最有效方法
【发布时间】:2014-07-11 07:06:41
【问题描述】:

我正在开发一个流星移动应用程序,该应用程序显示有关当地名胜古迹的信息,我想要显示的内容之一是每个位置的天气。我目前已经用 latlng 坐标存储了我的位置,并且可以按半径搜索它们。我想使用openweathermap api 来获取一些有用的“当前状况”信息,以便用户在查看条目时可以看到基本的天气数据。理想情况下,我想限制传出请求的数量以保持页面快速(并减少 API 请求)

我想知道我是否可以创建一个我定期更新的服务器端天气数据集合(每小时?),然后我的客户会查询(也许使用 mongo $near 查找?) - 这样我的所有数据是在流星中处理的,而不是每个客户端都出去从 API 中获取最新数据。我不想遍历列表中的所有位置并为每个位置单独调用 api,因为我有大约。 400 个地点(!)。恐怕我对 API 请求(以及流星本身)不熟悉,所以如果这是一个措辞不当的问题,我深表歉意。

我不完全确定这是否可行,或者它是否是最好的方法 - 任何建议(以及任何有用的代码 sn-ps 的链接!)将不胜感激!

编辑/更新!

好的,我还没有设法让这个工作,但我有一些关于数据的更有用的细节! 如果我向 openweather API 发出请求,我可以取回他们所有位置的数据(我想将其添加/更新到集合中)。然后我可以进行定期查找,而不是每次用户查看某个位置时都直接向他们发出客户端请求。 JSON 数据如下所示:

{ "message":"accurate", "cod":"200", "count":50, "list":[ { "id":2643076, "name":"Marazion", "coord":{ "lon":-5.47505, "lat":50.125561 }, "main":{ "temp":292.15, "pressure":1016, "humidity":68, "temp_min":292.15, "temp_max":292.15 }, "dt":1403707800, "wind":{ "speed":8.7, "deg":110, "gust":13.9 }, "sys":{ "country":"" }, "clouds":{ "all":75 }, "weather":[ { "id":721, "main":"Haze", "description":"haze", "icon":"50d" } ] }, ... 理想情况下,我想建立自己的本地“天气”集合,我可以使用 mongo 的 $near 进行搜索(以降低出站请求并加快速度),但我不知道这是否可行,因为数据回来了 - 我想我需要像这样构建我的位置数据才能使用地理搜索:

"location": { "type": "Point", "coordinates": [-5.47505,50.125561] } 我的问题是:

  1. 如何构建该集合(我见过 this - 我可以做类似的事情并定期更新集合中的现有条目吗?)
  2. 它只需要存在于服务器还是客户端?
  3. 我是否需要处理数据才能使地理搜索正常工作?
  4. 这甚至是正确的方法吗??

编辑/更新2

这个问题是不是太长/太多了?感觉就是这样。也许我应该把它分开。

【问题讨论】:

    标签: meteor weather-api


    【解决方案1】:

    是的,很容易。因为你的问题太大了,我会给你一个高层次的解释,我认为你需要做什么。

    您需要创建一个用于保存天气数据的集合。 请求新数据并在设定的时间间隔内更新集合的请求工作者。使用 cron-tick 之类的东西来安排时间间隔。 请求数据应该只发生在服务器端,我可以为此推荐request npm 包。

    Meteor.publish 天气集合并让客户端订阅它,可选择使用过滤器来过滤它的位置。

    您现在应该可以在您的客户端上获取天气数据,并且应该能够对它感到惊讶。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-10-24
      • 1970-01-01
      • 2018-12-24
      • 2016-09-02
      • 2017-10-26
      相关资源
      最近更新 更多