在Perl中,如何從任意地址獲取緯度和經度?使用外部API是可以的。使用perl和Google的Geocode API獲取地址的經度和緯度
回答
這是一個快速perl函數來獲取任意地址的經度和緯度。它使用CPAN和Google的Geocode API中的LWP :: Simple和JSON。如果你想要完整的數據,你可以做json或xml,這是一個使用的json,只是抓取並返回lat和long。
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);
}
所以你在短短1分鐘內回答了你自己的問題? :) –
我想發佈它,因爲我找了一段時間才弄明白,想要挽救下一個人。 – jpgunter
好的。 [你可以在問題中提供答案,並問這個問題的措辭是「有更好的答案」。](http://meta.stackexchange.com/questions/17845/etiquette-for-answering-your-own-questions ) –
沒有爲谷歌地理編碼API的封裝模塊,Geo::Coder::Google:
#!/usr/bin/env perl
use strict;
use utf8;
use warnings qw(all);
use Data::Printer;
use Geo::Coder::Google;
my $geocoder = Geo::Coder::Google->new(apiver => 3);
my $location = $geocoder->geocode(location => 'Hollywood and Highland, Los Angeles, CA');
p $location->{geometry}{location};
此代碼打印:
\ {
lat 34.101545,
lng -118.3386871
}
它一般最好使用一種現成的,現成的CPAN因爲它是由CPAN Testers服務提供支持的,所以,如果API斷裂,很容易發現並報告。
非常好,正如@Oesor指出的那樣,您可以使用Geo :: Coder :: Many來比較幾個API的結果。 – jpgunter
有沒有辦法從圖書館獲取「超限狀態」信息? –
您可以使用Geo :: Coder :: Many來比較不同的服務以找到認爲它是最準確的服務。我在美國的農村和城市地址中獲得了好運。
use Geo::Coder::Bing;
use Geo::Coder::Googlev3;
use Geo::Coder::Mapquest;
use Geo::Coder::OSM;
use Geo::Coder::Many;
use Geo::Coder::Many::Util qw(country_filter);
### Geo::Coder::Many object
my $geocoder_many = Geo::Coder::Many->new();
$geocoder_many->add_geocoder({ geocoder => Geo::Coder::Googlev3->new });
$geocoder_many->add_geocoder({ geocoder => Geo::Coder::Bing->new(key => 'GET ONE')});
$geocoder_many->add_geocoder({ geocoder => Geo::Coder::Mapquest->new(apikey => 'GET ONE')});
$geocoder_many->add_geocoder({ geocoder => Geo::Coder::OSM->new(sources => 'mapquest')});
$geocoder_many->set_filter_callback(country_filter('United States'));
$geocoder_many->set_picker_callback('max_precision');
for my $location (@locations) {
my $result = $geocoder_many->geocode({ location => $location });
}
不錯,我喜歡比較許多差異服務的想法。 – jpgunter
- 1. 從不使用Google API的地址獲取經度和緯度
- 2. 緯度和經度地址
- 3. 使用SAS獲取地址字符串的緯度和經度
- 4. 使用pygeocoding獲取地址的經度和緯度
- 5. 使用地理編碼器和Android獲取經度和緯度Google Maps API v2
- 6. 使用經度和緯度無法獲取地址Android
- 7. iphone谷歌地圖獲取地址的經度和緯度
- 8. 獲取地標的經度和緯度值 - Google地球
- 9. 如何獲取與Google地圖相同的Google Geocoder API幾何值(經度和緯度)URL經緯度值
- 10. 如何從Google地圖的經度和緯度獲取地址位置?
- 11. 獲取緯度和經度
- 12. 獲取經度和緯度
- 13. GoogleMaps API - 座標(經度,緯度)地址
- 14. 如何從Android的緯度和經度獲取地址?
- 15. 如何從MKMapkit中的地址獲取緯度和經度?
- 16. 如何從C#中的地址獲取緯度和經度
- 17. 如何從Android上的地址獲取緯度和經度?
- 18. 如何從Android上的地址獲取緯度和經度?
- 19. 如何從Django GeoIP中的緯度和經度獲取地址?
- 20. 使用javascript獲取緯度和經度
- 21. 根據地址api獲取緯度經度
- 22. 谷歌地圖api v2經度和緯度的地址問題
- 23. 緯度經度的地址
- 24. 從Google地理定位API獲取當前經緯度和lng
- 25. 如何使用Geocode獲取緯度/經度?
- 26. 店經度和緯度IOS地址簿
- 27. C#轉換地址,經度和緯度
- 28. 從經度和緯度獲取郵編google api
- 29. 如何從google maps v3 api獲取經度和緯度?
- 30. 如何在google map api v2中獲取經度和緯度?
有沒有辦法從庫中獲取「超限狀態」消息? –