M.C.P.C.

―むり・くり―プラスコミュニケーション(更新終了)


| トップページ |

2010年11月 1日 00:13

Adobe Creative Suite 出力対応店一覧をGoogle Mapsで表示させる(11)

このエントリーをはてなブックマークに追加 mixiチェック

アドビのCS5対応プリントショップのリストのページから、Google Mapsに表示させるやつの11回目。

前回は、Google Geocoding APIを使い、住所から緯度/経度を取得するのを、Webブラウザからやってみました。

今回は、PerlからGoogle Geocoding APIにアクセスして情報を取得してみようと思います。


PerlからWebサービスにアクセスするのに便利な、WebService::Simpleというモジュールがありますので、これを使います。

あらかじめ、WebService::SimpleをCPANから取得してインストールしておいてください。

使い方は、

WebService::Simple - search.cpan.org [search.cpan.org]

を参照。ポイントは、返ってくる情報はJSONですので、パーサをJSONにしておくことです。

Filename: test10.pl

use strict;
use warnings;
use utf8;
use WebService::Simple;
use Data::Dumper;
 
my $geo = WebService::Simple->new(
    response_parser => 'JSON',
    base_url => 'http://maps.google.com/maps/api/geocode/',
    param    => {
      region   => 'jp',
      language => 'ja',
      sensor   => 'false',
    },  
);
my $address = '東京都港区台場2-4-8';
my $res = $geo->get( 'json', { address => $address } );
my $val = $res->parse_response();
print Dumper $val;
 
exit;
 
__END__

実行結果はこちら。

$VAR1 = { 
    'status' => 'OK',
    'results' => [
       {   
         'formatted_address' => "\x{e6}\x{97}\x{a5}\x{e6}\x{9c}\x{ac}, \x{e6}\x{9d}\x{b1}\x{e4}\x{ba}\x{ac}\x{e9}\x{83}\x{bd}\x{e6}\x{b8}\x{af}\x{e5}\x{8c}\x{ba}\x{e5}\x{8f}\x{b0}\x{e5}\x{a0}\x{b4}\x{ef}\x{bc}\x{92}\x{e4}\x{b8}\x{81}\x{e7}\x{9b}\x{ae}\x{ef}\x{bc}\x{94}\x{e2}\x{88}\x{92}\x{ef}\x{bc}\x{98}",
         'types' => [
          'sublocality_level_4',
          'sublocality',
          'political'
              ],  
         'address_components' => [
                 {   
                   'types' => [
                    'sublocality_level_4',
                    'sublocality',
                    'political'
                  ],  
                   'short_name' => "\x{ef}\x{bc}\x{98}",
                   'long_name' => "\x{ef}\x{bc}\x{98}"
                 },  
                 {   
                   'types' => [
                    'sublocality_level_3',
                    'sublocality',
                    'political'
                  ],  
                   'short_name' => "\x{ef}\x{bc}\x{94}",
                   'long_name' => "\x{ef}\x{bc}\x{94}"
                 },  
                 {   
                   'types' => [
                    'sublocality_level_2',
                    'sublocality',
                    'political'
                  ],  
                   'short_name' => "\x{ef}\x{bc}\x{92}\x{e4}\x{b8}\x{81}\x{e7}\x{9b}\x{ae}",
                   'long_name' => "\x{ef}\x{bc}\x{92}\x{e4}\x{b8}\x{81}\x{e7}\x{9b}\x{ae}"
                 }, 
                 {
                   'types' => [
                    'sublocality_level_1',
                    'sublocality',
                    'political'
                  ],
                   'short_name' => "\x{e5}\x{8f}\x{b0}\x{e5}\x{a0}\x{b4}",
                   'long_name' => "\x{e5}\x{8f}\x{b0}\x{e5}\x{a0}\x{b4}"
                 },
                 {
                   'types' => [
                    'locality',
                    'political'
                  ],
                   'short_name' => "\x{e6}\x{b8}\x{af}\x{e5}\x{8c}\x{ba}",
                   'long_name' => "\x{e6}\x{b8}\x{af}\x{e5}\x{8c}\x{ba}"
                 },
                 {
                   'types' => [
                    'administrative_area_level_1',
                    'political'
                  ],
                   'short_name' => "\x{e6}\x{9d}\x{b1}\x{e4}\x{ba}\x{ac}\x{e9}\x{83}\x{bd}",
                   'long_name' => "\x{e6}\x{9d}\x{b1}\x{e4}\x{ba}\x{ac}\x{e9}\x{83}\x{bd}"
                 },
                 {
                   'types' => [
                    'country',
                    'political'
                  ],
                   'short_name' => 'JP',
                   'long_name' => "\x{e6}\x{97}\x{a5}\x{e6}\x{9c}\x{ac}"
                 }
               ],
         'geometry' => {
             'viewport' => {
                 'southwest' => {
                      'lat' => '35.6235301',
                      'lng' => '139.7711484'
                    },
                 'northeast' => {
                      'lat' => '35.6298253',
                      'lng' => '139.7774436'
                    }
               },
             'location' => {
                 'lat' => '35.6266777',
                 'lng' => '139.774296'
               },
             'location_type' => 'APPROXIMATE'
           }
       }
           ]
  };

緯度は、$val->{results}->[0]->{geometry}->{location}-{lat}
経度は、$val->{results}->[0]->{geometry}->{location}-{lng}
で得られます。


次回は、アドビのサイトから取得した住所を使って、それぞれの印刷会社の所在地の座標を取得してみたいと思います。

投稿 大野 義貴 [GoogleMaps] | |

トラックバック(0)

トラックバックURL: http://blog.dtpwiki.jp/MTOS/mt-tb.cgi/3392

コメントする