使用带有Lat和Lon的Google Weather API - 如何格式化?

时间:2010-05-06 11:54:44

标签: latitude-longitude google-weather-api

我想使用Google Weather API - 传递lat和long值。我存储这些值,但Google似乎需要不同格式的这些值。

即。对于麦克塔维什镇,我的价值为45.5和-73.583

这可以在这里工作:http://api.wunderground.com/auto/wui/geo/WXCurrentObXML/index.xml?query=45.5,-73.583

但是,当我将这些数据用于Google API时,它不起作用:请参阅:www.google.com/ig/api?weather = ,,, 455.5,-73.583

任何帮助表示赞赏。我更愿意使用Google数据。

4 个答案:

答案 0 :(得分:5)

更新的答案: 我刚刚注意到Google的Weather API存在一些其他违规行为。在任何情况下,除了负号之外,如果适用,您还需要有8位数字。请参阅以下代码块(基于Java)以获得正确的格式。 (不是完美的算法,只是一个简单的示例,以便您可以看到结果)

lat = lat.replace(".", "");
while(lat.length() < 9)
    lat = lat.concat("0");
if(lat.contains("-"))
    lat = lat.substring(0, 9);
else
    lat = lat.substring(0, 8);

原始回复: 保罗,关于Google的Weather API的诀窍在于你不使用传统纬度/经度所接收的坐标。相反,您解析小数点。此外,Google的Weather API的“有趣的怪癖”似乎要求数据以7到8位字符串形式出现。因此,例如,45. 5应该是45.50000,而-73.583应该是-73.58300。这个7-8位的长度似乎不包括任何负坐标前面的负号(-)。

因此,您的45.5(0000)变为4550000,而您的-73.583(00)变为-7358300。所以最终的URL将是:

http://www.google.com/ig/api?weather=,,,4550000,-7358300

请注意,7-8位数意味着455000045500000可以接受,-7358300-73583000也是如此。

当我看到你的问题时,我才发现7-8位长度 - 我尝试将数据输入我的天气解析程序,发现455,-73583没有产生正确的数据。

请注意,这是我的非正式实验,而不是官方文档,所以可能还有其他的怪癖需要发现。

答案 1 :(得分:4)

它更简单 - 纬度和经度应该乘以一百万

答案 2 :(得分:2)

在我看来,纬度必须以_e6格式编码(最后六位必须是传递给API的lon / lat字符串的小数部分)。然后你必须将第一个小数调整为6的长度,如果你的小数小于6,你可以添加0,如果你有更多,你可以将它剪辑为6。对于int部分,如果您只有一个字符,则必须先添加零,对于两位或三位数,您不需要执行任何操作。

示例:

  • 1.1234必须编码为:-01123400
  • 112.2345必须编码为:112234500
  • 34.123456必须编码为

Here you have a explanation with examples and a the php source code(博客以西班牙语撰写)。

答案 3 :(得分:0)

正如米格尔所说,最后6位数应该是小数位。所以正确的代码就像......一样简单。

string.Format("http://www.google.com/ig/api?weather=,,,{0:0},{1:0}", 
    (latitude * 1000000), 
    (longitude * 1000000));