Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
509 views
in Technique[技术] by (71.8m points)

latitude longitude - Using Google Weather API with Lat and Lon - how to format?

I want to use the Google Weather API - by passing lat and long values. I am storing these values, however it seems Google needs these values in different format.

i.e. For the town of McTavish I have values of 45.5 and -73.583

This works here: http://api.wunderground.com/auto/wui/geo/WXCurrentObXML/index.xml?query=45.5,-73.583

But when I use these data for Google API, it does not work: See: www.google.com/ig/api?weather=,,,45.5,-73.583

Any help appreciated. I would prefer to use the Google Data.

See Question&Answers more detail:os

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Reply

0 votes
by (71.8m points)

UPDATED ANSWER: I have just noticed some OTHER irregularities with Google's Weather API. In ANY case, you need to have 8 numerical digits, in addition to the negative sign, if it applies. See the following code block (Java-based) for proper formatting. (Not the perfect algorithm, but just a quick example so that you can see the results)

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);

ORIGINAL RESPONSE: Paul, the trick about Google's Weather API is that you don't use the coordinates as received by traditional latitude/longitude. Instead, you parse out the decimal points. Additionally, a "fun quirk" of Google's Weather API seems to be a requirement that the data come in as a 7- to 8-digit string. So, for instance, 45.5 should really be 45.50000, and -73.583 should really be -73.58300. This length of 7-8 digits does NOT seem to include the negative sign (-) in front of any negative coordinates.

So, your 45.5(0000) becomes 4550000, and your -73.583(00) becomes -7358300. So the final URL would be:

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

Note that again, 7-8 digits means 4550000 or 45500000 would be acceptable, as would -7358300 or -73583000.

I only found out about the 7-8 digit length when I saw your question--I tried entering the data into my weather parsing program, and found that 455,-73583 does not yield proper data.

Note that this is by my unofficial experimentation, and not by official documentation, so there may be other quirks to be discovered.


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
OGeek|极客中国-欢迎来到极客的世界,一个免费开放的程序员编程交流平台!开放,进步,分享!让技术改变生活,让极客改变未来! Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...