我想使用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数据。
答案 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位数意味着4550000
或45500000
可以接受,-7358300
或-73583000
也是如此。
当我看到你的问题时,我才发现7-8位长度 - 我尝试将数据输入我的天气解析程序,发现455,-73583
没有产生正确的数据。
请注意,这是我的非正式实验,而不是官方文档,所以可能还有其他的怪癖需要发现。
答案 1 :(得分:4)
它更简单 - 纬度和经度应该乘以一百万
答案 2 :(得分:2)
在我看来,纬度必须以_e6格式编码(最后六位必须是传递给API的lon / lat字符串的小数部分)。然后你必须将第一个小数调整为6的长度,如果你的小数小于6,你可以添加0
,如果你有更多,你可以将它剪辑为6。对于int部分,如果您只有一个字符,则必须先添加零,对于两位或三位数,您不需要执行任何操作。
示例:
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));