Geo::Google モジュールを利用する (米国)。住所を渡せばコーディング的にはほとんど 1行で緯度経度を返してくれる。Google Maps にアクセスしにいって緯度経度を取ってきていてるので、地図データベースは Google Maps のものである。以前紹介した PHP のときのように SOAP も何もいらない (Geo::Google は、内部で LWP::Simple を利用している)。PHP の Geocoder 版は、Geocoder のデータベースに SOAP 経由でアクセスする。少し使ってみた結果、Geocoder のデータベースは少しズレが生じるようである (米国の場合)
use utf8;
use Encode;
use Geo::Google;
use XML::Parser;
#!/usr/bin/perl
use utf8;
use Encode;
use Geo::Google;
use XML::Parser;
my $lng, $lat;
my $address1 = 'your address part 1 here';
my $address2 = 'your address part 2 here';
my ($degree) = getDegrees("$address1 $address2");
if($degree) {
$lng = $degree->longitude;
$lat = $degree->latitude;
} else {
$lng = ''; $lat = '';
}
sub getDegrees { # 住所から緯度経度を検索
return $GEO->location( address => Encode::encode_utf8(shift));
# shift = address / リファレンスを返す
}
トラックバック URL:
https://perltips.twinkle.cc/trackback/29