みたにっき@はてな

三谷純のブログ

続々 Google Map

昨日の日記のコメントから、同じ事を考える人が他にもいることが判明しちゃいました。
最初はびっくり仰天でしたが、でもまぁ普通にプログラムできる人がGoogleMapをいじっていたら、同じような事を考えるよねぇ、なんて思えてきたりもして。

sumim氏はSqueakという言語で変換プログラムを作ったり、Javascriptのブックマークレットにしたり、さらにはGoogleMap→MapFanの逆変換したり、測地補正(?)してたりで、スゴイです。

で、コードが公開されているので、参考にして僕のツールも測地補正(?)するように変更してみました。これでピンポイントですヨ。

で、以下がRubyによるコードです。ご参考までに。

#!/usr/local/bin/ruby
require "cgi"

input = CGI.new
url = input["url"]

if /E(\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})N(\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})/ =~ url
    e = $1.to_f + $2.to_f / 60 + ($3.to_f + $4.to_f * 0.1 ) / 60 / 60 - 0.00325
    n = $5.to_f + $6.to_f / 60 + ($7.to_f + $8.to_f * 0.1 ) / 60 / 60 + 0.0032

    googleURL = "http://maps.google.com/maps?ll=" + sprintf("%.5f", n) + "," + sprintf("%.5f", e) + "&spn=0.073548,0.078848&t=k&hl=ja"

    print input.header({'status' => '302 Found', 'Location' => googleURL })

else
    print "Content-type: text/html\n\n"
    print "入力を解析できませんでした"
end

えーっと、だからこんなことしている時間があったら、他にすべきことが山積みなんですけど(x_x。