Геокодирование .... я что-то не так сделал? - PullRequest
5 голосов
/ 03 октября 2010

Я использую модуль Perl Geo :: Coder :: Many и получаю странные результаты. Когда я устанавливаю Google в качестве поставщика, результаты отображаются правильно. Однако если для провайдера установить Bing, значения широты и долготы будут обратными. Например:

use Geo::Coder::Google;
use Geo::Coder::Bing;
use Geo::Coder::Many;
use Geo::Coder::Many::Util qw( country_filter );

# Create the Geo::Coder::Many object, telling it to use a 'weighted random'
# scheduling method
my $options = {
    scheduler_type => 'WRR',
};
my $geocoder_many = Geo::Coder::Many->new( $options );


# Create and add a geocoder
my $Locatorize = Geo::Coder::Google->new( apikey => 'yur Key' );
my $Locatorize_options = {
    geocoder    => $Locatorize,
    daily_limit => 2500, #google has a 2,500 limit/day
};
$geocoder_many->add_geocoder( $Locatorize_options );


my $result = $geocoder_many->geocode( 
    {
        location => '1600 Amphitheatre Parkway Mountain View, CA 94043' 
    }
);

if (defined $result) {
     print "Longitude: ",     $result->{longitude},     "\n";
     print "Latitude: ",      $result->{latitude},      "\n";
}
else {
     print "Failed to geocode!\n";
}

Это вернет (правильно):

Долгота: -122.085099 Широта: 37,422782

Когда я меняю провайдера на Bing, дела идут не так:

my $WhereIzIt = Geo::Coder::Bing->new( key => 'Yur key' );
my $WhereIzIt_options = {
    geocoder    => $WhereIzIt,
    daily_limit => 4000,
};
$geocoder_many->add_geocoder( $WhereIzIt_options );

Возвращает:

Долгота: 37,423176 Широта: -122.085962

Bing последовательно возвращает результаты назад? Как бы я изменил это в модуле?

1 Ответ

10 голосов
/ 03 октября 2010

В Geo/Coder/Many/Bing.pm найдите строки:

longitude   => $raw_reply->{point}->{coordinates}->[0],
latitude    => $raw_reply->{point}->{coordinates}->[1],

и поменяйте местами 0 и 1:

longitude   => $raw_reply->{point}->{coordinates}->[1],
latitude    => $raw_reply->{point}->{coordinates}->[0],

Это ошибка в Geo-Coder-Many, а не в Geo ::Coder :: Bing.Убедитесь, что вы сообщили об ошибке и этом исправлении правому автору .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...