私は、不十分なモジュール(ゾイドベルグ)を回復しようとしています。あなたができることは、CPANtesterの結果を掘り下げて、何が間違っていたのかを調べることです。
Googleマップに公開されているAPIはありますが、simple web interfaceのものもあります。私はあなたの模範を模索しようとしますが、自分自身を始めるにはLWP::UserAgent
またはWWW::Mechanize
でいくつかのリクエストをしてから、答えを見つけるために結果を解析してみてください。
編集:ここでは例です。終わり近くで$data
は、上記のリンクで説明したJSON応答に含まれるデータのハッシュリファレンスです。私はまた、(最初の)ルートの合計距離を計算しました。
#!/usr/bin/perl
use strict;
use warnings;
use JSON;
use LWP::UserAgent;
my $ua = LWP::UserAgent->new();
my $origin = "60607";
my $destination = "60067";
my $site = 'http://maps.googleapis.com/maps/api/directions/';
my $mode = 'json';
my $page = $site . $mode . '?origin="' . $origin . '"&destination="' . $destination . '"&sensor=false';
my $response = $ua->get($page);
my $json = $response->content();
my $data = decode_json $json;
my @legs = @{ $data->{'routes'}[0]{'legs'} };
my $distance_meters = 0;
foreach my $leg (@legs) {
$distance_meters += $leg->{'distance'}{'value'};
}
my $distance_kilometers = $distance_meters/1000;
my $distance_miles = $distance_kilometers * 0.62137119;
print $distance_miles . " Miles\n";
編集:そして今、私は日曜日の午後に退屈していたので、:
perl -e 'use JSON;use LWP::Simple;($s,$e)[email protected];$m+=$_->{distance}{value}[email protected]{(decode_json get qq<http://maps.googleapis.com/maps/api/directions/json?origin="$s"&destination="$e"&sensor=false>)->{routes}[0]{legs}};printf"%.2f Miles\n",$m*0.6213e-3' 60607 60067
編集:そして今、Mojoliciousシステムへの1つのライナーのポート:
perl -Mojo -E '$m+=$_->{distance}{value}[email protected]{g("http://maps.googleapis.com/maps/api/directions/json",form=>{origin=>shift,destination=>shift,sensor=>"false"})->json("/routes/0/legs")};printf"%.2f Miles\n",$m*0.6213e-3' 60607 60067
おい、あなたは最高です! – JoelFan
@Slurpie、一日の仕事のすべて:-P、実際には少し楽しいでした –
これは素晴らしい、ありがとう!まさに私が探していたもの。メトリックを求めている人は、$ m * 0.6213e-3から* 0.6213e-3を削除してください。 APIはメトリック対帝国をサポートしているようです:https://developers.google.com/maps/documentation/distancematrix/#unit_systems – Nathan