1

Google Maps APIとインターフェースするために、Perlモジュールが存在します。コードは次のとおりです。

 use Geo::Coder::Google;
 $geocoder = Geo::Coder::Google->new();
 @location = $geocoder->geocode(location => '1600 Pennsylvania Ave. Washington DC USA'); 

サイトソース:http ://search.cpan.org/~arcanez/Geo-Coder-Google-0.11/lib/Geo/Coder/Google/V2.pm

ただし、座標から住所に移動する必要があります。それがPERLで別の手段を使用することを意味するとしても、それはどのように行われますか?OpenMaps APIを試しましたが、不正確であることに注意してください。グーグルマップははるかに優れているようです。

4

3 に答える 3

3

Geo :: Coder :: Googleのメンテナが私のパッチを受け入れたので、モジュールは逆ジオコーディングをサポートするようになりました(バージョン0.12以降)。

使用例:

use Geo::Coder::Google;
$geocoder = Geo::Coder::Google->new(apiver => 3);
$location = $geocoder->reverse_geocode(latlng => '37.778907,-122.39732');

http://metacpan.org/pod/Geo::Coder::Google::V3のドキュメントを参照してください

于 2013-06-06T22:27:02.270 に答える
1

答えは、Geo :: Coder::Googleが逆引き参照用のlatlngパラメーターを実装しなかったということです。したがって、そのために使用することはできません。

ただし、逆引き参照機能を追加するのは非常に簡単です。

于 2013-01-09T05:21:52.690 に答える
0

答え:

  1. CPANGeo::Coder::Googleオブジェクトをダウンロードします。
  2. V3.pmオブジェクトに移動します。
  3. このモジュールをコードにドロップします。

sub reverseGeocode {my $self = shift;

my %param;
if (@_ % 2 == 0) {
    %param = @_;
} else {
    $param{location} = shift;
}



my $location = $param{location} 
    or Carp::croak("Usage: reverseGeocode(location => \$location)");

if (Encode::is_utf8($location)) {
    $location = Encode::encode_utf8($location);
}

my $uri = URI->new("http://$self->{host}/maps/api/geocode/json");
my %query_parameters = (latlng => $location);
$query_parameters{language} = $self->{language} if defined $self->{language};
$query_parameters{region} = $self->{region} if defined $self->{region};
$query_parameters{oe} = $self->{oe};
$query_parameters{sensor} = $self->{sensor} ? 'true' : 'false';
$uri->query_form(%query_parameters);
my $url = $uri->as_string;

if ($self->{client} and $self->{key}) {
    $query_parameters{client} = $self->{client};
    $uri->query_form(%query_parameters);

    my $signature = $self->make_signature($uri);
    # signature must be last parameter in query string or you get 403's
    $url = $uri->as_string;
    $url .= '&signature='.$signature if $signature;
}

次に、次のように使用します。

 my $location = $geocoder->reverseGeocode(location => '40.7837366863403,-73.9882784482727');

次に、次のように戻りオブジェクトにアクセスできます。

 print $location->{formatted_address};

アドレスの詳細な部分を確認するには、ガイドとして次のリンクを参照してください: https ://developers.google.com/maps/documentation/geocoding/

于 2013-01-12T00:22:41.413 に答える