5

緯度と経度の値を渡すことで、Google Weather API を使用したいと考えています。これらの値を保存していますが、Google はこれらの値を別の形式で必要としているようです。

つまり、McTavish の町の値は 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=,,,45.5,-73.583 を参照してください。

どんな助けでも感謝します。Google データを使用したいと思います。

4

4 に答える 4

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適切なデータが得られませんでした。

これは私の非公式の実験によるものであり、公式のドキュメントによるものではないことに注意してください。そのため、他の癖が発見される可能性があります。

于 2010-05-11T18:21:17.137 に答える
4

はるかに簡単です-緯度と経度に100万を掛ける必要があります

于 2010-06-15T15:21:25.153 に答える
2

私の意見では、緯度は _e6 形式でコーディングする必要があります (最後の 6 桁は、API に渡される経度/緯度文字列の小数部でなければなりません)。次に、最初の小数を 6 の長さに調整する必要があります。0小数が 6 未満の場合は s を追加し、それ以上の場合は 6 にクリップします。int 部分については、1 文字しかない場合は最初にゼロを追加する必要があります。2 桁または 3 桁の場合は何もする必要はありません。

例:

  • 1.1234 は次のようにコーディングする必要があります: -01123400
  • 112.2345 は次のようにコーディングする必要があります: 112234500
  • 34.123456 は次のようにコーディングする必要があります

ここでは、例と php のソース コードを使用して説明します(ブログはスペイン語で書かれています)。

于 2011-09-20T15:52:32.397 に答える
0

ミゲルが言ったように、小数点以下の桁数は最後の 6 桁です。したがって、正しいコードは次のように単純です....

string.Format("http://www.google.com/ig/api?weather=,,,{0:0},{1:0}", 
    (latitude * 1000000), 
    (longitude * 1000000));
于 2012-07-14T07:24:41.130 に答える