另一张海报有这个。 (jpgunter)https://stackoverflow.com/users/1857927/jpgunter
use strict;
use LWP::Simple; # from CPAN
use JSON qw( decode_json ); # from CPAN
sub getLatLong($){
my ($address) = @_;
my $format = "json"; #can also to 'xml'
my $geocodeapi = "https://maps.googleapis.com/maps/api/geocode/";
my $url = $geocodeapi . $format . "?sensor=false&address=" . $address;
my $json = get($url);
my $d_json = decode_json( $json );
my $lat = $d_json->{results}->[0]->{geometry}->{location}->{lat};
my $lng = $d_json->{results}->[0]->{geometry}->{location}->{lng};
return ($lat, $lng);
}
它看起来正在做我想要的,但是......是否有人能够解释我在哪里运行地址以及输出在哪里?
我必须从另一个文件中运行大约5000个城市,以进行我正在进行的“非学术”项目,显然,手动操作的想法是可怕的。在过去的7年里,我也只做过极少的perl,所以绝对没有任何帮助会很棒。 我已经安装了LWP 6.04和JSON 2.53。 如果我可以使用输入文件,请将其旋转(使用显示它的邮政编码)。 该行将在......“formatted_address”:“Geelong West VIC 3218,Australia”, 只是不确定如何在那里获得3218。
原帖在这里...... Get the Latitude and Longitude of an address using perl and Google's Geocode API
答案 0 :(得分:0)
这是一个包含子程序的文件,该子程序从Google API获取long / lat数据并返回这两个值。但是,子程序没有被调用,所以脚本什么都不做。
对脚本开头的以下更改将从命令行获取输入并将数据返回到终端:
#!/usr/bin/perl
use strict;
use warnings;
use LWP::Simple; # from CPAN
use JSON qw( decode_json ); # from CPAN
# get command line input
my $address = $ARGV[0];
# get latitude/longitude and output
my ($lat, $long) = getLatLong( $address );
print "lat: $lat, long: $long\n";
sub getLatLong($){
my ($address) = @_;
my $format = "json"; #can also to 'xml'
...
然后您可以按如下方式调用脚本:
$ long_lat_script.pl '25 Jackson street, Pretoria, South Africa'
关于此API的使用政策的评论,取决于您想要使用它的内容。确实需要在使用此API时显示地图;但是,如果您在网站中需要这些数据而不是反复询问相同数据,则允许(并由Google推荐)批量收集此类数据。我曾经以类似的方式使用这个API来处理大约5000个地址。您可以阅读有关此here的更多信息。