在经纬度和经度上使用Google Weather API - 如何格式化?

问题描述:

我想要使用Google Weather API--通过传递经纬度值。我存储这些值,但Google似乎需要不同格式的这些值。在经纬度和经度上使用Google Weather API - 如何格式化?

即对于McTavish镇我有45.5和-73.583

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

但是当我使用这些数据,谷歌API,这是行不通的:请参阅:WWW。 google.com/ig/api?weather=,,,45.5,-73.583

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

+0

** Google天气API在2012年被关闭** - > http://*.com/questions/12145820/google-weather-api -gone/35943521 – 2016-03-11 15:58:03

更新回答: 我刚刚注意到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); 

原始响应: 保罗,有关谷歌的天气API的技巧是,你不使用的坐标通过所收到传统的经度/纬度。相反,你解析出小数点。此外,Google的Weather API的“有趣的怪癖”似乎是要求数据以7到8位字符串的形式出现。因此,例如,45. 5应该确实是45.50000,而-73.583应该确实是-73.58300。 7-8位数字的长度似乎不包括任何负坐标前面的负号(-)。

因此,您的45.5(0000)变为4550000,并且您的-73.583(00)变为-7358300。所以最终的网址是:

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

注意再次,7-8位数表示455000045500000是可以接受的,因为会-7358300-73583000

当我看到您的问题时,我只发现了有关7-8位数字的长度 - 我尝试将数据输入到我的天气分析程序中,发现455,-73583未产生正确的数据。

请注意,这是由我的非官方实验,而不是官方文件,所以可能会发现其他怪癖。

+1

正确格式的JavaScript版本:'lat.replace('。',''); while(lat.length Voles 2011-09-24 20:04:36

+1

这是不正确的。米格尔佩雷斯Subias已经给出了正确的答案。最后6位数应该是小数位。这导致现场。如果坐标的精度超过六位数字,则可以将小数点去掉并填充到右边。 – 2012-07-14 07:13:34

这是简单得多 - 纬度&经度应该一百万

+0

这不起作用。 – mattbasta 2012-08-21 03:21:28

在我看来经度的纬度必须_e6格式进行编码相乘(SIX最后数字必须传递到经度/纬度字符串的小数部分API)。然后,您必须将第一位小数调整为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(博客是写在西班牙语)。

正如Miguel所说,它是最后的6位数应该是小数位。所以正确的代码就像......

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