Adobe Creative Suite 出力対応店一覧をGoogle Mapsで表示させる(11)
スポンサードリンク
アドビの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
コメントする