2010-05-06 13 views
5

Quiero usar la API del tiempo de Google, pasando valores lat y long. Estoy almacenando estos valores, sin embargo, parece que Google necesita estos valores en diferentes formatos.Uso de Google Weather API con Lat y Lon: ¿cómo formatear?

es decir, para la ciudad de McTavish que tienen valores de 45,5 y -73.583

Esto funciona aquí: http://api.wunderground.com/auto/wui/geo/WXCurrentObXML/index.xml?query=45.5,-73.583

Pero cuando se utiliza estos datos para la API de Google, que no funciona: Ver: www. google.com/ig/api?weather=,,,45.5,-73.583

Cualquier ayuda apreciada. Preferiría usar Google Data.

+0

** La API de Google tiempo, dejando en 2012 ** -> http://stackoverflow.com/questions/12145820/google-weather-api -gone/35943521 –

Respuesta

5

RESPUESTA ACTUALIZADA: Acabo de notar algunas OTRAS irregularidades con la API del tiempo de Google. En CUALQUIER caso, debe tener 8 dígitos numéricos, además del signo negativo, si corresponde. Consulte el siguiente bloque de código (basado en Java) para obtener el formato correcto. (No es el algoritmo perfecto, pero sólo un ejemplo rápido para que pueda ver los resultados)

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

respuesta original: Paul, el truco sobre el API Tiempo de Google es que no utiliza las coordenadas recibida por latitud/longitud tradicional. En cambio, analiza los puntos decimales. Además, un "capricho de la diversión" de Weather API de Google parece ser un requisito para que los datos entren como una cadena de 7 a 8 dígitos. Entonces, por ejemplo, 45. 5 realmente debería ser 45.50000, y -73.583 realmente debería ser -73.58300. Esta longitud de 7-8 dígitos NO parece incluir el signo negativo (-) delante de las coordenadas negativas.

Por lo tanto, su 45.5(0000) se convierte en , y su -73.583(00) se convierte en -7358300. Por lo que la URL final sería:

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

Tenga en cuenta que una vez más, 7-8 dígitos significa 4550000 o 45500000 sería aceptable, al igual que -7358300 o -73583000.

Solo me enteré de la longitud de 7-8 dígitos cuando vi tu pregunta - Intenté ingresar los datos en mi programa de análisis meteorológico, y encontré que 455,-73583 no da los datos correctos.

Tenga en cuenta que esto es por mi experimentación no oficial, y no por la documentación oficial, por lo que puede haber otros caprichos por descubrir.

+1

Versión de JavaScript para el formato correcto: 'lat.replace ('.', ''); while (lat.length <9) {lat = lat.concat ('0'); } lat = lat.indexOf ('-')! == -1? lat.substr (0, 9): lat.substring (0, 8); ' – Voles

+1

Esto no es correcto. Miguel Perez Subias ha dado la respuesta correcta. Los últimos 6 dígitos deben ser los decimales. Esto de causa hace escena. Simplemente puede quitar el lugar decimal y el pad a la derecha ya que perdería datos –

4

Es mucho más simple - latitud & longitud debe ser multiplicado por un millón de

+0

Esto no funciona si las coordenadas tienen una precisión de más de seis dígitos. – mattbasta

2

En mi opinión longitud de una latitud debe estar codificado en _e6 formato (seis últimos dígitos deben ser la parte decimal de la lon cadena/lat pasado a la API). Luego debe ajustar los primeros decimales a una longitud de seis, agrega 0 s si tiene menos de seis decimales, y la corta a 6, si tiene más. Para la parte int si solo tiene un carácter, primero debe agregar un cero, para dos o tres dígitos, no necesita hacer nada.

Ejemplos:

  • 1,1234 debe codificarse como: -01123400
  • 112.2345 debe ser codificada como: 112234500
  • 34,123456 debe ser codificada como

Here you have a explanation with examples and a the php source code (el blog está escrito en español).

0

Como dijo Miguel, son los últimos 6 dígitos los que deben ser los decimales. Por lo que el código correcto es tan simple como ....

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