Overview  |  Maps Static API  |  Google Developersがでたので早速簡単ツールをつくってみた[ruby][google][map][mobile]

#
#GoogleMapsの静的画像バージョンのURLを表現するクラス
#http://code.google.com/apis/maps/documentation/staticmaps/
#
class Google
  class Map
    class Static

      PKG_VERSION = '1.0.0'

      #
      #取得URLとクエリを保持する変数
      #
      STATIC_MAP_URL    = 'http://maps.google.com/staticmap?'

      def initialize(latitude,longitude,api_key,settings = {},markers = [])

        raise ArgumentError.new('latitude mast be found')  unless latitude
        raise ArgumentError.new('longitude mast be found') unless longitude
        raise ArgumentError.new('api_key mast be found')   unless api_key

        @query = ''

        #緯度経度
        @query = STATIC_MAP_URL + "center=#{latitude.to_f},#{longitude.to_f}"
        #幅
        settings['w'] = (settings['w'].to_i <= 0 or settings['w'].to_i > 512 ) ? 256 : settings['w'].to_i
        #高さ
        settings['h'] = (settings['h'].to_i <= 0 or settings['h'].to_i > 512 ) ? 256 : settings['h'].to_i
        #拡大度
        settings['z'] = (settings['z'].to_i <  0 ) ? 12  : settings['z'].to_i
        #地図タイプ
        settings['t'] = settings['t'] == 'mobile' ? 'mobile' : 'roadmap'

        @query += "&size=#{settings['w']}x#{settings['h']}"
        @query += "&zoom=#{settings['z']}"
        @query += "&maptype=#{settings['t']}"

        m = Array.new
        markers.each do |marker|
          next if not marker['lat'] or not marker['lng']
          marker['c'] ||= 'red'
          marker['a'] ||= 'a'
          m << "#{marker['lat']},#{marker['lng']},#{marker['c']}#{marker['a']}"
        end
        @query += "&markers=#{m.join('|')}" unless m.empty?
        @query += "&key=#{api_key}"
      end

      def to_s
        @query
      end

    end
  end
end

if __FILE__ == $0
  API_KEY = 'ABQIAAAA5YO-d6twBtFndXhSuT971BRI5v_oOVCK8OEty_LVcoaigmv-phSIn8RdMSeyS0dLwzf45TPOvtWcKA'
  markers =
  [
    {'lat' => 35.707701,'lng' => 139.761787,'c' => 'red'  , 'a' => 'a'},
    {'lat' => 35.706847,'lng' => 139.762618,'c' => 'blue' , 'a' => 'b'},
    {'lat' => 35.706764,'lng' => 139.762515,'c' => 'green', 'a' => 'c'},
  ]
  puts "<html><head></head><body>\n"
  print "<img src='"
#  print Google::Map::Static.new(35.707215,139.762162,API_KEY,{'w' => 512,'h' => 512,'z'=> 18},markers)
  print Google::Map::Static.new(35.707215,139.762162,API_KEY,{'w' => 512,'h' => 512,'z'=> 18,'t' => 'mobile'},markers)
#  print Google::Map::Static.new(35.707215,139.762162,API_KEY)
  print "'/><br />\n"
  puts "</body>"
end

デモ:http://gmap.zeg.la/
ソース:http://gmap.zeg.la/google_map_static.rb
gemパッケージ:http://gmap.zeg.la/googlemapstatic-0.0.1.gem

携帯でGoogleMapを手軽に表示するPHPクラス - アシアルブログがあったからrubyで書いてみました[ruby][web][rails] - d.hatena.zeg.laで述べた非公式版のAPI
http://maps.google.com/mapprint
と比較すると

1.API_KEYが必須
2.画像タイプが選択できない(image/gifのみ)
3.マーカーの文字,色を明示的に選択できる
4.これはよくわからないのですが地図タイプに
'mobile' or 'roadmap'が選択できるみたいです

といったところでしょうか?